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);
--- a/src/parallel_execution/context.h	Fri Dec 29 18:29:01 2017 +0900
+++ b/src/parallel_execution/context.h	Fri Dec 29 18:31:15 2017 +0900
@@ -199,6 +199,7 @@
         struct Context* context;
         int id;
         int loopCounter;
+        int deviceNum;
         struct Queue* tasks;
         int runFlag;
         enum Code next;
--- a/src/parallel_execution/cuda.c	Fri Dec 29 18:29:01 2017 +0900
+++ b/src/parallel_execution/cuda.c	Fri Dec 29 18:31:15 2017 +0900
@@ -2,7 +2,6 @@
 #include <sys/time.h>
 #include <string.h>
 #include <stdlib.h>
-#include <libkern/OSAtomic.h>
 
 // includes, project
 #include <driver_types.h>