From 0f161b500f641411dc10527a78a3cc3fd7659221 Mon Sep 17 00:00:00 2001 From: Evghenii Date: Wed, 13 Nov 2013 19:02:45 +0100 Subject: [PATCH] +1 --- examples_cuda/sort/sort | Bin 58115 -> 58497 bytes examples_cuda/sort/sort.cpp | 7 +++++++ examples_cuda/sort/sort_cu.cpp | 10 ++++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/examples_cuda/sort/sort b/examples_cuda/sort/sort index d148e465a4b211c1b0af13bfbabd34128d46fb56..64c32dd02ce9ef2b3774fb8a3734c07acd05e12d 100755 GIT binary patch delta 11703 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 T*|TkvQ>f|F-kz(Un0x*Ql5Dzm delta 11472 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 NUv>2?_{!Yr{{U0Sk=p #include "../timing.h" #include "sort_ispc.h" +#include #include static inline double rtc(void) @@ -129,6 +130,12 @@ int main (int argc, char *argv[]) printf("[sort ispc + tasks]:\t[%.3f] million cycles\n", tISPC2); + for (int i = 0; i < n-1; i++) + { + assert(code[i+1] >= code[i]); + } + + srand (0); for (i = 0; i < m; i ++) diff --git a/examples_cuda/sort/sort_cu.cpp b/examples_cuda/sort/sort_cu.cpp index ec295434..b8e9edf5 100644 --- a/examples_cuda/sort/sort_cu.cpp +++ b/examples_cuda/sort/sort_cu.cpp @@ -351,7 +351,7 @@ int main (int argc, char *argv[]) createContext(); /*******************/ - int ntask = 13*4*8; + int ntask = 13*4; devicePtr d_code = deviceMalloc(n*sizeof(int)); devicePtr d_order = deviceMalloc(n*sizeof(int)); devicePtr d_pair = deviceMalloc(n*2*sizeof(int)); @@ -386,7 +386,13 @@ int main (int argc, char *argv[]) progressbar (i, m); } - printf("[sort ispc + tasks]:\t[%.3f] million cycles\n", tISPC2); + printf("[sort cuda]:\t[%.3f] million cycles\n", tISPC2); + memcpyD2H(code, d_code, n*sizeof(int)); + memcpyD2H(order, d_order, n*sizeof(int)); + for (int i = 0; i < n-1; i++) + { + assert(code[i+1] >= code[i]); + } srand (0);