Skip to content

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.

License

Notifications You must be signed in to change notification settings

rathi-yash/Intro-to-Parallel-and-Distributed-Programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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/
  • 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. The content is shared solely for showcasing skills and knowledge gained during the course.

About

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.

Topics

Resources

License

Stars

Watchers

Forks