https://github.com/ims94/parallel_matrix_multiplication
A serial and parallel matrix multiplication implementation for testing performance
https://github.com/ims94/parallel_matrix_multiplication
Last synced: over 1 year ago
JSON representation
A serial and parallel matrix multiplication implementation for testing performance
- Host: GitHub
- URL: https://github.com/ims94/parallel_matrix_multiplication
- Owner: IMS94
- Created: 2017-06-20T13:03:44.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-07-27T09:29:13.000Z (almost 9 years ago)
- Last Synced: 2025-01-30T09:42:57.680Z (over 1 year ago)
- Language: C++
- Size: 11.7 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Comparison between sequential and parallel matrix multiplication and optimizations
## Prerequisites
1. Ubuntu 16.04 Operating System is preferred because it contains all the
required tools pre-installed.
2. CMake 3.5 or above (Install with `sudo apt install cmake`)
3. GNU gcc (5.4.0 - comes with Ubuntu. To install `sudo apt install gcc`)
## CLI
For both sequential vs parallel and optimized scenarios, same code is
used but with different compiler parameters.
Once compiled, this code will result in an executable named `multiplier`.
This executable requires at least 2 arguments.
`./multiplier [sample_size] [S|P|OP]`
- `[sample_size]` is the number of matrices that should be used for each
test.
- `[S|P|OP]` - As the second argument, you should give at least one of
`S(Sequential)`, `P(Parallel non-optimized)` and `OP(Optimized Parallel)`
which will determine which test you want to run.
- If you want run the sequential matrix multiplication test with a sample
size 10, you should run: `./multiplier 10 S` and you will see the
**mean execution time, standard deviation** printed.
- If you want run both sequential matrix multiplication test and the non-optimized
parallel matrix multiplication at the same time, each with a sample
size 10, you should run: `./multiplier 10 S P` and you will see the
results printed accordingly.
## Steps to compile
To run each version/scenario, please follow the following steps.
### Running sequential and non-optimized parallel matrix multiplication
1. Open terminal and go to directory where `CMakeLists.txt` file is at.
2. Create directory **build** inside that: `mkdir build`
3. Go into **build** directory: `cd build`
4. Run CMake with:
`cmake ..`
You will see some files have been created inside **build**
directory like *Makefile*, *CMakeCache.txt*
5. Then run
`make all`
You will see the executable `multiplier` has been created in that
directory.
6. Run the **multipler** with following arguments,
`./multiplier [sample_size] S P`
and the execution times will be printed on the terminal.
### Running optimized parallel matrix multiplication
*Note*: If you already have created a `build` directory, first delete it.
1. Open terminal and go to directory where `CMakeLists.txt` file is at.
2. Create directory **build** inside that: `mkdir build`
3. Go into **build** directory: `cd build`
4. Run CMake with:
`cmake -DCMAKE_BUILD_TYPE=Release ..`
You will see some files have been created inside **build** directory
like *Makefile*, *CMakeCache.txt*
5. Then run
`make all`
You will see the executable `multiplier` has been created in that
directory.
6. Run the **multipler** with following arguments,
`./multiplier [sample_size] OP`
and the execution times will be printed on the terminal.