EE 155 / CS 122 - Spring 2026
Parallel computing (a.k.a. high-performance computing)
Resources
- Instructor: Joel Grodstein, joel.grodstein@tufts.edu
- TAs: Amitav Nott, Naomi Arnold, Anna Lee
- Course schedule: Mon/Wed 1:30-2:45pm in SciTech 136
- Office Hours: MW 3:00-4:15 or by appointment (Joel, in Halligan 222);
- For emergencies or private matters, please e-mail or see me directly.
Calendar, syllabus, misc
- The class calendar is here; the oral-quiz signup sheet is here
- A syllabus is here.
- A flashy advertisement for the class is here.
Assignment logistics
- For programming labs, all of the library code can be found in /ee/155/public_html/labs/code/*cxx,*hxx.
- Turn in your lab via Provide at this link.
CPU (C++) Labs
- Run your C++-threads labs (i.e., Lab1-Lab3) on the Linux boxes in Halligan 269, named lab120a-lab120v. There are other Linux machines named lab269* in the room; these machines are different and shouldn't be used. Before you collect benchmark data, you should reboot the machine to ensure a consistent environment. Fully detailed instructions are in the assignment for Lab #1.
You should compile your multiprocessor C++ code with:
c++ -pthread -std=c++20 -O2 your_file.cxx ee155_utils.cxx
GPU (CUDA) Labs
- Labs 4 and 5 use a GPGPU. We do not support GPUs on Linux machines; instead, you'll use the Tufts high-performance compute cluster for your GPU labs.
- Do your work in /cluster/tufts/c26sp1ee0155/<your utln>
- The HPC is extensively documented here. Some pages that will be useful are:
- Cluster Login. We recommend logging in via SSH. To do so, you will either need to be on a Tufts network or SSH into Halligan first.
- File transfers.
- Running your software. Once again, we recommend doing this via SSH.
- NOTE: TTS is in the process of upgrading the cluster. We are using the new version,
so you must SSH into login-prod.pax.tufts.edu, despite what the documentation
might say.
- More info about the cluster upgrade can be found here.
- Debugging on a GPU can be tricky! Here are some debugging hints.
Lab #1 (histograms)
- The description is here. Here are the files: histogram.cxx, histogram_user.cxx, ee155_utils.cxx and ee155_utils.hxx
Lab #2 (breaking your server)
- The lab description is here.
- Here are the files: server_breaker.cxx and server_breaker_thread.cxx. You'll also need the ee155_util files from Lab 1.
Lab #3 (multiprocessor matrix multiply)
- The lab description is here.
- Here are the files: matrix.cxx, matrix.hxx, matrix_mpy.cxx, matrix_mpy_user.cxx and bits.hxx. You'll also need the ee155_util files from Lab 1.
Lab #4 (GPU matrix multiply)
- The lab description is here.
- Here are the files: matrix_mpy.cu and matrix_mpy_user.cu. You'll also need the ee155_util files from Lab 1 and the matrix.* files from Lab 3.
Lab #5 (GPU CNN)
- The lab description is here.
- Here are the files: cnn.cu and cnn_user.cu. You'll also need the ee155_util files from Lab 1.