Introducing Multithreaded Programming: Posix Threads And Nvidia's Cuda

The current progression of commodity processing architectures exhibits a trend toward increasing parallelism, requiring that undergraduate students in a wide range of technical disciplines gain an understanding of problem solving in massively parallel environments. However, as a comprehensive college, we cannot currently afford to dedicate an entire semesterlong course to the study of parallel computing. To combat this situation, we have integrated the key components of such a course into a 300-level course on modern operating systems. In this paper, we describe a parallel computing unit that is designed to dovetail with the discussion of process and thread management common to operating systems courses. We also describe a set of self-contained projects in which students explore two parallel programming models, POSIX Threads and NVIDIA’s Compute Unified Device Architecture, that enable parallel architectures to be utilized effectively. In our experience, this unit can be integrated with traditional operating systems topics quite readily, making parallel computing accessible to undergraduate students without requiring a full course dedicated to these increasingly important topics.

[1]  Jens H. Krüger,et al.  A Survey of General‐Purpose Computation on Graphics Hardware , 2007, Eurographics.

[2]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[3]  William Mark Future graphics architectures , 2008, SIGGRAPH '08.

[4]  Bradford Nichols,et al.  Pthreads programming , 1996 .

[5]  Mike Houston,et al.  GPUs a closer look , 2008, SIGGRAPH '08.

[6]  Kevin Skadron,et al.  Scalable parallel programming , 2008, 2008 IEEE Hot Chips 20 Symposium (HCS).