Modules

Want to know more about modules?

Have a module of your own?

Contribute to the site by submitting your own module. Your submission will be reviewed by CS In Parallel to determine what categories it should be listed under. After that process, it will become available to all viewers of this site.

Computational Model

Parallel Computing ConceptsRichard Brown This concept module will introduce a core of parallel computing notions that CS majors and minors should know in preparation for the era of manycore computing, including parallelism categories, concurrency issues and solutions, and programming strategies.

Concurrent Access to Data StructuresProfessor Libby Shoop, Macalester College
This module enables students to experiment with creating a task-parallel solution to the problem of crawling the web by using Java threads and thread-safe data structures available in the java.util.concurrent package.

Concurrency and Map-Reduce Strategies in Various Programming LanguagesProfessor Richard Brown, St. Olaf College
This concept module explores how concurrency and parallelism have been established in programming languages and how one can implement map-reduce in several high-level programming languages taught in a CS curriculum, including Scheme, C++, Java, and Python.

Multicore Programming with OpenMPRichard Brown; Elizabeth Shoop In this lab, we will create a program that intentionally uses multi-core parallelism, upload and run it on the MTL, and explore the issues in parallelism and concurrency that arise. This module uses OpenMP.

Multi-core programming with Intel's Manycore Testing Lab (using Threading Building Blocks)Professor Richard Brown, St. Olaf College
Intel Corporation has set up a special remote system that allows faculty and students to work with computers with lots of cores, called the Manycore Testing Lab (MTL). In this lab, we will create a program that intentionally uses multi-core parallelism, upload and run it on the MTL, and explore the issues in parallelism and concurrency that arise.

Parallel SortingElizabeth Shoop This module, targeted for algorithms and data structures courses, examines the theoretical PRAM model and its use when designing a parallel version of the mergesort algorithm.

Concurrent Access to Data Structures in C++Richard Brown This module enables students to experiment with creating a task-parallel solution to the problem of crawling the web by using C++ with Boost threads and thread-safe data structures available in the Intel Threading ...

GPU ProgrammingElizabeth Shoop; Yu Zhao In this module, we will learn how to create programs that intensionally use GPU to execute. To be more specific, we will learn how to solve parallel problems more efficiently by writing programs in CUDA C Programming Language and then executes them on GPUs based on CUDA architecture.

Distributed Computing FundamentalsElizabeth Shoop Message Passing Interface (MPI) is a programming model widely used for parallel programming in a cluster. Using MPI, programmers can design methods to divide large data and perform the same computing task on segments of it and then and distribute those tasks to multiple processing units within the cluster. In this module, we will learn important and common MPI functions as well as techniques used in 'distributed memory' programming on clusters of networked computers.

Heterogeneous ComputingElizabeth Shoop; Message Passing Interface (MPI) is a programming model widely used for parallel programming in a cluster. NVIDIA®'s CUDA, a parallel computing platform and programming model, uses GPU for parallel computation problems. This module will explore ways to combine these two parallel computing platforms to make parallel computation more efficient.

Drug Design ExemplarRichard Brown An important problem in the biological sciences is that of drug design: finding small molecules, called ligands, that are good candidates for use as drugs. We introduce the problem and provide several different parallel solutions, in the context of parallel program design patterns.

Timing Operations in CUDAJoel Adams, Calvin College, and Jeffrey Lyman, Macalester College Through completion of vector addition, multiplication, square root, and squaring programs, students will gain an understanding of when the overhead of creating threads and copying memory is worth the speedup of GPU coding.

Concept: Data Decomposition PatternElizabeth Shoop This module consists of reading material and code examples that depict the data decomposition pattern in parallel programming, using a small-sized example of vector addition (sometimes called the "Hello, World" of parallel programming.

Visualize Numerical IntegrationElizabeth Shoop This is an activity with working code supplied that enables students to see how various forms of the data decomposition pattern map processing units to computations.

WMR Exemplar: UK Traffic IncidentsElizabeth Shoop Using data published by the United Kingdom department of Transportation about traffic incidents, students can explore and perform analyses using map-reduce techniques.

WMR Exemplar: LastFM million-song datasetElizabeth Shoop This module demonstrates how hadoop and WMR can be used to analyze the lastFM million song dataset. It incorporates several advanced hadoop techniques such as job chaining and multiple input.

Instructor Example: Optimizing CUDA for GPU ArchitectureElizabeth Shoop This module, designed for instructors to use as an example, explains how to take advantage of the CUDA GPU architecture to provide maximum speedup for your CUDA applications using a Mandelbrot set generator as an example.

Parallel Processes in Python
Steven Bogaerts, DePauw University
This module is designed for use in the latter half of a semester-long CS1 course. It introduces students to the concepts of forking child processes to do work in parallel and how multiple concurrent processes can coordinate using a shared data queue.