https://github.com/rathi-yash/intro-to-parallel-and-distributed-programming
Solutions and reports for assignments from the 'Introduction to Parallel and Distributed Programming' course at the University at Buffalo. Includes implementations using OpenMP, CUDA, and MPI, with performance analysis conducted on UB CCR.
https://github.com/rathi-yash/intro-to-parallel-and-distributed-programming
cpp cuda-programming openmp openmpi parallel-programming
Last synced: about 2 months ago
JSON representation
Solutions and reports for assignments from the 'Introduction to Parallel and Distributed Programming' course at the University at Buffalo. Includes implementations using OpenMP, CUDA, and MPI, with performance analysis conducted on UB CCR.
- Host: GitHub
- URL: https://github.com/rathi-yash/intro-to-parallel-and-distributed-programming
- Owner: rathi-yash
- License: other
- Created: 2025-01-27T16:17:57.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-01-27T18:17:53.000Z (4 months ago)
- Last Synced: 2025-03-23T20:44:50.942Z (about 2 months ago)
- Topics: cpp, cuda-programming, openmp, openmpi, parallel-programming
- Language: C++
- Homepage:
- Size: 506 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Introduction to Parallel and Distributed Programming
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.
## **Course Details**
- **Instructor**: Dr. Jaroslaw Zola
- **Institution**: University at Buffalo
- **Platform Used**: UB CCR (Center for Computational Research)
- **Course Website:** [https://cse.buffalo.edu/~jzola/IntroPDP/](https://cse.buffalo.edu/~jzola/IntroPDP/)
- **Tools and Technologies**: C++, OpenMP, CUDA, MPI## **Assignments**
### **A0: Benchmarking a Parallel System**
**Objective**: Benchmark and evaluate the performance of a parallel system.
**Key Outcomes**:
- Understanding system performance metrics.
- Learning benchmarking techniques.### **A1: 2D Filter with OpenMP**
**Objective**: Implement a 2D filter using OpenMP for parallel execution.
**Key Outcomes**:
- Hands-on experience with OpenMP.
- Performance optimization using multi-threading.### **A2: Sorting Small Integers with MPI**
**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.### **A3: Gaussian Kernel with NVIDIA CUDA**
**Objective**: Implement a Gaussian Kernel using NVIDIA CUDA for GPU acceleration.
**Key Outcomes**:
- GPU programming with CUDA.
- Performance evaluation of GPU vs CPU execution.## **Learning Outcomes**
Each assignment involved:
1. Writing efficient parallel code.
2. Preparing detailed reports to:
- Tabulate findings.
- Explain replication steps.
- Analyze scalability and optimization techniques.## **Important Note**
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.## **Disclaimer**
The author is not responsible for any misuse or unauthorized distribution of these materials. Users must comply with ethical standards and academic policies.## **License**
This repository is licensed under an [All Rights Reserved License](LICENSE). The content is shared solely for showcasing skills and knowledge gained during the course.