Parallel Computing in the Computer Science Curriculum > Modules > Heterogeneous Computing

Heterogeneous Computing

Professor Libby Shoop, Macalester College
Sophors Khut, Macalester College


This teaching module guides students through the process of building programs using a heterogeneous computing module on a cluster of computers that are themselves able to perform parallel computations. The examples show partial code for running MPI message passing on processes on machines in a cluster, each of which can then run a parallel task in CUDA using a GPU card.

Learning Goals

Learning Goals:

  • Students will be able to build and run programs solving straightforward linear algebra techniques using a heterogeneous computing paradigm (MPI + CUDA) on a cluster of workstations.

Context for Use

  • This module can be taught in a C Programming Language based course or in a course in which students have had prior C Programming Language experience. Student with little or no knowledge of C Programming Language will find materials inside this module difficult to comprehend, and therefore adequate of C Programming Language background is mandatory.
  • It is designed for use as a lab.
  • Depending on curriculum, this module could be considered to be at an "intermediate" or "advanced" level.

Description and Teaching Materials

You can visit the module in your browser:
Heterogeneous Computing

or you can download the module in either PDF format, latex format, or Word formats.
PDF Format: Heterogeneous Computing.pdf.
Latex Format: Heterogeneous Computing.tar.gz.

Word Formats:

Heterogeneous Computing.docx.

Heterogeneous Computing.doc.

Teaching Notes and Tips

We have used this on a LittleFe cluster, but it is intended for use on any cluster with nodes that have GPU cards on them.


We are currently developing assessment instruments for this module.

References and Resources

Comment? Start the discussion about Heterogeneous Computing