# HG changeset patch # User Tatsuki IHA # Date 1505395732 -32400 # Node ID 497b154141deb2303272f562ee74f3a3df2b986e # Parent 409e6b5fb775d9453441cc9a5c7917ea79d70687 Call CUDAExec by twice_stub diff -r 409e6b5fb775 -r 497b154141de src/parallel_execution/CMakeLists.txt --- a/src/parallel_execution/CMakeLists.txt Thu Sep 14 19:11:25 2017 +0900 +++ b/src/parallel_execution/CMakeLists.txt Thu Sep 14 22:28:52 2017 +0900 @@ -83,7 +83,7 @@ TARGET CUDAtwice SOURCES - examples/twice/main.cbc examples/twice/CUDAtwice.cbc examples/twice/CUDAtwice.cu examples/twice/createArray.cbc CPUWorker.cbc TimeImpl.cbc examples/twice/twice.cbc TaskManagerImpl.cbc SingleLinkedQueue.cbc SynchronizedQueue.cbc CUDAWorker.cbc cuda.c MultiDimIterator.cbc + examples/twice/main.cbc examples/twice/twice.cbc examples/twice/CUDAtwice.cu examples/twice/createArray.cbc CPUWorker.cbc TimeImpl.cbc examples/twice/twice.cbc TaskManagerImpl.cbc SingleLinkedQueue.cbc SynchronizedQueue.cbc CUDAWorker.cbc cuda.c MultiDimIterator.cbc ) set_target_properties(CUDAtwice PROPERTIES COMPILE_FLAGS "-Wall -g -DUSE_CUDAWorker=1") endif() diff -r 409e6b5fb775 -r 497b154141de src/parallel_execution/examples/twice/main.cbc --- a/src/parallel_execution/examples/twice/main.cbc Thu Sep 14 19:11:25 2017 +0900 +++ b/src/parallel_execution/examples/twice/main.cbc Thu Sep 14 22:28:52 2017 +0900 @@ -97,11 +97,7 @@ par goto createArray(array, __exit); - if(gpu_num) { - par goto CUDAtwice(array, iterate(split), __exit); - } else { - par goto twice(array, iterate(split), __exit); - } + par goto twice(array, iterate(split), __exit); goto code2(); } diff -r 409e6b5fb775 -r 497b154141de src/parallel_execution/examples/twice/twice.cbc --- a/src/parallel_execution/examples/twice/twice.cbc Thu Sep 14 19:11:25 2017 +0900 +++ b/src/parallel_execution/examples/twice/twice.cbc Thu Sep 14 22:28:52 2017 +0900 @@ -2,6 +2,10 @@ #include "../../../context.h" +#ifdef USE_CUDAWorker +extern void CUDAExec(struct Context* context, Array* array); +#endif + __code twice(struct Array* array, struct MultiDim* multiDim, __code next(...), struct LoopCounter* loopCounter) { int i = loopCounter->i; int index = multiDim->x; @@ -17,6 +21,14 @@ } __code twice_stub(struct Context* context) { +#ifdef USE_CUDAWorker + struct Array* array = &context->data[context->idg]->Array; + if (context->gpu) { + CUDAExec(context, array); + } + //continuationにそってGPUworkerに戻る + goto meta(context, context->next); +#endif goto twice(context, &context->data[context->idg]->Array, &context->data[context->idg+1]->MultiDim,