diff --git a/CMakeMacros/OpenMP/Link.cmake b/CMakeMacros/OpenMP/Link.cmake index f74f01f7278c166e03c170c37c381e48d7866d46..2a5ae6710f75a77602ab15f3818f3e211a3fb38b 100644 --- a/CMakeMacros/OpenMP/Link.cmake +++ b/CMakeMacros/OpenMP/Link.cmake @@ -4,6 +4,7 @@ find_package(OpenMP) if (OPENMP_FOUND) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set (CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler ${OpenMP_CXX_FLAGS}") endif() endmacro(linkOpenMP) diff --git a/src/GksGpu/CudaUtility/CudaRunKernel.hpp b/src/GksGpu/CudaUtility/CudaRunKernel.hpp index 4945cca05e588a05a4638dc9e48f0deb796a4a15..545cd4114b74250adba3ce9a99bce96ff4d35c6f 100644 --- a/src/GksGpu/CudaUtility/CudaRunKernel.hpp +++ b/src/GksGpu/CudaUtility/CudaRunKernel.hpp @@ -35,6 +35,7 @@ #include <string> #include <device_launch_parameters.h> +#include <omp.h> #include "CudaUtility/CudaUtility.h" @@ -49,7 +50,8 @@ void runKernel(KernelFunctor kernel, FunctionFunctor function, std::string devic } else { - for( uint index = 0; index < grid.numberOfEntities; index++ ) +#pragma omp parallel for + for( int index = 0; index < grid.numberOfEntities; index++ ) { function( args..., index ); } diff --git a/targets/libs/GksGpu/3rdPartyLinking.cmake b/targets/libs/GksGpu/3rdPartyLinking.cmake index 7898b5083e7de0f9e4bd3798732e402d75f5adef..efc76a96b9c09250b52fac5f25ccffc705377e2e 100644 --- a/targets/libs/GksGpu/3rdPartyLinking.cmake +++ b/targets/libs/GksGpu/3rdPartyLinking.cmake @@ -1,2 +1,4 @@ include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/Cuda/Link.cmake) linkCuda(${targetName}) +include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/OpenMP/Link.cmake) +linkOpenMP(${targetName})