This repository contains solutions and reports for assignments completed during the Fall 2024 of the Introduction to Parallel and Distributed Programming course at the University at Buffalo. The course focused on leveraging modern parallel systems, including multi-core processors, GPUs, and distributed memory clusters, using tools such as OpenMP, CUDA, and MPI.
- Instructor: Dr. Jaroslaw Zola
- Institution: University at Buffalo
- Platform Used: UB CCR (Center for Computational Research)
- Course Website: https://cse.buffalo.edu/~jzola/IntroPDP/
- Tools and Technologies: C++, OpenMP, CUDA, MPI
Objective: Benchmark and evaluate the performance of a parallel system.
Key Outcomes:
- Understanding system performance metrics.
- Learning benchmarking techniques.
Objective: Implement a 2D filter using OpenMP for parallel execution.
Key Outcomes:
- Hands-on experience with OpenMP.
- Performance optimization using multi-threading.
Objective: Implement sorting algorithms for small integers using MPI in a distributed memory system.
Key Outcomes:
- Message passing and process communication.
- Scalability analysis in distributed systems.
Objective: Implement a Gaussian Kernel using NVIDIA CUDA for GPU acceleration.
Key Outcomes:
- GPU programming with CUDA.
- Performance evaluation of GPU vs CPU execution.
Each assignment involved:
- Writing efficient parallel code.
- Preparing detailed reports to:
- Tabulate findings.
- Explain replication steps.
- Analyze scalability and optimization techniques.
All solutions and materials in this repository are copyrighted by the instructor and author. Unauthorized use or reproduction without permission is prohibited. If you are currently enrolled in this course or a similar one, adhere to academic integrity policies.
The author is not responsible for any misuse or unauthorized distribution of these materials. Users must comply with ethical standards and academic policies.
This repository is licensed under an All Rights Reserved License. The content is shared solely for showcasing skills and knowledge gained during the course.