Mercurial > hg > Gears > GearsAgda
changeset 488:747dd4ba7b44
Merge
author | Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 29 Dec 2017 18:31:15 +0900 |
parents | d6983ce1015d (diff) 8a22cfd174bf (current diff) |
children | 1861e41aa96a |
files | |
diffstat | 4 files changed, 10 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/parallel_execution/CMakeLists.txt Fri Dec 29 18:29:01 2017 +0900 +++ b/src/parallel_execution/CMakeLists.txt Fri Dec 29 18:31:15 2017 +0900 @@ -13,12 +13,15 @@ if (${USE_CUDA}) include_directories("/usr/local/cuda/include") set(NVCCFLAG "-std=c++11" "-g" "-O0" ) - set(CUDA_LINK_FLAGS "-framework CUDA -lc++ -Wl,-search_paths_first -Wl,-headerpad_max_install_names /usr/local/cuda/lib/libcudart_static.a -Wl,-rpath,/usr/local/cuda/lib") + if (UNIX AND NOT APPLE) # LINUX + set(CUDA_LINK_FLAGS "-L/usr/local/cuda/lib64 -lcuda -lcudart") + elseif (APPLE) + set(CUDA_LINK_FLAGS "-framework CUDA -lc++ -Wl,-search_paths_first -Wl,-headerpad_max_install_names /usr/local/cuda/lib/libcudart_static.a -Wl,-rpath,/usr/local/cuda/lib") + endif() find_package(CUDA REQUIRED) SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CUDA_LINK_FLAGS}" ) endif() - macro( GearsCommand ) set( _OPTIONS_ARGS ) set( _ONE_VALUE_ARGS TARGET )
--- a/src/parallel_execution/CUDAWorker.cbc Fri Dec 29 18:29:01 2017 +0900 +++ b/src/parallel_execution/CUDAWorker.cbc Fri Dec 29 18:31:15 2017 +0900 @@ -4,18 +4,19 @@ #interface "Iterator.h" #interface "Queue.h" -extern void cudaInit(struct CUDAWorker *cudaWorker,int phase) ; +extern void cudaInit(struct CUDAWorker *cudaWorker,int phase, int deviceNum); extern void cudaShutdown(CUDAWorker *cudaWorker); static void startCUDAWorker(Worker* worker); -Worker* createCUDAWorker(struct Context* context, int id, Queue* queue, TaskManagerImpl *im) { +Worker* createCUDAWorker(struct Context* context, int id, Queue* queue, int deviceNum) { struct Worker* worker = new Worker(); struct CUDAWorker* cudaWorker = new CUDAWorker(); worker->worker = (union Data*)cudaWorker; worker->tasks = queue; cudaWorker->id = id; cudaWorker->loopCounter = 0; + cudaWorker->deviceNum = deviceNum; worker->taskReceive = C_taskReceiveCUDAWorker; worker->shutdown = C_shutdownCUDAWorker; pthread_create(&worker->thread, NULL, (void*)&startCUDAWorker, worker); @@ -24,8 +25,7 @@ static void startCUDAWorker(Worker* worker) { struct CUDAWorker* cudaWorker = &worker->worker->CUDAWorker; - int deviceNum = 0; - cudaInit(cudaWorker, deviceNum); + cudaInit(cudaWorker, 0, cudaWorker->deviceNum); cudaWorker->context = NEW(struct Context); initContext(cudaWorker->context); cudaWorker->executor = createCUDAExecutor(cudaWorker->context, cudaWorker->device);