Multicore Programming with OpenMP

Summary

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.

This module uses the OpenMP parallel platform package; there is an alternative version of this module using Intel's Threading Building Blocks for those more familiar with that library.

Module Characteristics

Languages Supported: C++
Relevant Parallel Computing Concepts: Shared Memory
Recommended Teaching Level: Introductory, Intermediate

Learning Goals

  • Students should be able to identify issues with attempting to use parallel computing techniques when using multiple threads
  • Students should be able to identify differences in performance in manycore computing

Context for Use

This module can be taught in a C++-based course or in a course in which students have had prior C++ experience, though students with little or no knowledge of C or C++ have also completed it easily. It is designed for use as a lab. Depending on curriculum, this module could be considered to be at an "introductory" or "intermediate" level.

Description and Teaching Materials

You can visit the module in your browser:

Multicore Programming with OpenMP

or you can download the module in either PDF format or latex format.

PDF Format: Multicore Programming with OpenMP.pdf.
Latex Format: Multicore Programming with OpenMP.tar.gz.
Word Format: Multicore Programming with OpenMP.docx.

Teaching Notes and Tips

  • If you are interested in using Intel®'s Manycore Testing Lab, you must have an Intel® account and apply to join their Manycore Testing Lab program. To access Intel®'s Manycore Testing Lab program, visit Intel®'s MTL page (now unavailable).
  • For this version of the module using OpenMP, the machines in your computer lab must have a C++ compiler that is (GNU's gcc compiler is fine.) If you are unsure, visit OpenMP's list of compatible C++ compilers. There is another version of this lab exercise that uses Intel®'s Threaded Building Blocks for parallelization.
  • Note: This module has been written for and tested on lab machines using Linux-based operating systems. In addition, students will need to have access to non-lab machines, as we are using a Cisco VPN client to access the Manycore Testing Lab and this blocks other network accesses. Instructions for downloading and installing Cisco VPN client is found in the handouts.
  • For students to access the MTL in the lab, you will need to distribute accountnames and passwords provided by Intel to students.

Assessment

We have assessment instruments designed to be given before and after this module.

References and Resources




Comment? Start the discussion about Multicore Programming with OpenMP