- Lab 1: Introduction to OpenMP Programming in C
- Lab 2: Barriers in OpenMP
- Lab 3: Critical Regions in OpenMP
- Lab 4: A Fibonacci Number Generator in OpenMP
- Lab 5: Threads vs. Process Performance in C
- Lab 6: Programming with Pthreads in C
- Lab 7: Simulating a Stock Exchange with Pthreads in C
- Lab 8: Concurrency Programming Pitfalls in Java
LAB 1: Introduction to OpenMP Programming in C
- The main purpose of this lab is to introduce you to writing, compiling and running OpenMP programs in C.
- Lab Description: [PDF]
- Source File: [pi_serial.c]
LAB 2: Barriers in OpenMP
- The main purpose of this lab is to explore parallelization in OpenMP using a barrier.
- Lab Description: [PDF]
- Data File: [CSCI_4060U_Lab02_data.zip]
LAB 3: Critical Regions IN OPENMP
- The main purpose of this lab is to implement a parallel program with two queues – one storing latitudes and one storing longitudes in decimal degrees. You should manage reads/writes to each queue using independent critical regions.
- Lab Description: [PDF]
- Data Files: [latitude.csv] [longitude.csv]
LAB 4: A Fibonacci Number Generator in OpenMP
- The main purpose of this lab is to implement both a sequential and parallel Fibonacci number generator.
- Lab Description: [PDF]
Lab 5: Threads vs. Process Performance in C
- The main purpose of this lab is to understand the performance difference between creating processes and creating threads in C.
- Lab Description: [PDF]
- Source Files: [CSCI4060U_lab5_fork.c]
LAB 6: Programming with Pthreads In C
- The main purpose of this lab is to create a program that simulates airline ticket agents. Your program will be written in C and use the pthread.h library (including a mutex to limit access to shared data).
- Lab Description: [PDF]
Lab 7: Simulating a Stock Exchange with Pthreads in C
- The main purpose of this lab is to create a program that simulates a stock exchange system.
- Lab Description: [PDF]
- Source Files: [CSCI4060U_lab7_start.c]
Lab 8: Concurrency Programming Pitfalls in Java
- The main purpose of this lab is to learn about common concurrency programming pitfalls including starvation, deadlocks and data races. Furthermore, the lab will involve identifying concurrency programming pitfalls and addressing them in an existing Java program.
- Lab Description: [PDF]
- Source Files: [CSCI4060U_Lab_08_source.zip]
CSCI 4060U: Massively Parallel Programming