Skip to content

Implementation of different programming models - CUDA, PRAM, Shared memory, Message Passing for different algorithms

License

Notifications You must be signed in to change notification settings

SiddhantNadkarni/Parallel-and-Distributed-Computing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Parallel and Distributed Computing

Course Website

This repositary contains programming assignments completed as a part of the course EE 451 - Parallel and Distributed computing under Prof. Viktor Prasanna in Fall 2019, USC.

Getting Started

Implementation of different programming models - PRAM, Shared memory, Message Passing for different algorithms

  • PHW1 - Basic Naive Matrix, BlocK Matrix and KMeans Clustering Implementation

Brief Overview: This homework contains non-parallelized implementations of Naive Matrix Multiplication, Block Matrix Multiplication and K-Means clustering of grayscale intensities in an Image.

Problem Statement: Programming Homework #1
Report: Report on Programming Homework #1

  • Q1 a,b - Comparision of Matrix Multiplications type (Naive vs Block) in terms of time taken (s) and performance (MFLOPs)
    Fig1
    Fig2

  • Q2 - K Means Clustering of grayscale Intensities in an Image
    Screen Shot 2019-09-13 at 10 30 41 PM


  • PHW2 - Parallelized Naive Matrix and Parallelized K-Means Clustering Implementation [PThread Shared Programming Models]

Brief Overview: This homework contains parallelized implementation of Naive Matrix Multiplication and parallelized K-Means Clustering implemented in PHW1. Model used: Shared programming model. Library: Posix Threads.

Problem Statement: Programming Homework #2
Report: Report on Programming Homework #2

  • Q1 Naive Matrix Parallelization
    Fig1

  • Q1 Parallelized K-Means Clustering of grayscale Intensities in an Image
    Screen Shot 2019-10-14 at 12 12 54 PM

Details will be added.

  • PHW3 - [OpenMP]

  • PHW4 - [Message Passing Interface (MPI)]

Prerequisites

All Homeworks are written in C++11, compiler used: g++ (latest version)
Boost C++ library version 1.70.0

Directory Layout

├── Homework_PDFs
│   ├── EE 451 F 2019 PHW 1.pdf
│   └── EE_451_F_2019_HW_2.pdf
├── Input
│   └── input.raw
├── Plots
│   ├── Figure_1.png
│   ├── Figure_2.png   
│   └── plotGraph.py
├── Reports
│   ├── report.pdf  
│   └── report.docx
├── src
│   ├── HW_1  
│   └── HW_2
├── License
├── Makefile
└── README.md

Building

Git clone the repositary and run the makefile.

git clone https://github.com/SiddhantNadkarni/Parallel-and-Distributed-Computing.git
cd src/PHW_<homework number>
make

Running the tests

For PHW1: 
./p1a
./p1b <block_Size>
./p2 <path to input image>

For PHW2:

Authors

  • Siddhant Nadkarni

License

This project is licensed under the MIT License - see the LICENSE file for details

Acknowledgments

About

Implementation of different programming models - CUDA, PRAM, Shared memory, Message Passing for different algorithms

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published