Parallelisation of code in OpenMP and CUDA
Budget: €30 – €250 EUR
This is the code I need to parallelize: https://drive.google.com/file/d/1u-GgT8qRs2iRxu48_Aa5MWPvGi7KjRIn/view?usp=sharing
The part of the code I need to parallelize is the one contained in the file fcm_common.cpp
The input file is iris.txt. There is a Makefile ready for linux, so no worries for compiling.
The code structure is as follows:
There is a main.cpp, it calls to fcm_cpu.cpp (or fcm_omp.cpp) according to a passing CLI parameter. Take a look at what I’ve already done at fcm_omp.cpp and fcm_common_omp.cpp. These are the same as fcm_cpu.cpp and fcm_common.cpp but with OpenMP (just included a couple of pragmas, need revision).
I only need parallelized the functions after line 390 (fcm_common_omp.cpp). To take time measurements there is already commented functions in fcm_omp.cpp.
What I need in OpenMP:
- Take execution metrics: Execution time. Bandwidth (GB/s). Computing performance (GFLOPS).
- Scalability study: Analise execution with different threads. Using iris.txt.
- Study of nested parallelism, studying the distribution of the threads between the different nested loops.
What I need in CUDA:
- Implement the algorithm in CUDA.
- Compare performance between sequential and CUDA using the files provided.
- Study execution times in CUDA code. Difference in transfer time between CPU and GPU. Compute time. Total execution time.
- Conclusions about times obtained.
Tell me if you could do it, and how much would it be. Any more info you need feel free to ask.
The part of the code I need to parallelize is the one contained in the file fcm_common.cpp
The input file is iris.txt. There is a Makefile ready for linux, so no worries for compiling.
The code structure is as follows:
There is a main.cpp, it calls to fcm_cpu.cpp (or fcm_omp.cpp) according to a passing CLI parameter. Take a look at what I’ve already done at fcm_omp.cpp and fcm_common_omp.cpp. These are the same as fcm_cpu.cpp and fcm_common.cpp but with OpenMP (just included a couple of pragmas, need revision).
I only need parallelized the functions after line 390 (fcm_common_omp.cpp). To take time measurements there is already commented functions in fcm_omp.cpp.
What I need in OpenMP:
- Take execution metrics: Execution time. Bandwidth (GB/s). Computing performance (GFLOPS).
- Scalability study: Analise execution with different threads. Using iris.txt.
- Study of nested parallelism, studying the distribution of the threads between the different nested loops.
What I need in CUDA:
- Implement the algorithm in CUDA.
- Compare performance between sequential and CUDA using the files provided.
- Study execution times in CUDA code. Difference in transfer time between CPU and GPU. Compute time. Total execution time.
- Conclusions about times obtained.
Tell me if you could do it, and how much would it be. Any more info you need feel free to ask.