Platform and Library Resources

Every module in our collection requires a given type of hardware (a platform), often running a particular operating system, combined with certain software libraries or packages. We have or are creating instructional modules for these common platform and library/package combinations used in parallel and distributed computing (PDC):


  • Raspberry Pi kits for conveniently using the keyboard, monitor, and mouse of a user's laptop or desktop with a Pi
  • Cluster of multicore machines using an MPI library (either OpenMPI or MPICH2)
  • Single multicore machine with a GPU co-processor
  • Cluster of multicore machines with GPU co-processors using an MPI library
  • Single multicore machine with an Intel Xeon Phi co-processor
  • Large cluster of machines for fully distributed Map-Reduce computing using hadoop

Here we provide a collection of resources for getting started with, setting up, and accessing particular platforms that you could use for teaching PDC. We also provide some information about various software libraries or packages used on these platforms. In the boxes on the right below, you can filter your choices to see what fits your needs or interests.



Platform Setup, Libraries, and Packages

Results 1 - 12 of 12 matches

Bootable Cluster CD
The Bootable Cluster CD (BCCD) is a software platform designed to allow parallel programming and distributed computing instruction to concentrate on the education and not the computing infrastructure necessary for it. It is an open source Knoppix-based live CD that provides the tools necessary to teach parallel and distributed computing (e.g., GNU compiler suite, multiple MPI bindings, OpenMP, CUDA, Java) that can be run on either a single system or on a network of computers that are automatically configured using custom networking tools to form an ad hoc temporary cluster.

MDAT: Multithreading Debugging And Testing
MDAT is a multithreaded testing and debugging infrastructure designed for students learning to program with multiple threads. MDAT automatically generates random schedules to allow students to more thoroughly test their programs. The design of MDAT takes full control over the scheduling allowing a failing run to be reproduced. To assist debugging, MDAT includes an output trace that shows the status of all threads, locks, and semaphores in the program and has an interactive mode that allows students to try out their own schedules.

WebMapReduce is a simple web-based user interface for creating and submitting Hadoop Map-Reduce jobs in practically any language. It is ideally suited for use in the introductory computer science classroom, requiring very little programming experience to write massively parallel programs.

MPICH2 is a freely available, high-performance implementation of the MPI (Message Passing Interface), both MPI-1 and MPI-2. It is also an alternative free MPI implementation to OpenMPI. MPICH2 provides an API for message passing for parallel computing in C and C++, as well as an MPI implementation that efficiently supports different computation and communication platforms. It has been tested on several platforms, including Linux (on IA32 and x86-64), Mac OS/X (PowerPC and Intel), Solaris (32- and 64-bit), and Windows.

Taken from OpenMP's mission statement: "The OpenMP Application Program Interface (API) supports multi-platform shared-memory parallel programming in C/C++ and Fortran on all architectures, including Unix platforms and Windows NT platforms. Jointly defined by a group of major computer hardware and software vendors, OpenMP is a portable, scalable model that gives shared-memory parallel programmers a simple and flexible interface for developing parallel applications for platforms ranging from the desktop to the supercomputer."

Raspberry Pi Kits
Contributed by Richard Brown and Max Narvaez, St. Olaf College (, Our CSinParallel workshops often use Raspberry Pi kits that consist of a Raspberry Pi single-board computer (SBC) ...

Remora offers a free, secure, scalable, and virtual cluster for students and instructors to explore principles of Parallel and Distributed Computing (PDC). Remora is a virtual, application based cluster that runs entirely in user space and requires no installation. Because of this, Remora is a free cluster that can be carried in the pocket of an instructor or student from class to class, to quickly convert an existing computer lab into a cluster.

Pi's-To-Go provides students, both CS and non-CS alike, with an affordable, engaging, and familiar environment to learn the hardware and software principles of Parallel and Distributed Computing (PDC). Costing 0 in total, Pi's-To-Go provides modular hardware that helps students learn to apply PDC to their fields, to prepare them to handle the next generation of web servers, data centers and supercomputers.

Thread Safe Graphics Library
TSGL is a thread-safe graphics library perfect for drawing graphics. You can do a wide variety of things with TSGL, including: image manipulation and rendering (.bmp, .jpeg, and .png image formats supported), 2D ...

Open MPI
Open MPI is an open source MPI-2 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Originally representing the merger of several MPI implementations, Open MPI is able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to "build the best MPI library available."

The standard Java package java.util.concurrent contains utility classes which are useful in implementing concurrent programming in Java. This package includes a few small standardized extensible frameworks, as well as some classes that provide useful functionality and are otherwise tedious or difficult to implement.

IntelĀ® Threading Building Blocks
Threading Building Blocks (TBB), created by IntelĀ®, offers an approach to implementing parallelism in a C++ program. TBB is a library that helps programmers take advantage of multi-core processor performance without having to be an expert on threading. The library represents a higher-level, task-based parallelism that abstracts platform details and threading mechanisms for scalability and performance.


Have a platform setup, library, or package to share?

Submit it to the site. Please feel free to share information about Platform Resources you are aware of. We will moderate you submission and may contact you before making the information public.

      Next Page »