Introduction to Parallel Computing (CMSC 498X/818X)


The group project should be implemented in C/C++ (or Fortran), and use a parallel programming model such as MPI, OpenMP, Charm++, CUDA etc. This project will be done in teams of 3 or 4 people. The final deliverable will be a report and the code (with a Makefile and clear instructions for running it).

Milestone Due on
Form groups September 21
Project description September 28
Interim report November 16
Project presentations December 3-10
Final project and report December 14
Project Ideas

  • Parallel Sorting
  • Parallel Matrix Multiply
  • Parallel Genetic Algorithms for Inverse Boggle Solving
  • Parallel Implementation of Sequential Minimal Optimization (SMO) Algorithm and Model Selection for Support Vector Machines
  • A Parallel Hybrid Framework for Graph Processing
  • Parallel Patch Matching for Image Segmentation
  • Parallel Graph-based Semi-supervised Learning
  • Load Balancing in Distributed Computing
  • Auto-tuning for scalable parallel 3-D FFT
  • Parallel implementation of Machine Learning algorithms using Spark/Hadoop
  • CPU-GPU Dynamic Approximation for Parallel Applications
  • Algebraic Multigrid with OpenMP, OpenACC and MPI
  • Developing Parallel Algorithms for Creating and Solving Sudoku Puzzle
  • Distributed Learning for Deep Neural Networks
  • A High Performance Concurrent Thread-Safe Hash Table
  • A Visual Debugging Tool for MPI Programs
  • Graph Partitioning using Parallel Clustering for Distributed Databases
  • A Study on Memory and Compute Bound Kernels on CPU and GPU Hardware
  • Online Auto-Tuning of Collective Communication Operations in MPI
  • Parallel Simulation of Information Diffusion on Large Social Network Graphs
Other suggestions
  • Application performance studies across one or more parallel machines - e.g. satellite data processing, parallel search, computer vision algorithms, bioinformatics
  • Application performance studies on GPUs
  • Reproduce results from a paper, extend to current systems - e.g., CPU vs. GPU paper (pick a small number of application kernels)
  • Debunking a published paper