Labs

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

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: THREAD 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: 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: [Account.java] [Main.java] [ManageAccount.java]

LAB 8: MATRIX MULTIPLICATION IN OPENCL

  • The main goal of this lab is to take a sequential implementation of matrix multiplication and parallelize it in OpenCL.
  • Lab Description: [PDF]
  • Data Files: [matrix_mult_seq.c]