Parallelisation of code in OpenMP and CUDA

Job ID: 33916130

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.
Related categories: C Programming Linux CUDA