Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sumanthvrao/openmp
Optimized codes to achieve parallelism using OpenMP
https://github.com/sumanthvrao/openmp
Last synced: 10 days ago
JSON representation
Optimized codes to achieve parallelism using OpenMP
- Host: GitHub
- URL: https://github.com/sumanthvrao/openmp
- Owner: sumanthvrao
- Created: 2018-12-10T15:00:54.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-05-14T05:33:17.000Z (over 3 years ago)
- Last Synced: 2023-05-18T03:10:18.262Z (over 1 year ago)
- Language: C
- Homepage:
- Size: 15.6 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OpenMP
This repository contains the source code of programs that are optimized to achieve fast execution times by leveraging parallelism using OpenMP.[![OpenMP](https://img.shields.io/badge/OpenMP-3.0-red.svg)](https://www.openmp.org/)
Matrix Multiplication
-----
An openMP implementation of matrix multiplication using block algorithm.
### Files:
* **main.c** - Tests the speed of program by using matrices
of varying dimesions from 1024 X 1024 to 1536 X 1536 in steps of 256.
Each time it launches different threads from 1 till 4 in steps of 2.
* **block_multiply.c** - Uses block multiplication algorithm to multiply
the two matrices and store output in matrix C. Block multiplication algo
has the advantage of fitting in cache as big matrices are split into small
chunks of size b for this purpose.
* **MatMul_omp.c** - Implemets the block multiplication algorithm with OpenMP
further parallelizing the code by allowing threads to execute first loops interchangably.
* **matrix.h** - header files including required packages.
* **Makefile** - makefile to be run.### Run program:
1. clone repository and `cd` into repository.
2. `cd Matrix Multiplication`
3. run make - `make`
4. execute after compilation- `./main`### Output:
```
{m=1024,n=1024,p=1024,numt=1,b=16,time=9,status=Passed}, {m=1024,n=1024,p=1024,numt=2,b=16,time=4,status=Passed}, {m=1024,n=1024,p=1024,numt=4,b=4,time=5,status=Passed}, {m=1024,n=1024,p=1024,numt=4,b=16,time=3,status=Passed}, {m=1024,n=1024,p=1024,numt=4,b=64,time=5,status=Passed}, {m=1280,n=1280,p=1280,numt=1,b=16,time=16,status=Passed}, {m=1280,n=1280,p=1280,numt=2,b=16,time=8,status=Passed}, {m=1280,n=1280,p=1280,numt=4,b=4,time=7,status=Passed}, {m=1280,n=1280,p=1280,numt=4,b=16,time=7,status=Passed}, {m=1280,n=1280,p=1280,numt=4,b=64,time=7,status=Passed}, {m=1536,n=1536,p=1536,numt=1,b=16,time=27,status=Passed}, {m=1536,n=1536,p=1536,numt=2,b=16,time=15,status=Passed}, {m=1536,n=1536,p=1536,numt=4,b=4,time=14,status=Passed}, {m=1536,n=1536,p=1536,numt=4,b=16,time=12,status=Passed}, {m=1536,n=1536,p=1536,numt=4,b=64,time=14,status=Passed}
```The time increases with increase in thread but decreases with dimensional increase
Pascal Triangle
-----
An openMP implementation of pascal triangle using tasks.
### Files:
* **main.c** - Tests the speed of program by varying number of threads
(e.g. 1, 2, 4, 8, 16, 32) and different validations to ensure that tasks
have been used properly.
* **FILLPT.c** - Uses tasks and their interdependencies to call `PTUpdateEntry`
function for the specific cell to be filled.
* **matrix.h** - header files including required packages.
* **Makefile** - makefile to be run.### Run program:
1. clone repository and `cd` into repository.
2. `cd Pascal Triangle`
3. run make - `make`
4. execute after compilation- `./main`### Output:
```
numt=1, status=Passed, workload=[210],time=1
numt=2, status=Passed, workload=[210,0],time=1
numt=4, status=Passed, workload=[210,0,0,0],time=5
```