https://github.com/nickolasrm/gpuvscpumatrixmultiplication
CPU and GPU optimized matrix multiplication (AVX, transposition, CUDA and other)
https://github.com/nickolasrm/gpuvscpumatrixmultiplication
avx comparison cuda hpc matrix multiplication
Last synced: about 1 month ago
JSON representation
CPU and GPU optimized matrix multiplication (AVX, transposition, CUDA and other)
- Host: GitHub
- URL: https://github.com/nickolasrm/gpuvscpumatrixmultiplication
- Owner: nickolasrm
- License: mit
- Created: 2019-06-19T14:23:07.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-09-09T04:45:42.000Z (about 5 years ago)
- Last Synced: 2025-05-19T01:37:48.453Z (5 months ago)
- Topics: avx, comparison, cuda, hpc, matrix, multiplication
- Language: Cuda
- Homepage:
- Size: 391 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GPU vs CPU analysis
What has been made:
- Transposition
- Optimization of recurrent operations in loops
- AVX
- OpenMP
- CUDA
- Tile based**Usage**
- Compile it by using "make"
- Generate a matrix with "./BINARY g L1 C1 L2 C2 s"
- "BINARY" is the binary to be used (./cuda or ./norm)
- "g" tells the software to generate a matrix
- "L1 C1" are respectively matrix A lines and columns
- "L2 C2" are respectively matrix B lines and columns
- "s", (optional) tells the software to save matrix A and B
- Reading a matrix from file "./BINARY f L1 C1 L2 C2 FILE1 FILE2"
- "BINARY" is the binary to be used (./cuda or ./norm)
- "f" tells the software to read a matrix from a file
- "L1 C1" are respectively matrix A lines and columns
- "L2 C2" are respectively matrix B lines and columns
- "FILE1" is the name of matrix A file
- "FILE2" is the name of matrix B file
- Compile matrix comparator with "make comparator"
- Compare matrix multiplication results with "./comp C1.txt C2.txt"
- Rename matrices from 0....txt, 1....txt e 2....txt to a.txt, b.txt and c.txt with "make rename"
- Clean txts with "make clean"**NOTE**
### Source files
- matrixCuda.cu: Optimized matrix multiplication (CUDA, AVX, Transposition...)
- matrix.cu: Not optmized matrix multiplication
- comparator.c: Matrix equality file comparator### Generated binaries
- cuda: Optimized matrix multiplication (CUDA, AVX, Transposition...)
- norm: Not optimized matrix multiplication
- comp: Matrix equality file comparator### Output files saved with 's' flag:
- Matrix A: 0-rowsxcols.txt
- Matrix B: 1-rowsxcols.txt
- Matrix C: 2-rowsxcols.txtWhether executing the software with the same matrix dimensions, the output files will be overwritten.
Thus, is better to use "make rename" to avoid it.### Usage example:
```
./cuda g 1000 1000 1000 1000 s
make rename
./norm f 1000 1000 1000 1000 a.txt b.txt
./comp 0-1000x1000.txt c.txt
```