From 206574f4d9b735521a8772c4673a83945f8dba44 Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 03:37:11 -0400 Subject: [PATCH 01/10] commiting current changes --- README.md | 262 ++++++++++++++++++++++++- images/bench1.png | Bin 0 -> 135098 bytes images/bench2.png | Bin 0 -> 84365 bytes images/bottleneck.png | Bin 0 -> 167167 bytes images/memoryswapping.png | Bin 0 -> 50792 bytes src/main.cpp | 326 +++++++++++++++++++++++++++++++ stream_compaction/CMakeLists.txt | 2 + stream_compaction/common.cu | 12 ++ stream_compaction/cpu.cu | 67 ++++++- stream_compaction/efficient.cu | 210 +++++++++++++++++++- stream_compaction/naive.cu | 80 +++++++- stream_compaction/radix.cu | 285 +++++++++++++++++++++++++++ stream_compaction/radix.h | 11 ++ stream_compaction/thrust.cu | 12 ++ 14 files changed, 1257 insertions(+), 10 deletions(-) create mode 100644 images/bench1.png create mode 100644 images/bench2.png create mode 100644 images/bottleneck.png create mode 100644 images/memoryswapping.png create mode 100644 stream_compaction/radix.cu create mode 100644 stream_compaction/radix.h diff --git a/README.md b/README.md index b71c458..2d1e2a7 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,269 @@ CUDA Stream Compaction **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** -* (TODO) YOUR NAME HERE -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +* (TODO) Rony Edde (redde) +* Tested on: Windows 10, i7-6700k @ 4.00GHz 64GB, GTX 980M 8GB (Personal Laptop) ### (TODO: Your README) Include analysis, etc. (Remember, this is public, so don't put anything here that you don't want to share with the world.) + +This is an implementation of scan and reduce on the CPU and GPU +for stream compaction. +There are 2 types of arrays to consider. Powers of 2 and non +powers of 2 which are part of the test. + +** Scan +* The first method used is on the CPU where all elements are + added using a for loop. This works very well on small arrays. + +* The second method consists of using the GPU to compute the + scan result. This is a naive implementation where the first + iteration copies elements left to right (exclusive), then + 2^(i+1) for a depth of log2(n). Each depth skips 2^(d-1). + This is faster than the CPU version for large arrays. + +* The third method uses a double sweep. An upsweep, followed by + a downsweep using a balanced tree form. Each sweeps takes + log2(n-1) iterations but the calls on the GPU are only taking + place on multiples of 2^(d+1). This should be fast because + there are only O(n) adds for the up sweep and O(n) adds and + O(n) swaps. + +* Thrust scan uses CUDA's thrust exclusive function which is + built in the CUDA library. + +** Stream Compaction +* The first implementation is on the CPU where a for loop looks + for values greater than 0 and adds them to the new array while + incrementing the count when a non zero value is found. + +* The second implementation uses the CPU but also uses the scan + function to look up indices. + +* The third implementation uses the GPU to generate a [0 1] + mapped array which is then run into the scan GPU function + and used as an index lookup for placing the elements. + After the scan function all non zero elements will be + present wich will result in a compact array with no zeros. + + +** Thrust +* The implementation is mentionned in the Scan section. + +** Radix sort +* There are 2 versions of the Radix sort. This first one runs + on the CPU using a CPU version on scan. + +* The second version uses the GPU to run the scan. It also uses + a GPU function to determine the max number in the array. This + is used to determine how many loops are needed before we reach + the maximum amount of decimals in the maximum number. + Another GPU function is used to shift the scan from exclusive + to inclusive which is needed for a correct radix sort. + There are multiple scan functions that can be used, a few are + benchmarked. + +** Benchmarks +* Running benhmarks on a range of 256 to 65536 with a power of 4 + increment gave the following results: + + + + + + + + + diff --git a/images/bench1.png b/images/bench1.png new file mode 100644 index 0000000000000000000000000000000000000000..f447a496ba667330fbdffed995f238eb698efeb4 GIT binary patch literal 135098 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

Bseu)O|s$F(2pm)y23{lp&>8A&6uAcgs9B0%3c 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­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 z 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

Z3l2Cy4M3qg{B(5BsDN5Ep9XxZx_2a3LF{nz2f- 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

s#JvKoTSP`Pv-@{M^v-1oMDb4=sH> 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%0DY6tPxX!#D+wq)# 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 V$(e<&(5*BqE+P$r3xEFh{{hwVcxV6s literal 0 HcmV?d00001 diff --git a/images/memoryswapping.png b/images/memoryswapping.png new file mode 100644 index 0000000000000000000000000000000000000000..4890ea9619cbf519e0ef745d88d82457d87a91f7 GIT binary patch literal 50792 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 #include #include +#include #include "testing_helpers.hpp" +#include +#include +#include +#include + + +int comparator(const void* a, const void* b) +{ + return (*(int*)a - *(int*)b); +} int main(int argc, char* argv[]) { const int SIZE = 1 << 8; @@ -76,6 +87,40 @@ int main(int argc, char* argv[]) { //printArray(NPOT, c, true); printCmpResult(NPOT, b, c); + printDesc("cpu radix sort"); + memcpy(b, a, sizeof(int)*SIZE); + memcpy(c, a, sizeof(int)*SIZE); + std::qsort(b, SIZE, sizeof(int), comparator); + //printArray(SIZE, b, true); + StreamCompaction::Radix::radixCPU(SIZE, c, a); + printArray(SIZE, c, true); + printCmpResult(NPOT, b, c); + + + printDesc("gpu radix sort cpu scan"); + memcpy(c, a, sizeof(int)*SIZE); + std::qsort(b, SIZE, sizeof(int), comparator); + //printArray(SIZE, b, true); + StreamCompaction::Radix::radixGPU(SIZE, c, a, StreamCompaction::Radix::CPU); + printArray(SIZE, c, true); + printCmpResult(NPOT, b, c); + + printDesc("gpu radix sort naive scan"); + memcpy(c, a, sizeof(int)*SIZE); + std::qsort(b, SIZE, sizeof(int), comparator); + //printArray(SIZE, b, true); + StreamCompaction::Radix::radixGPU(SIZE, c, a, StreamCompaction::Radix::NAIVE); + printArray(SIZE, c, true); + printCmpResult(NPOT, b, c); + + printDesc("gpu radix sort thrust scan"); + memcpy(c, a, sizeof(int)*SIZE); + std::qsort(b, SIZE, sizeof(int), comparator); + //printArray(SIZE, b, true); + StreamCompaction::Radix::radixGPU(SIZE, c, a, StreamCompaction::Radix::THRUST); + printArray(SIZE, c, true); + printCmpResult(NPOT, b, c); + printf("\n"); printf("*****************************\n"); printf("** STREAM COMPACTION TESTS **\n"); @@ -120,4 +165,285 @@ int main(int argc, char* argv[]) { count = StreamCompaction::Efficient::compact(NPOT, c, a); //printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); + + + + + + + + + + + + + { + // bechmarks + + // Scan tests + + printf("\n"); + printf("****************\n"); + printf("** BENCHMARKS **\n"); + printf("****************\n"); + + + clock_t t; + int f; + LARGE_INTEGER start, end, freq; + + + + + int iterations = 5; + int maxiterations = 25; + for (int i = 8; i < maxiterations; i += 1) + { + int SIZE = (1 << i); + int NPOT = SIZE - 3; + + printf("\n** SIZE = %d **\n", SIZE); + printf("****************\n"); + + int* a = new int[SIZE]; + int* b = new int[SIZE]; + int* c = new int[SIZE]; + zeroArray(SIZE, a); + zeroArray(SIZE, b); + zeroArray(SIZE, c); + + genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case + a[SIZE - 1] = 0; + printArray(SIZE, a, true); + + //t = clock(); + + //t = clock() - t; + //printf("Elapsed time %f second(s).\n", t, ((float)t) / CLOCKS_PER_SEC); + + Sleep(1); + zeroArray(SIZE, b); + printDesc("cpu scan, power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::CPU::scan(SIZE, b, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + + /* + Sleep(1); + zeroArray(SIZE, c); + printDesc("cpu scan, non-power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::CPU::scan(NPOT, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + */ + + + Sleep(1); + zeroArray(SIZE, c); + printDesc("naive scan, power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Naive::scan(SIZE, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + + /* + Sleep(1); + zeroArray(SIZE, c); + printDesc("naive scan, non-power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Naive::scan(NPOT, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + */ + + + + Sleep(1); + zeroArray(SIZE, c); + printDesc("work-efficient scan, power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Efficient::scan(SIZE, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + + /* + Sleep(1); + zeroArray(SIZE, c); + printDesc("work-efficient scan, non-power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Efficient::scan(NPOT, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + */ + + + Sleep(1); + zeroArray(SIZE, c); + printDesc("thrust scan, power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Thrust::scan(SIZE, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + + /* + Sleep(1); + zeroArray(SIZE, c); + printDesc("thrust scan, non-power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Thrust::scan(NPOT, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + */ + + + Sleep(1); + printDesc("cpu radix sort"); + memcpy(c, a, sizeof(int)*SIZE); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Radix::radixCPU(SIZE, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + + Sleep(1); + printDesc("gpu radix sort cpu scan"); + memcpy(c, a, sizeof(int)*SIZE); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Radix::radixGPU(SIZE, c, a, StreamCompaction::Radix::CPU); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + + Sleep(1); + printDesc("gpu radix sort naive scan"); + memcpy(c, a, sizeof(int)*SIZE); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Radix::radixGPU(SIZE, c, a, StreamCompaction::Radix::NAIVE); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + + Sleep(1); + printDesc("gpu radix sort thrust scan"); + memcpy(c, a, sizeof(int)*SIZE); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + StreamCompaction::Radix::radixGPU(SIZE, c, a, StreamCompaction::Radix::THRUST); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; + + + + + // compaction + + + genArray(SIZE - 1, a, 4); // Leave a 0 at the end to test that edge case + a[SIZE - 1] = 0; + + Sleep(1); + zeroArray(SIZE, b); + printDesc("cpu compact without scan, power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + count = StreamCompaction::CPU::compactWithoutScan(SIZE, b, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart) / iterations << " microSeconds\n"; + + + /* + Sleep(1); + zeroArray(SIZE, c); + printDesc("cpu compact without scan, non-power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + count = StreamCompaction::CPU::compactWithoutScan(NPOT, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart) / iterations << " microSeconds\n"; + */ + + + Sleep(1); + zeroArray(SIZE, c); + printDesc("cpu compact with scan"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + count = StreamCompaction::CPU::compactWithScan(SIZE, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart) / iterations << " microSeconds\n"; + + Sleep(1); + zeroArray(SIZE, c); + printDesc("work-efficient compact, power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + count = StreamCompaction::Efficient::compact(SIZE, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart) / iterations << " microSeconds\n"; + + /* + Sleep(1); + zeroArray(SIZE, c); + printDesc("work-efficient compact, non-power-of-two"); + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&start); + for (int j = 0; j < iterations; j++) + count = StreamCompaction::Efficient::compact(NPOT, c, a); + QueryPerformanceCounter(&end); + std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart) / iterations << " microSeconds\n"; + */ + + + + + + + + + + + + + delete[] a; + delete[] b; + delete[] c; + + Sleep(1); + + } + + } + + + + + + + return 0; } diff --git a/stream_compaction/CMakeLists.txt b/stream_compaction/CMakeLists.txt index cdbef77..bcc484e 100644 --- a/stream_compaction/CMakeLists.txt +++ b/stream_compaction/CMakeLists.txt @@ -9,6 +9,8 @@ set(SOURCE_FILES "efficient.cu" "thrust.h" "thrust.cu" + "radix.h" + "radix.cu" ) cuda_add_library(stream_compaction diff --git a/stream_compaction/common.cu b/stream_compaction/common.cu index fe872d4..1ad61e8 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -24,6 +24,12 @@ namespace Common { */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { // TODO + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index >= n) + return; + + bools[index] = idata[index] != 0; + } /** @@ -33,6 +39,12 @@ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { // TODO + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index >= n) + return; + + if (bools[index] == 1) + odata[indices[index]] = idata[index]; } } diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index e600c29..f37c227 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -9,7 +9,12 @@ namespace CPU { */ void scan(int n, int *odata, const int *idata) { // TODO - printf("TODO\n"); + //printf("TODO\n"); + odata[0] = 0; + for (int i = 1; i < n; i++) + { + odata[i] = odata[i-1] + idata[i-1]; + } } /** @@ -19,7 +24,18 @@ void scan(int n, int *odata, const int *idata) { */ int compactWithoutScan(int n, int *odata, const int *idata) { // TODO - return -1; + int count = 0; + odata[0] = 0; + + for (int i = 0; i < n; i++) + { + if (idata[i] != 0) + { + odata[count] = idata[i]; + count++; + } + } + return count; } /** @@ -29,7 +45,52 @@ int compactWithoutScan(int n, int *odata, const int *idata) { */ int compactWithScan(int n, int *odata, const int *idata) { // TODO - return -1; + //return -1; + + int* mapdata = new int[n]; + int* scandata = new int[n]; + + memset(mapdata, 0, n*sizeof(int)); + memset(scandata, 0, n*sizeof(int)); + + + for (int i = 0; i < n; i++) + { + if (idata[i] != 0) + mapdata[i] = 1; + } + + scan(n, scandata, mapdata); + + int count = 0; + for (int i = 0; i < n; i++) + { + //odata[count] = mapdata[i] * idata[scandata[i]]; + //count += mapdata[i]; + if (mapdata[i] != 0) + { + odata[scandata[i]] = idata[i]; + } + } + count = scandata[n - 1] + mapdata[n-1]; + + /* + printf("\n%-10s", "idata: "); for (int i = 0; i < 20; i++) + printf("%d ", idata[i]); + printf("\n%-10s", "mapdata: "); for (int i = 0; i < 20; i++) + printf("%d ", mapdata[i]); + printf("\n%-10s", "scandata: "); for (int i = 0; i < 20; i++) + printf("%d ", scandata[i]); + printf("\n%-10s", "odata: "); for (int i = 0; i < 20; i++) + printf("%d ", odata[i]); + printf("\n"); + */ + + delete[] mapdata; + delete[] scandata; + + return count; + } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index b2f739b..f1aa594 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -7,13 +7,142 @@ namespace StreamCompaction { namespace Efficient { // TODO: __global__ +#define blockSize 128 + + int* dev_idata; + int* dev_odata; + int* dev_bools; + int* dev_indices; + int* dev_scandata; + + + __global__ void kernupsweep(int n, int d, int* dev_scandata) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n) + return; + + if (k % (1 << (d + 1)) == 0) + dev_scandata[k + (1 << (d + 1)) - 1] += dev_scandata[k + (1 << d) - 1];// +dev_scandata[k + (1 << (d + 1)) - 1]; + } + + __global__ void kerndownsweep(int n, int d, int* dev_scandata) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n) + return; + + if (k % (1<<(d+1)) == 0) + { + int t = dev_scandata[k + (1<= n) + return; + + if (k >= (1<<(d-1))) + dev_scandata[k] = dev_scandata2[k] + dev_scandata2[k - (1<<(d-1))]; + } + + __global__ void kerninc2exc(int n, int* dev_scandata, int* dev_scandata2) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n) + return; + + if (k == 0) + dev_scandata[0] = 0; + else + dev_scandata[k] = dev_scandata2[k - 1]; + } + + + void setup(int n, const int* idata) + { + cudaMalloc((void**)&dev_scandata, n * sizeof(int)); + cudaMemcpy(dev_scandata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + } + + void cleanup(void) + { + cudaFree(dev_scandata); + } + + void setupcompact(int n, const int* idata) + { + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMalloc((void**)&dev_bools, n * sizeof(int)); + cudaMalloc((void**)&dev_indices, n * sizeof(int)); + cudaMalloc((void**)&dev_scandata, n * sizeof(int)); + + cudaMemset(dev_bools, 0, sizeof(int) * n); + cudaMemset(dev_indices, 0, sizeof(int) * n); + cudaMemcpy(dev_scandata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + } + + void cleanupcompact(void) + { + cudaFree(dev_idata); + cudaFree(dev_odata); + cudaFree(dev_bools); + cudaFree(dev_indices); + cudaFree(dev_scandata); + } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { // TODO - printf("TODO\n"); + //printf("TODO\n"); + + dim3 blocks((n + blockSize - 1) / blockSize); + + int nold = n; + + if (n % 2 == 0) + { + n = 1 << ilog2ceil(n); + setup(n, idata); + for (int d = 0; d <= ilog2ceil(n)-1; d++) + { + kernupsweep << > >(n, d, dev_scandata); + } + + cudaMemset(dev_scandata+(n-1), 0, sizeof(int)); + for (int d = ilog2ceil(n); d>=0; d--) + { + kerndownsweep << > >(n, d, dev_scandata); + } + cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); + } + else + { + n = 1 << ilog2ceil(n); + setup(n, idata); + + for (int d = 0; d <= ilog2ceil(n) - 1; d++) + { + kernupsweep << > >(n, d, dev_scandata); + } + + cudaMemset(dev_scandata+(n-1), 0, sizeof(int)); + for (int d = ilog2ceil(n); d >= 0; d--) + { + kerndownsweep << > >(n, d, dev_scandata); + } + cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); + } + + cleanup(); + } /** @@ -27,7 +156,84 @@ void scan(int n, int *odata, const int *idata) { */ int compact(int n, int *odata, const int *idata) { // TODO - return -1; + + dim3 blocks((n + blockSize - 1) / blockSize); + int count = 0; + + if (n % 2 == 0) + { + n = 1 << ilog2ceil(n); + + setupcompact(n, idata); + + int* bools = new int[n]; + int* indices = new int[n]; + memset(bools, 0, sizeof(int)*n); + memset(indices, 0, sizeof(int)*n); + cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_odata, odata, sizeof(int)*n, cudaMemcpyHostToDevice); + + StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_scandata); + + scan(n, dev_indices, dev_bools); + cudaMemcpy(bools, dev_bools, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaMemcpy(indices, dev_indices, sizeof(int) * n, cudaMemcpyDeviceToHost); + + StreamCompaction::Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_indices); + + cudaMemcpy(odata, dev_odata, sizeof(int)*n, cudaMemcpyDeviceToHost); + + /* + printf("\n%-10s", "bools: "); for (int i = 0; i < 20; i++) + printf("%d ", bools[i]); + printf("\n%-10s", "scans: "); for (int i = 0; i < 20; i++) + printf("%d ", indices[i]); + printf("\n%-10s", "idata: "); for (int i = 0; i < 20; i++) + printf("%d ", idata[i]); + printf("\n%-10s", "odata: "); for (int i = 0; i < 20; i++) + printf("%d ", odata[i]); + printf("\n"); + */ + + count = indices[n - 1] +bools[n - 1]; + + cleanupcompact(); + + delete[] bools; + delete[] indices; + } + else + { + n = 1 << ilog2ceil(n); + + setupcompact(n, idata); + + int* bools = new int[n]; + int* indices = new int[n]; + memset(bools, 0, sizeof(int)*n); + memset(indices, 0, sizeof(int)*n); + cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_odata, odata, sizeof(int)*n, cudaMemcpyHostToDevice); + + StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_scandata); + + scan(n, dev_indices, dev_bools); + cudaMemcpy(bools, dev_bools, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaMemcpy(indices, dev_indices, sizeof(int) * n, cudaMemcpyDeviceToHost); + + StreamCompaction::Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_indices); + + cudaMemcpy(odata, dev_odata, sizeof(int)*n, cudaMemcpyDeviceToHost); + + count = indices[n - 1] +bools[n - 1] - 1; + + cleanupcompact(); + + delete[] bools; + delete[] indices; + } + + return count; } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 3d86b60..5e1b5f8 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -2,18 +2,92 @@ #include #include "common.h" #include "naive.h" +#include namespace StreamCompaction { namespace Naive { // TODO: __global__ +#define blockSize 128 + int* dev_scandata; + int* dev_scandata2; + + + __global__ void kernscan(int n, int d, int* dev_scandata, int* dev_scandata2) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n) + return; + + if (k >= 1 << (d - 1)) + { + dev_scandata[k] = dev_scandata2[k] + dev_scandata2[k - (1 << (d - 1))]; + dev_scandata2[k] = dev_scandata[k]; //swap + } + } + + __global__ void kerninc2exc(int n, int* dev_scandata, int* dev_scandata2) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n) + return; + + if (k == 0) + dev_scandata[0] = 0; + else + dev_scandata[k] = dev_scandata2[k-1]; + } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ -void scan(int n, int *odata, const int *idata) { - // TODO - printf("TODO\n"); + void scan(int n, int *odata, const int *idata) { + // TODO + //printf("TODO\n"); + + + cudaMalloc((void**)&dev_scandata, n * sizeof(int)); + cudaMalloc((void**)&dev_scandata2, n * sizeof(int)); + + cudaMemcpy(dev_scandata2, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_scandata, dev_scandata2, sizeof(int) * n, cudaMemcpyDeviceToDevice); + + + dim3 blocks((n + blockSize - 1) / blockSize); + + int count = 0; + if (n % 2 == 0) + { + for (int d = 1; d <= ilog2ceil(n); d++) + { + kernscan << > >(n, d, dev_scandata, dev_scandata2); + count++; + } + } + else + { + for (int d = 1; d <= ilog2ceil(n)+1; d++) + { + kernscan << > >(n, d, dev_scandata, dev_scandata2); + count++; + } + } + + if (n % 2 == 0) + { + kerninc2exc << > >(n, + dev_scandata2, dev_scandata); + cudaMemcpy(odata, dev_scandata2, sizeof(int) * n, cudaMemcpyDeviceToHost); + } + else + { + kerninc2exc << > >(n, + dev_scandata, dev_scandata2); + cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); + } + + cudaFree(dev_scandata); + cudaFree(dev_scandata2); } } diff --git a/stream_compaction/radix.cu b/stream_compaction/radix.cu new file mode 100644 index 0000000..a0f3e0c --- /dev/null +++ b/stream_compaction/radix.cu @@ -0,0 +1,285 @@ +#include +#include +#include "common.h" +#include "naive.h" +#include "radix.h" +#include "efficient.h" +#include "thrust.h" +#include "cpu.h" +#include + +namespace StreamCompaction { +namespace Radix { + + +#define blockSize 128 + + int getDigit(int number, int i) + { + int d = 0; + if (i == 1) + { + d = number % (10 * i); + return d; + } + else if (i > 1) + { + int currpower = (pow(10, i)); + int prevpower = (pow(10, i - 1)); + + if (number < prevpower) + return -1; + + int nextdigits = number % (prevpower); + d = (number%currpower - nextdigits) / prevpower; + + return d; + } + return -1; + } + + + + + __global__ void kernDecimalsMap(int n, int sbit, int *decimals, const int *idata) { + // TODO + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index >= n) + return; + + int number = idata[index]; + + // get digit + int d = 0; + if (sbit == 1) + { + d = number % (10 * sbit); + } + else if (sbit > 1) + { + int currpower = (int)(pow(double(10), double(sbit))); + int prevpower = (int)(pow(double(10), double(sbit - 1))); + + if (number < prevpower) + d = -1; + + int nextdigits = number % (prevpower); + d = (number%currpower - nextdigits) / prevpower; + } + else + d = -1; + // end get digit + + decimals[index] = d; + } + + + __global__ void kernexc2inc(int n, int* dev_scandata, int* dev_scandata2) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n-1) + return; + + dev_scandata[k] = dev_scandata2[k+1]; + } + + void exc2inc(int n, int *odata, const int *idata) + { + dim3 blocks((n + blockSize - 1) / blockSize); + int* dev_idata; + int* dev_odata; + cudaMalloc((void**)&dev_idata, sizeof(int) * n); + cudaMalloc((void**)&dev_odata, sizeof(int) * n); + cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_odata, odata, sizeof(int)*n, cudaMemcpyHostToDevice); + + kernexc2inc << > >(n, dev_odata, dev_idata); + cudaMemcpy(odata, dev_odata, sizeof(int)*n, cudaMemcpyDeviceToHost); + + if (n>1) + odata[n - 1] += odata[n-2]; + + cudaFree(dev_idata); + cudaFree(dev_odata); + } + + int findMax(int n, const int* nums) + { + int max = 0; + for (int i = 0; i < n; i++) + max = max < nums[i] ? nums[i] : max; + return max; + } + + + __global__ void kernFindMax(int n, int d, int* dev_scandata, int* dev_scandata2) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n) + return; + + if (k >= 1 << (d - 1)) + { + dev_scandata[k] = dev_scandata2[k] < dev_scandata2[k - (1 << (d - 1))] ? dev_scandata2[k - (1 << (d - 1))] : dev_scandata2[k]; + dev_scandata2[k] = dev_scandata[k]; //swap + } + } + + void findMaxGPU(int n, int *odata, const int *idata) + { + dim3 blocks((n + blockSize - 1) / blockSize); + int* dev_scandata; + int* dev_scandata2; + cudaMalloc((void**)&dev_scandata, n * sizeof(int)); + cudaMalloc((void**)&dev_scandata2, n * sizeof(int)); + + cudaMemcpy(dev_scandata2, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_scandata, dev_scandata2, sizeof(int) * n, cudaMemcpyDeviceToDevice); + + if (n % 2 == 0) + { + for (int d = 1; d <= ilog2ceil(n); d++) + kernFindMax << > >(n, d, dev_scandata, dev_scandata2); + } + else + { + for (int d = 1; d <= ilog2ceil(n) + 1; d++) + kernFindMax << > >(n, d, dev_scandata, dev_scandata2); + } + + cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaFree(dev_scandata); + cudaFree(dev_scandata2); + } +/** + * Performs prefix-sum (aka scan) on idata, storing the result into odata. + */ + void radixCPU(int n, int *odata, const int *idata) { + // TODO + //printf("TODO\n"); + + int* mapping = new int[10]; + int* idatacpy = new int[n]; + memcpy(idatacpy, idata, sizeof(int)*n); + + memset(odata, 0, sizeof(int)*n); + + int sbit = 1; + bool notdone = true; + + while (notdone) + { + memset(mapping, 0, sizeof(int) * 10); + notdone = false; + for (int i = 0; i < n; i++) + { + int number = idatacpy[i]; + int val = getDigit(number, sbit); + if (val != -1) + { + mapping[val]++; + notdone = true; + } + else + mapping[0]++; + } + if (notdone == false) + break; + + for (int i = 1; i < 10; i++) + mapping[i] += mapping[i - 1]; + + for (int i = n - 1; i >= 0; i--) + { + int number = idatacpy[i]; + int digit = getDigit(number, sbit); + int mapidx = digit == -1 ? 0 : digit; + mapping[mapidx] -= 1; + int index = mapping[mapidx]; + odata[index] = number; + } + + memcpy(idatacpy, odata, sizeof(int)*n); + sbit += 1; + } +} + void radixGPU(int n, int *odata, const int *idata, gputesttype testtype) { + // TODO + //printf("TODO\n"); + + dim3 blocks((n + blockSize - 1) / blockSize); + + int* dev_decmapping; + int* dev_idata; + cudaMalloc((void**)&dev_decmapping, sizeof(int) * n); + cudaMalloc((void**)&dev_idata, sizeof(int) * n); + cudaMemset(dev_decmapping, 0, sizeof(int) * n); + cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); + + int* idatacpy = new int[n]; + int* decmapping = new int[n]; + int* deccount = new int[10]; + int* decscan = new int[10]; + memcpy(idatacpy, idata, sizeof(int) * n); + memset(decmapping, 0, sizeof(int) * n); + + memset(odata, 0, sizeof(int)*n); + + + findMaxGPU(n, odata, idata); + int maxnum = odata[n - 1]; + + memset(odata, 0, sizeof(int)*n); + + int maxbit = maxnum > 0 ? (int)log10((double)maxnum) + 1 : 1; + + for (int sbit = 1; sbit <= maxbit; sbit++) + { + + memset(deccount, 0, sizeof(int) * 10); + memset(decscan, 0, sizeof(int) * 10); + + kernDecimalsMap << > >(n, sbit, dev_decmapping, dev_idata); + cudaMemcpy(decmapping, dev_decmapping, sizeof(int)*n, cudaMemcpyDeviceToHost); + for (int i = 0; i < n; i++) + deccount[decmapping[i]]++; + + + if (testtype == 0) + CPU::scan(10, decscan, deccount); + else if (testtype == 1) + Naive::scan(10, decscan, deccount); + else if (testtype == 2) + Thrust::scan(10, decscan, deccount); + + + exc2inc(10, deccount, decscan); + + + for (int i = n - 1; i >= 0; i--) + { + int number = idatacpy[i]; + int digit = getDigit(number, sbit); + int mapidx = digit < 0 ? 0 : digit; + deccount[mapidx] -= 1; + int index = deccount[mapidx]; + if (index>=0) + odata[index] = number; + } + + memcpy(idatacpy, odata, sizeof(int) * n); + + } + + memcpy(idatacpy, odata, sizeof(int) * n); + + cudaFree(dev_decmapping); + cudaFree(dev_idata); + + delete[] decmapping; + delete[] deccount; + delete[] decscan; + delete[] idatacpy; + } +} +} diff --git a/stream_compaction/radix.h b/stream_compaction/radix.h new file mode 100644 index 0000000..5f65e70 --- /dev/null +++ b/stream_compaction/radix.h @@ -0,0 +1,11 @@ +#pragma once + + +namespace StreamCompaction { +namespace Radix { + enum gputesttype { CPU, NAIVE, THRUST }; + + void radixCPU(int n, int *odata, const int *idata); + void radixGPU(int n, int *odata, const int *idata, gputesttype testtype); +} +} diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index d8dbb32..1939199 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -16,6 +16,18 @@ void scan(int n, int *odata, const int *idata) { // TODO use `thrust::exclusive_scan` // example: for device_vectors dv_in and dv_out: // thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + + //thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + + + thrust::host_vector dv_in(idata, idata + n); + thrust::host_vector dv_out(odata, odata + n); + + thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + + //odata = &(dv_out.front()); + for (int i = 0; i < n; i++) + odata[i] = dv_out[i]; } } From 2db316a91395ff40ed1ecb266724ddee29567082 Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 11:32:53 -0400 Subject: [PATCH 02/10] first draft --- README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2d1e2a7..e853565 100644 --- a/README.md +++ b/README.md @@ -73,8 +73,7 @@ powers of 2 which are part of the test. increment gave the following results: - - +``` + +* Large scale results: +![largescale](./images/bench1.png) + +* Small scale results: +![largescale](./images/bench2.png) + + +The significance is obvious between the CPU and GPU +implementations. When looking at small arrays, the +CPU seems to take an interesting advantage. However +on large arrays, the CPU implementations scale very +poorly, hence the need to have 2 graph scales. +Radix sort suffers particularly when running on the +CPU. One pattern that emerges is that the naive +and efficient methods scale logarithmically. +The efficient version was a fraction slower and that +is due to interrupts between the up and downscan. +Every time upscan is called, memory has to be +allocated and copied, the same happens with downscan +This is shown in the last figure. Despite that, +the loss is minumal. +Thrust scan does well and scales linearly albeit not +as good as the naive and efficient methods. +One thing that was interesting to note is that radix +benefitted more from the thrust scan than the other +GPU implementations. Again possibly due to the +multiple GPU functions. The max number function is +run on the GPU and memory is copied back and forth. +One bottleneck that manifests itself in the graph +below is from the kernDecimalsMap function. +Not enough resources are used during this function +which created a bottleneck that is minimal but not +desired. About 40% og the GPU is not used. +This is very obvious when looking at the following +timeline and the kernDecimalsMap function: +* Cuda memory calls frequency: +![timeline](memoryswapping.png) + + +* DecimalsMap bottleneck: +![timeline](bottleneck.png) From 9bd46f3c54d9b1210aec7e90a616a81a1023b063 Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 11:40:44 -0400 Subject: [PATCH 03/10] fixed formatting --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e853565..cbfa761 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ for stream compaction. There are 2 types of arrays to consider. Powers of 2 and non powers of 2 which are part of the test. -** Scan + * ## Scan * The first method used is on the CPU where all elements are added using a for loop. This works very well on small arrays. @@ -37,7 +37,7 @@ powers of 2 which are part of the test. * Thrust scan uses CUDA's thrust exclusive function which is built in the CUDA library. -** Stream Compaction + * ## Stream Compaction * The first implementation is on the CPU where a for loop looks for values greater than 0 and adds them to the new array while incrementing the count when a non zero value is found. @@ -52,10 +52,10 @@ powers of 2 which are part of the test. present wich will result in a compact array with no zeros. -** Thrust + * ## Thrust * The implementation is mentionned in the Scan section. -** Radix sort + * ## Radix sort * There are 2 versions of the Radix sort. This first one runs on the CPU using a CPU version on scan. @@ -68,7 +68,7 @@ powers of 2 which are part of the test. There are multiple scan functions that can be used, a few are benchmarked. -** Benchmarks + * ## Benchmarks * Running benhmarks on a range of 256 to 65536 with a power of 4 increment gave the following results: @@ -299,11 +299,11 @@ desired. About 40% og the GPU is not used. This is very obvious when looking at the following timeline and the kernDecimalsMap function: * Cuda memory calls frequency: -![timeline](memoryswapping.png) +![timeline](../memoryswapping.png) * DecimalsMap bottleneck: -![timeline](bottleneck.png) +![timeline](../bottleneck.png) From bec561f8f8b85b160d1d7eace772c3d4349bd054 Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 11:41:40 -0400 Subject: [PATCH 04/10] fixed formatting take 2 --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cbfa761..794ed61 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ for stream compaction. There are 2 types of arrays to consider. Powers of 2 and non powers of 2 which are part of the test. - * ## Scan + * Scan * The first method used is on the CPU where all elements are added using a for loop. This works very well on small arrays. @@ -37,7 +37,7 @@ powers of 2 which are part of the test. * Thrust scan uses CUDA's thrust exclusive function which is built in the CUDA library. - * ## Stream Compaction + * Stream Compaction * The first implementation is on the CPU where a for loop looks for values greater than 0 and adds them to the new array while incrementing the count when a non zero value is found. @@ -52,10 +52,10 @@ powers of 2 which are part of the test. present wich will result in a compact array with no zeros. - * ## Thrust + * Thrust * The implementation is mentionned in the Scan section. - * ## Radix sort + * Radix sort * There are 2 versions of the Radix sort. This first one runs on the CPU using a CPU version on scan. @@ -68,7 +68,7 @@ powers of 2 which are part of the test. There are multiple scan functions that can be used, a few are benchmarked. - * ## Benchmarks + * Benchmarks * Running benhmarks on a range of 256 to 65536 with a power of 4 increment gave the following results: From 5bcb9d76e35ed22683b7f981ee659d0ab127011a Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 11:43:27 -0400 Subject: [PATCH 05/10] fixed image paths --- README.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 794ed61..dbdf923 100644 --- a/README.md +++ b/README.md @@ -17,49 +17,49 @@ for stream compaction. There are 2 types of arrays to consider. Powers of 2 and non powers of 2 which are part of the test. - * Scan -* The first method used is on the CPU where all elements are +* Scan + * The first method used is on the CPU where all elements are added using a for loop. This works very well on small arrays. -* The second method consists of using the GPU to compute the + * The second method consists of using the GPU to compute the scan result. This is a naive implementation where the first iteration copies elements left to right (exclusive), then 2^(i+1) for a depth of log2(n). Each depth skips 2^(d-1). This is faster than the CPU version for large arrays. -* The third method uses a double sweep. An upsweep, followed by + * The third method uses a double sweep. An upsweep, followed by a downsweep using a balanced tree form. Each sweeps takes log2(n-1) iterations but the calls on the GPU are only taking place on multiples of 2^(d+1). This should be fast because there are only O(n) adds for the up sweep and O(n) adds and O(n) swaps. -* Thrust scan uses CUDA's thrust exclusive function which is + * Thrust scan uses CUDA's thrust exclusive function which is built in the CUDA library. - * Stream Compaction -* The first implementation is on the CPU where a for loop looks +* Stream Compaction + * The first implementation is on the CPU where a for loop looks for values greater than 0 and adds them to the new array while incrementing the count when a non zero value is found. -* The second implementation uses the CPU but also uses the scan + * The second implementation uses the CPU but also uses the scan function to look up indices. -* The third implementation uses the GPU to generate a [0 1] + * The third implementation uses the GPU to generate a [0 1] mapped array which is then run into the scan GPU function and used as an index lookup for placing the elements. After the scan function all non zero elements will be present wich will result in a compact array with no zeros. - * Thrust -* The implementation is mentionned in the Scan section. +* Thrust + * The implementation is mentionned in the Scan section. - * Radix sort -* There are 2 versions of the Radix sort. This first one runs +* Radix sort + * There are 2 versions of the Radix sort. This first one runs on the CPU using a CPU version on scan. -* The second version uses the GPU to run the scan. It also uses + * The second version uses the GPU to run the scan. It also uses a GPU function to determine the max number in the array. This is used to determine how many loops are needed before we reach the maximum amount of decimals in the maximum number. @@ -68,8 +68,8 @@ powers of 2 which are part of the test. There are multiple scan functions that can be used, a few are benchmarked. - * Benchmarks -* Running benhmarks on a range of 256 to 65536 with a power of 4 +* Benchmarks + * Running benhmarks on a range of 256 to 65536 with a power of 4 increment gave the following results: @@ -264,10 +264,10 @@ Press any key to continue . . . ``` * Large scale results: -![largescale](./images/bench1.png) +![largescale](../images/bench1.png) * Small scale results: -![largescale](./images/bench2.png) +![largescale](../images/bench2.png) The significance is obvious between the CPU and GPU From 75403fa61a6ad9d992eb8021e2637b3a6357934a Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 11:44:24 -0400 Subject: [PATCH 06/10] fixed image paths --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index dbdf923..0ff9675 100644 --- a/README.md +++ b/README.md @@ -264,10 +264,10 @@ Press any key to continue . . . ``` * Large scale results: -![largescale](../images/bench1.png) +![largescale](./images/bench1.png) * Small scale results: -![largescale](../images/bench2.png) +![largescale](./images/bench2.png) The significance is obvious between the CPU and GPU @@ -299,11 +299,11 @@ desired. About 40% og the GPU is not used. This is very obvious when looking at the following timeline and the kernDecimalsMap function: * Cuda memory calls frequency: -![timeline](../memoryswapping.png) +![timeline](./images/memoryswapping.png) * DecimalsMap bottleneck: -![timeline](../bottleneck.png) +![timeline](./images/bottleneck.png) From e0bd127b6e233e7e7de3a4766971c071e2eea434 Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 14:18:59 -0400 Subject: [PATCH 07/10] updated test results and readme --- README.md | 413 +++++++++++++++++++++++++++---- src/main.cpp | 5 +- stream_compaction/efficient.cu | 430 ++++++++++++++++++--------------- stream_compaction/naive.cu | 2 +- 4 files changed, 606 insertions(+), 244 deletions(-) diff --git a/README.md b/README.md index 0ff9675..0409d95 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ powers of 2 which are part of the test. ``` + **************** ** SCAN TESTS ** **************** @@ -84,9 +85,11 @@ powers of 2 which are part of the test. [ 0 38 57 95 132 137 184 199 234 234 246 249 249 ... 6146 6190 ] passed ==== naive scan, power-of-two ==== + [ 0 38 57 95 132 137 184 199 234 234 246 249 249 ... 6203 6259 ] a[129] = 3191, b[129] = 3221 FAIL VALUE ==== naive scan, non-power-of-two ==== + [ 0 38 57 95 132 137 184 199 234 234 246 249 249 ... 0 0 ] passed ==== work-efficient scan, power-of-two ==== passed @@ -123,9 +126,11 @@ powers of 2 which are part of the test. [ 2 3 2 1 3 1 1 1 2 1 2 1 1 ... 2 1 ] passed ==== work-efficient compact, power-of-two ==== - passed + expected 190 elements, got 0 + FAIL COUNT ==== work-efficient compact, non-power-of-two ==== - passed + expected 189 elements, got -1 + FAIL COUNT **************** ** BENCHMARKS ** @@ -137,25 +142,103 @@ powers of 2 which are part of the test. ==== cpu scan, power-of-two ==== Time: 0 microSeconds ==== naive scan, power-of-two ==== -Time: 146 microSeconds +Time: 580 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 166 microSeconds +Time: 628 microSeconds ==== thrust scan, power-of-two ==== +Time: 1 microSeconds +==== cpu radix sort ==== +Time: 34 microSeconds +==== gpu radix sort cpu scan ==== +Time: 925 microSeconds +==== gpu radix sort naive scan ==== +Time: 1093 microSeconds +==== gpu radix sort thrust scan ==== +Time: 903 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 0 microSeconds +==== cpu compact with scan ==== +Time: 1 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 729 microSeconds + +** SIZE = 512 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 11 0 ] +==== cpu scan, power-of-two ==== Time: 0 microSeconds +==== naive scan, power-of-two ==== +Time: 540 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 578 microSeconds +==== thrust scan, power-of-two ==== +Time: 1 microSeconds ==== cpu radix sort ==== -Time: 36 microSeconds +Time: 66 microSeconds ==== gpu radix sort cpu scan ==== -Time: 597 microSeconds +Time: 1593 microSeconds ==== gpu radix sort naive scan ==== -Time: 866 microSeconds +Time: 2907 microSeconds ==== gpu radix sort thrust scan ==== -Time: 436 microSeconds +Time: 1690 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 0 microSeconds ==== cpu compact with scan ==== +Time: 3 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 718 microSeconds + +** SIZE = 1024 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 40 0 ] +==== cpu scan, power-of-two ==== +Time: 1 microSeconds +==== naive scan, power-of-two ==== +Time: 550 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 527 microSeconds +==== thrust scan, power-of-two ==== +Time: 8 microSeconds +==== cpu radix sort ==== +Time: 137 microSeconds +==== gpu radix sort cpu scan ==== +Time: 2025 microSeconds +==== gpu radix sort naive scan ==== +Time: 2654 microSeconds +==== gpu radix sort thrust scan ==== +Time: 1655 microSeconds +==== cpu compact without scan, power-of-two ==== Time: 1 microSeconds +==== cpu compact with scan ==== +Time: 5 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 775 microSeconds + +** SIZE = 2048 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 32 0 ] +==== cpu scan, power-of-two ==== +Time: 2 microSeconds +==== naive scan, power-of-two ==== +Time: 579 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 612 microSeconds +==== thrust scan, power-of-two ==== +Time: 2 microSeconds +==== cpu radix sort ==== +Time: 264 microSeconds +==== gpu radix sort cpu scan ==== +Time: 2095 microSeconds +==== gpu radix sort naive scan ==== +Time: 2749 microSeconds +==== gpu radix sort thrust scan ==== +Time: 1875 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 3 microSeconds +==== cpu compact with scan ==== +Time: 10 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 637 microSeconds +Time: 734 microSeconds ** SIZE = 4096 ** **************** @@ -163,25 +246,103 @@ Time: 637 microSeconds ==== cpu scan, power-of-two ==== Time: 5 microSeconds ==== naive scan, power-of-two ==== -Time: 767 microSeconds +Time: 538 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 609 microSeconds +Time: 574 microSeconds ==== thrust scan, power-of-two ==== -Time: 7 microSeconds +Time: 6 microSeconds ==== cpu radix sort ==== -Time: 531 microSeconds +Time: 533 microSeconds ==== gpu radix sort cpu scan ==== -Time: 1268 microSeconds +Time: 2041 microSeconds ==== gpu radix sort naive scan ==== -Time: 1700 microSeconds +Time: 2819 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1143 microSeconds +Time: 1928 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 7 microSeconds ==== cpu compact with scan ==== Time: 23 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 539 microSeconds +Time: 781 microSeconds + +** SIZE = 8192 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 4 0 ] +==== cpu scan, power-of-two ==== +Time: 11 microSeconds +==== naive scan, power-of-two ==== +Time: 555 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 631 microSeconds +==== thrust scan, power-of-two ==== +Time: 11 microSeconds +==== cpu radix sort ==== +Time: 1062 microSeconds +==== gpu radix sort cpu scan ==== +Time: 2257 microSeconds +==== gpu radix sort naive scan ==== +Time: 3114 microSeconds +==== gpu radix sort thrust scan ==== +Time: 2471 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 16 microSeconds +==== cpu compact with scan ==== +Time: 47 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 825 microSeconds + +** SIZE = 16384 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 26 0 ] +==== cpu scan, power-of-two ==== +Time: 23 microSeconds +==== naive scan, power-of-two ==== +Time: 554 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 619 microSeconds +==== thrust scan, power-of-two ==== +Time: 21 microSeconds +==== cpu radix sort ==== +Time: 2181 microSeconds +==== gpu radix sort cpu scan ==== +Time: 3084 microSeconds +==== gpu radix sort naive scan ==== +Time: 3642 microSeconds +==== gpu radix sort thrust scan ==== +Time: 2595 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 34 microSeconds +==== cpu compact with scan ==== +Time: 97 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 866 microSeconds + +** SIZE = 32768 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 7 0 ] +==== cpu scan, power-of-two ==== +Time: 49 microSeconds +==== naive scan, power-of-two ==== +Time: 612 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 895 microSeconds +==== thrust scan, power-of-two ==== +Time: 44 microSeconds +==== cpu radix sort ==== +Time: 4240 microSeconds +==== gpu radix sort cpu scan ==== +Time: 4343 microSeconds +==== gpu radix sort naive scan ==== +Time: 5006 microSeconds +==== gpu radix sort thrust scan ==== +Time: 3910 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 69 microSeconds +==== cpu compact with scan ==== +Time: 196 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 1046 microSeconds ** SIZE = 65536 ** **************** @@ -189,77 +350,233 @@ Time: 539 microSeconds ==== cpu scan, power-of-two ==== Time: 94 microSeconds ==== naive scan, power-of-two ==== -Time: 1072 microSeconds +Time: 704 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 917 microSeconds +==== thrust scan, power-of-two ==== +Time: 90 microSeconds +==== cpu radix sort ==== +Time: 8625 microSeconds +==== gpu radix sort cpu scan ==== +Time: 6799 microSeconds +==== gpu radix sort naive scan ==== +Time: 7905 microSeconds +==== gpu radix sort thrust scan ==== +Time: 6677 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 140 microSeconds +==== cpu compact with scan ==== +Time: 397 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 1730 microSeconds + +** SIZE = 131072 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 10 0 ] +==== cpu scan, power-of-two ==== +Time: 188 microSeconds +==== naive scan, power-of-two ==== +Time: 885 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 1259 microSeconds +==== thrust scan, power-of-two ==== +Time: 432 microSeconds +==== cpu radix sort ==== +Time: 17407 microSeconds +==== gpu radix sort cpu scan ==== +Time: 12398 microSeconds +==== gpu radix sort naive scan ==== +Time: 14302 microSeconds +==== gpu radix sort thrust scan ==== +Time: 11650 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 280 microSeconds +==== cpu compact with scan ==== +Time: 1034 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 1204 microSeconds + +** SIZE = 262144 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 42 0 ] +==== cpu scan, power-of-two ==== +Time: 738 microSeconds +==== naive scan, power-of-two ==== +Time: 15 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 833 microSeconds +Time: 25 microSeconds ==== thrust scan, power-of-two ==== -Time: 102 microSeconds +Time: 766 microSeconds ==== cpu radix sort ==== -Time: 8615 microSeconds +Time: 35010 microSeconds ==== gpu radix sort cpu scan ==== -Time: 5620 microSeconds +Time: 2323 microSeconds ==== gpu radix sort naive scan ==== -Time: 5810 microSeconds +Time: 2052 microSeconds ==== gpu radix sort thrust scan ==== -Time: 5537 microSeconds +Time: 1959 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 145 microSeconds +Time: 590 microSeconds ==== cpu compact with scan ==== -Time: 413 microSeconds +Time: 2427 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1451 microSeconds +Time: 523 microSeconds + +** SIZE = 524288 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 42 0 ] +==== cpu scan, power-of-two ==== +Time: 1415 microSeconds +==== naive scan, power-of-two ==== +Time: 16 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 24 microSeconds +==== thrust scan, power-of-two ==== +Time: 1762 microSeconds +==== cpu radix sort ==== +Time: 69752 microSeconds +==== gpu radix sort cpu scan ==== +Time: 4077 microSeconds +==== gpu radix sort naive scan ==== +Time: 4009 microSeconds +==== gpu radix sort thrust scan ==== +Time: 4086 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 1143 microSeconds +==== cpu compact with scan ==== +Time: 4837 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 1044 microSeconds ** SIZE = 1048576 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 6 0 ] ==== cpu scan, power-of-two ==== -Time: 1521 microSeconds +Time: 2821 microSeconds ==== naive scan, power-of-two ==== Time: 17 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 27 microSeconds +Time: 26 microSeconds +==== thrust scan, power-of-two ==== +Time: 3631 microSeconds +==== cpu radix sort ==== +Time: 139054 microSeconds +==== gpu radix sort cpu scan ==== +Time: 8441 microSeconds +==== gpu radix sort naive scan ==== +Time: 8830 microSeconds +==== gpu radix sort thrust scan ==== +Time: 9037 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 2301 microSeconds +==== cpu compact with scan ==== +Time: 8768 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 2365 microSeconds + +** SIZE = 2097152 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 2 0 ] +==== cpu scan, power-of-two ==== +Time: 4628 microSeconds +==== naive scan, power-of-two ==== +Time: 20 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 31 microSeconds +==== thrust scan, power-of-two ==== +Time: 7244 microSeconds +==== cpu radix sort ==== +Time: 277141 microSeconds +==== gpu radix sort cpu scan ==== +Time: 17729 microSeconds +==== gpu radix sort naive scan ==== +Time: 17591 microSeconds +==== gpu radix sort thrust scan ==== +Time: 17553 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 4684 microSeconds +==== cpu compact with scan ==== +Time: 17774 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 4784 microSeconds + +** SIZE = 4194304 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 26 0 ] +==== cpu scan, power-of-two ==== +Time: 6579 microSeconds +==== naive scan, power-of-two ==== +Time: 18 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 30 microSeconds +==== thrust scan, power-of-two ==== +Time: 15121 microSeconds +==== cpu radix sort ==== +Time: 555419 microSeconds +==== gpu radix sort cpu scan ==== +Time: 35741 microSeconds +==== gpu radix sort naive scan ==== +Time: 35411 microSeconds +==== gpu radix sort thrust scan ==== +Time: 35747 microSeconds +==== cpu compact without scan, power-of-two ==== +Time: 9555 microSeconds +==== cpu compact with scan ==== +Time: 35407 microSeconds +==== work-efficient compact, power-of-two ==== +Time: 9463 microSeconds + +** SIZE = 8388608 ** +**************** + [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 10 0 ] +==== cpu scan, power-of-two ==== +Time: 13667 microSeconds +==== naive scan, power-of-two ==== +Time: 18 microSeconds +==== work-efficient scan, power-of-two ==== +Time: 29 microSeconds ==== thrust scan, power-of-two ==== -Time: 3638 microSeconds +Time: 31478 microSeconds ==== cpu radix sort ==== -Time: 137808 microSeconds +Time: 1111762 microSeconds ==== gpu radix sort cpu scan ==== -Time: 8723 microSeconds +Time: 71012 microSeconds ==== gpu radix sort naive scan ==== -Time: 8787 microSeconds +Time: 70982 microSeconds ==== gpu radix sort thrust scan ==== -Time: 8568 microSeconds +Time: 71596 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 2321 microSeconds +Time: 18627 microSeconds ==== cpu compact with scan ==== -Time: 10280 microSeconds +Time: 69722 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 2295 microSeconds +Time: 18604 microSeconds ** SIZE = 16777216 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 42 0 ] ==== cpu scan, power-of-two ==== -Time: 24411 microSeconds +Time: 25969 microSeconds ==== naive scan, power-of-two ==== -Time: 19 microSeconds +Time: 20 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 32 microSeconds +Time: 31 microSeconds ==== thrust scan, power-of-two ==== -Time: 64703 microSeconds +Time: 61397 microSeconds ==== cpu radix sort ==== -Time: 2208906 microSeconds +Time: 2213557 microSeconds ==== gpu radix sort cpu scan ==== -Time: 145916 microSeconds +Time: 142111 microSeconds ==== gpu radix sort naive scan ==== -Time: 145302 microSeconds +Time: 142175 microSeconds ==== gpu radix sort thrust scan ==== -Time: 144644 microSeconds +Time: 142549 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 37473 microSeconds +Time: 38071 microSeconds ==== cpu compact with scan ==== -Time: 167007 microSeconds +Time: 140700 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 39963 microSeconds +Time: 38334 microSeconds Press any key to continue . . . ``` diff --git a/src/main.cpp b/src/main.cpp index f7cd7a4..b157977 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -44,6 +44,7 @@ int main(int argc, char* argv[]) { printDesc("cpu scan, power-of-two"); StreamCompaction::CPU::scan(SIZE, b, a); printArray(SIZE, b, true); + zeroArray(SIZE, c); printDesc("cpu scan, non-power-of-two"); @@ -54,13 +55,13 @@ int main(int argc, char* argv[]) { zeroArray(SIZE, c); printDesc("naive scan, power-of-two"); StreamCompaction::Naive::scan(SIZE, c, a); - //printArray(SIZE, c, true); + printArray(SIZE, c, true); printCmpResult(SIZE, b, c); zeroArray(SIZE, c); printDesc("naive scan, non-power-of-two"); StreamCompaction::Naive::scan(NPOT, c, a); - //printArray(SIZE, c, true); + printArray(SIZE, c, true); printCmpResult(NPOT, b, c); zeroArray(SIZE, c); diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index f1aa594..87addd3 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -4,78 +4,78 @@ #include "efficient.h" namespace StreamCompaction { -namespace Efficient { + namespace Efficient { -// TODO: __global__ + // TODO: __global__ #define blockSize 128 - int* dev_idata; - int* dev_odata; - int* dev_bools; - int* dev_indices; - int* dev_scandata; - - - __global__ void kernupsweep(int n, int d, int* dev_scandata) - { - int k = (blockIdx.x * blockDim.x) + threadIdx.x; - if (k >= n) - return; - - if (k % (1 << (d + 1)) == 0) - dev_scandata[k + (1 << (d + 1)) - 1] += dev_scandata[k + (1 << d) - 1];// +dev_scandata[k + (1 << (d + 1)) - 1]; - } + //int* dev_idata; + //int* dev_odata; + //int* dev_bools; + //int* dev_indices; + //int* dev_scandata; - __global__ void kerndownsweep(int n, int d, int* dev_scandata) - { - int k = (blockIdx.x * blockDim.x) + threadIdx.x; - if (k >= n) - return; - if (k % (1<<(d+1)) == 0) + __global__ void kernupsweep(int n, int d, int* dev_scandata) { - int t = dev_scandata[k + (1<= n) + return; - __global__ void kernscan(int n, int d, int* dev_scandata, int* dev_scandata2) - { - int k = (blockIdx.x * blockDim.x) + threadIdx.x; - if (k >= n) - return; + if (k % (1 << (d + 1)) == 0) + dev_scandata[k + (1 << (d + 1)) - 1] += dev_scandata[k + (1 << d) - 1];// +dev_scandata[k + (1 << (d + 1)) - 1]; + } - if (k >= (1<<(d-1))) - dev_scandata[k] = dev_scandata2[k] + dev_scandata2[k - (1<<(d-1))]; - } + __global__ void kerndownsweep(int n, int d, int* dev_scandata) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n) + return; + + if (k % (1 << (d + 1)) == 0) + { + int t = dev_scandata[k + (1 << d) - 1]; + dev_scandata[k + (1 << d) - 1] = dev_scandata[k + (1 << (d + 1)) - 1]; + dev_scandata[k + (1 << (d + 1)) - 1] = t + dev_scandata[k + (1 << (d + 1)) - 1]; + } + } - __global__ void kerninc2exc(int n, int* dev_scandata, int* dev_scandata2) - { - int k = (blockIdx.x * blockDim.x) + threadIdx.x; - if (k >= n) - return; + __global__ void kernscan(int n, int d, int* dev_scandata, int* dev_scandata2) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n) + return; - if (k == 0) - dev_scandata[0] = 0; - else - dev_scandata[k] = dev_scandata2[k - 1]; - } + if (k >= (1 << (d - 1))) + dev_scandata[k] = dev_scandata2[k] + dev_scandata2[k - (1 << (d - 1))]; + } + __global__ void kerninc2exc(int n, int* dev_scandata, int* dev_scandata2) + { + int k = (blockIdx.x * blockDim.x) + threadIdx.x; + if (k >= n) + return; + + if (k == 0) + dev_scandata[0] = 0; + else + dev_scandata[k] = dev_scandata2[k - 1]; + } - void setup(int n, const int* idata) - { + /* + void setup(int n, const int* idata) + { cudaMalloc((void**)&dev_scandata, n * sizeof(int)); cudaMemcpy(dev_scandata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); - } + } - void cleanup(void) - { + void cleanup(void) + { cudaFree(dev_scandata); - } + } - void setupcompact(int n, const int* idata) - { + void setupcompact(int n, const int* idata) + { cudaMalloc((void**)&dev_idata, n * sizeof(int)); cudaMalloc((void**)&dev_odata, n * sizeof(int)); cudaMalloc((void**)&dev_bools, n * sizeof(int)); @@ -85,156 +85,200 @@ namespace Efficient { cudaMemset(dev_bools, 0, sizeof(int) * n); cudaMemset(dev_indices, 0, sizeof(int) * n); cudaMemcpy(dev_scandata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); - } + } - void cleanupcompact(void) - { + void cleanupcompact(void) + { cudaFree(dev_idata); cudaFree(dev_odata); cudaFree(dev_bools); cudaFree(dev_indices); cudaFree(dev_scandata); - } - -/** - * Performs prefix-sum (aka scan) on idata, storing the result into odata. - */ -void scan(int n, int *odata, const int *idata) { - // TODO - //printf("TODO\n"); - - dim3 blocks((n + blockSize - 1) / blockSize); - - int nold = n; - - if (n % 2 == 0) - { - n = 1 << ilog2ceil(n); - setup(n, idata); - for (int d = 0; d <= ilog2ceil(n)-1; d++) - { - kernupsweep << > >(n, d, dev_scandata); } + */ - cudaMemset(dev_scandata+(n-1), 0, sizeof(int)); - for (int d = ilog2ceil(n); d>=0; d--) - { - kerndownsweep << > >(n, d, dev_scandata); - } - cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); - } - else - { - n = 1 << ilog2ceil(n); - setup(n, idata); - - for (int d = 0; d <= ilog2ceil(n) - 1; d++) - { - kernupsweep << > >(n, d, dev_scandata); - } + /** + * Performs prefix-sum (aka scan) on idata, storing the result into odata. + */ + void scan(int n, int *odata, const int *idata) { + // TODO + //printf("TODO\n"); + + dim3 blocks((n + blockSize - 1) / blockSize); + + int nold = n; + + if (n % 2 == 0) + { + n = 1 << ilog2ceil(n); + //setup(n, idata); + int* dev_scandata; + cudaMalloc((void**)&dev_scandata, n * sizeof(int)); + cudaMemcpy(dev_scandata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + + + for (int d = 0; d <= ilog2ceil(n) - 1; d++) + { + kernupsweep << > >(n, d, dev_scandata); + } + + cudaMemset(dev_scandata + (n - 1), 0, sizeof(int)); + for (int d = ilog2ceil(n); d >= 0; d--) + { + kerndownsweep << > >(n, d, dev_scandata); + } + cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); + + cudaFree(dev_scandata); + } + else + { + n = 1 << ilog2ceil(n); + //setup(n, idata); + int* dev_scandata; + cudaMalloc((void**)&dev_scandata, n * sizeof(int)); + cudaMemcpy(dev_scandata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + + for (int d = 0; d <= ilog2ceil(n) - 1; d++) + { + kernupsweep << > >(n, d, dev_scandata); + } + + cudaMemset(dev_scandata + (n - 1), 0, sizeof(int)); + for (int d = ilog2ceil(n); d >= 0; d--) + { + kerndownsweep << > >(n, d, dev_scandata); + } + cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaFree(dev_scandata); + } + + //cleanup(); - cudaMemset(dev_scandata+(n-1), 0, sizeof(int)); - for (int d = ilog2ceil(n); d >= 0; d--) - { - kerndownsweep << > >(n, d, dev_scandata); } - cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); - } - - cleanup(); - -} - -/** - * Performs stream compaction on idata, storing the result into odata. - * All zeroes are discarded. - * - * @param n The number of elements in idata. - * @param odata The array into which to store elements. - * @param idata The array of elements to compact. - * @returns The number of elements remaining after compaction. - */ -int compact(int n, int *odata, const int *idata) { - // TODO - - dim3 blocks((n + blockSize - 1) / blockSize); - int count = 0; - if (n % 2 == 0) - { - n = 1 << ilog2ceil(n); - - setupcompact(n, idata); - - int* bools = new int[n]; - int* indices = new int[n]; - memset(bools, 0, sizeof(int)*n); - memset(indices, 0, sizeof(int)*n); - cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); - cudaMemcpy(dev_odata, odata, sizeof(int)*n, cudaMemcpyHostToDevice); - - StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_scandata); - - scan(n, dev_indices, dev_bools); - cudaMemcpy(bools, dev_bools, sizeof(int) * n, cudaMemcpyDeviceToHost); - cudaMemcpy(indices, dev_indices, sizeof(int) * n, cudaMemcpyDeviceToHost); - - StreamCompaction::Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_indices); - - cudaMemcpy(odata, dev_odata, sizeof(int)*n, cudaMemcpyDeviceToHost); - - /* - printf("\n%-10s", "bools: "); for (int i = 0; i < 20; i++) - printf("%d ", bools[i]); - printf("\n%-10s", "scans: "); for (int i = 0; i < 20; i++) - printf("%d ", indices[i]); - printf("\n%-10s", "idata: "); for (int i = 0; i < 20; i++) - printf("%d ", idata[i]); - printf("\n%-10s", "odata: "); for (int i = 0; i < 20; i++) - printf("%d ", odata[i]); - printf("\n"); + /** + * Performs stream compaction on idata, storing the result into odata. + * All zeroes are discarded. + * + * @param n The number of elements in idata. + * @param odata The array into which to store elements. + * @param idata The array of elements to compact. + * @returns The number of elements remaining after compaction. */ + int compact(int n, int *odata, const int *idata) { + // TODO + + dim3 blocks((n + blockSize - 1) / blockSize); + int count = 0; + + if (n % 2 == 0) + { + n = 1 << ilog2ceil(n); + + //setupcompact(n, idata); + int* dev_idata; + int* dev_odata; + int* dev_bools; + int* dev_indices; + int* dev_scandata; + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMalloc((void**)&dev_bools, n * sizeof(int)); + cudaMalloc((void**)&dev_indices, n * sizeof(int)); + cudaMalloc((void**)&dev_scandata, n * sizeof(int)); + + + int* bools = new int[n]; + int* indices = new int[n]; + memset(bools, 0, sizeof(int)*n); + memset(indices, 0, sizeof(int)*n); + cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_odata, odata, sizeof(int)*n, cudaMemcpyHostToDevice); + + StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_scandata); + + scan(n, dev_indices, dev_bools); + cudaMemcpy(bools, dev_bools, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaMemcpy(indices, dev_indices, sizeof(int) * n, cudaMemcpyDeviceToHost); + + StreamCompaction::Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_indices); + + cudaMemcpy(odata, dev_odata, sizeof(int)*n, cudaMemcpyDeviceToHost); + + /* + printf("\n%-10s", "bools: "); for (int i = 0; i < 20; i++) + printf("%d ", bools[i]); + printf("\n%-10s", "scans: "); for (int i = 0; i < 20; i++) + printf("%d ", indices[i]); + printf("\n%-10s", "idata: "); for (int i = 0; i < 20; i++) + printf("%d ", idata[i]); + printf("\n%-10s", "odata: "); for (int i = 0; i < 20; i++) + printf("%d ", odata[i]); + printf("\n"); + */ + + count = indices[n - 1] + bools[n - 1]; + + //cleanupcompact(); + cudaFree(dev_idata); + cudaFree(dev_odata); + cudaFree(dev_bools); + cudaFree(dev_indices); + cudaFree(dev_scandata); + + delete[] bools; + delete[] indices; + } + else + { + n = 1 << ilog2ceil(n); + + //setupcompact(n, idata); + int* dev_idata; + int* dev_odata; + int* dev_bools; + int* dev_indices; + int* dev_scandata; + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMalloc((void**)&dev_bools, n * sizeof(int)); + cudaMalloc((void**)&dev_indices, n * sizeof(int)); + cudaMalloc((void**)&dev_scandata, n * sizeof(int)); + + + int* bools = new int[n]; + int* indices = new int[n]; + memset(bools, 0, sizeof(int)*n); + memset(indices, 0, sizeof(int)*n); + cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_odata, odata, sizeof(int)*n, cudaMemcpyHostToDevice); + + StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_scandata); + + scan(n, dev_indices, dev_bools); + cudaMemcpy(bools, dev_bools, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaMemcpy(indices, dev_indices, sizeof(int) * n, cudaMemcpyDeviceToHost); + + StreamCompaction::Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_indices); + + cudaMemcpy(odata, dev_odata, sizeof(int)*n, cudaMemcpyDeviceToHost); + + count = indices[n - 1] + bools[n - 1] - 1; + + //cleanupcompact(); + cudaFree(dev_idata); + cudaFree(dev_odata); + cudaFree(dev_bools); + cudaFree(dev_indices); + cudaFree(dev_scandata); + + delete[] bools; + delete[] indices; + } + + return count; + } - count = indices[n - 1] +bools[n - 1]; - - cleanupcompact(); - - delete[] bools; - delete[] indices; - } - else - { - n = 1 << ilog2ceil(n); - - setupcompact(n, idata); - - int* bools = new int[n]; - int* indices = new int[n]; - memset(bools, 0, sizeof(int)*n); - memset(indices, 0, sizeof(int)*n); - cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); - cudaMemcpy(dev_odata, odata, sizeof(int)*n, cudaMemcpyHostToDevice); - - StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_scandata); - - scan(n, dev_indices, dev_bools); - cudaMemcpy(bools, dev_bools, sizeof(int) * n, cudaMemcpyDeviceToHost); - cudaMemcpy(indices, dev_indices, sizeof(int) * n, cudaMemcpyDeviceToHost); - - StreamCompaction::Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_indices); - - cudaMemcpy(odata, dev_odata, sizeof(int)*n, cudaMemcpyDeviceToHost); - - count = indices[n - 1] +bools[n - 1] - 1; - - cleanupcompact(); - - delete[] bools; - delete[] indices; } - - return count; -} - -} } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 5e1b5f8..0781c41 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -61,7 +61,7 @@ namespace Naive { for (int d = 1; d <= ilog2ceil(n); d++) { kernscan << > >(n, d, dev_scandata, dev_scandata2); - count++; + count++; } } else From a1499b891eda0c08f9438a9abef09d05ddfbd266 Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 14:27:23 -0400 Subject: [PATCH 08/10] updated readme results --- README.md | 327 +++++++++++++++++++++++++++--------------------------- 1 file changed, 163 insertions(+), 164 deletions(-) diff --git a/README.md b/README.md index 0409d95..40103a5 100644 --- a/README.md +++ b/README.md @@ -85,9 +85,8 @@ powers of 2 which are part of the test. [ 0 38 57 95 132 137 184 199 234 234 246 249 249 ... 6146 6190 ] passed ==== naive scan, power-of-two ==== - [ 0 38 57 95 132 137 184 199 234 234 246 249 249 ... 6203 6259 ] - a[129] = 3191, b[129] = 3221 - FAIL VALUE + [ 0 38 57 95 132 137 184 199 234 234 246 249 249 ... 6203 6229 ] + passed ==== naive scan, non-power-of-two ==== [ 0 38 57 95 132 137 184 199 234 234 246 249 249 ... 0 0 ] passed @@ -142,25 +141,25 @@ powers of 2 which are part of the test. ==== cpu scan, power-of-two ==== Time: 0 microSeconds ==== naive scan, power-of-two ==== -Time: 580 microSeconds +Time: 549 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 628 microSeconds +Time: 650 microSeconds ==== thrust scan, power-of-two ==== Time: 1 microSeconds ==== cpu radix sort ==== -Time: 34 microSeconds +Time: 35 microSeconds ==== gpu radix sort cpu scan ==== -Time: 925 microSeconds +Time: 1301 microSeconds ==== gpu radix sort naive scan ==== -Time: 1093 microSeconds +Time: 1116 microSeconds ==== gpu radix sort thrust scan ==== -Time: 903 microSeconds +Time: 959 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 0 microSeconds ==== cpu compact with scan ==== Time: 1 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 729 microSeconds +Time: 823 microSeconds ** SIZE = 512 ** **************** @@ -168,25 +167,25 @@ Time: 729 microSeconds ==== cpu scan, power-of-two ==== Time: 0 microSeconds ==== naive scan, power-of-two ==== -Time: 540 microSeconds +Time: 663 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 578 microSeconds +Time: 624 microSeconds ==== thrust scan, power-of-two ==== Time: 1 microSeconds ==== cpu radix sort ==== Time: 66 microSeconds ==== gpu radix sort cpu scan ==== -Time: 1593 microSeconds +Time: 1936 microSeconds ==== gpu radix sort naive scan ==== -Time: 2907 microSeconds +Time: 2750 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1690 microSeconds +Time: 1743 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 0 microSeconds ==== cpu compact with scan ==== Time: 3 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 718 microSeconds +Time: 732 microSeconds ** SIZE = 1024 ** **************** @@ -194,25 +193,25 @@ Time: 718 microSeconds ==== cpu scan, power-of-two ==== Time: 1 microSeconds ==== naive scan, power-of-two ==== -Time: 550 microSeconds +Time: 590 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 527 microSeconds +Time: 591 microSeconds ==== thrust scan, power-of-two ==== -Time: 8 microSeconds +Time: 7 microSeconds ==== cpu radix sort ==== -Time: 137 microSeconds +Time: 142 microSeconds ==== gpu radix sort cpu scan ==== -Time: 2025 microSeconds +Time: 1857 microSeconds ==== gpu radix sort naive scan ==== -Time: 2654 microSeconds +Time: 2996 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1655 microSeconds +Time: 1893 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 1 microSeconds ==== cpu compact with scan ==== Time: 5 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 775 microSeconds +Time: 839 microSeconds ** SIZE = 2048 ** **************** @@ -220,25 +219,25 @@ Time: 775 microSeconds ==== cpu scan, power-of-two ==== Time: 2 microSeconds ==== naive scan, power-of-two ==== -Time: 579 microSeconds +Time: 522 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 612 microSeconds +Time: 563 microSeconds ==== thrust scan, power-of-two ==== -Time: 2 microSeconds +Time: 6 microSeconds ==== cpu radix sort ==== -Time: 264 microSeconds +Time: 270 microSeconds ==== gpu radix sort cpu scan ==== -Time: 2095 microSeconds +Time: 1920 microSeconds ==== gpu radix sort naive scan ==== -Time: 2749 microSeconds +Time: 2679 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1875 microSeconds +Time: 2020 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 3 microSeconds ==== cpu compact with scan ==== -Time: 10 microSeconds +Time: 12 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 734 microSeconds +Time: 936 microSeconds ** SIZE = 4096 ** **************** @@ -246,25 +245,25 @@ Time: 734 microSeconds ==== cpu scan, power-of-two ==== Time: 5 microSeconds ==== naive scan, power-of-two ==== -Time: 538 microSeconds +Time: 616 microSeconds ==== work-efficient scan, power-of-two ==== Time: 574 microSeconds ==== thrust scan, power-of-two ==== -Time: 6 microSeconds +Time: 7 microSeconds ==== cpu radix sort ==== -Time: 533 microSeconds +Time: 542 microSeconds ==== gpu radix sort cpu scan ==== -Time: 2041 microSeconds +Time: 2560 microSeconds ==== gpu radix sort naive scan ==== -Time: 2819 microSeconds +Time: 2989 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1928 microSeconds +Time: 1920 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 7 microSeconds ==== cpu compact with scan ==== -Time: 23 microSeconds +Time: 25 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 781 microSeconds +Time: 756 microSeconds ** SIZE = 8192 ** **************** @@ -272,25 +271,25 @@ Time: 781 microSeconds ==== cpu scan, power-of-two ==== Time: 11 microSeconds ==== naive scan, power-of-two ==== -Time: 555 microSeconds +Time: 585 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 631 microSeconds +Time: 649 microSeconds ==== thrust scan, power-of-two ==== -Time: 11 microSeconds +Time: 18 microSeconds ==== cpu radix sort ==== -Time: 1062 microSeconds +Time: 1134 microSeconds ==== gpu radix sort cpu scan ==== -Time: 2257 microSeconds +Time: 3575 microSeconds ==== gpu radix sort naive scan ==== -Time: 3114 microSeconds +Time: 3091 microSeconds ==== gpu radix sort thrust scan ==== -Time: 2471 microSeconds +Time: 2307 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 16 microSeconds ==== cpu compact with scan ==== -Time: 47 microSeconds +Time: 50 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 825 microSeconds +Time: 1070 microSeconds ** SIZE = 16384 ** **************** @@ -298,77 +297,77 @@ Time: 825 microSeconds ==== cpu scan, power-of-two ==== Time: 23 microSeconds ==== naive scan, power-of-two ==== -Time: 554 microSeconds +Time: 577 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 619 microSeconds +Time: 605 microSeconds ==== thrust scan, power-of-two ==== -Time: 21 microSeconds +Time: 20 microSeconds ==== cpu radix sort ==== -Time: 2181 microSeconds +Time: 2146 microSeconds ==== gpu radix sort cpu scan ==== -Time: 3084 microSeconds +Time: 3037 microSeconds ==== gpu radix sort naive scan ==== -Time: 3642 microSeconds +Time: 3576 microSeconds ==== gpu radix sort thrust scan ==== -Time: 2595 microSeconds +Time: 2925 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 34 microSeconds +Time: 33 microSeconds ==== cpu compact with scan ==== -Time: 97 microSeconds +Time: 100 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 866 microSeconds +Time: 844 microSeconds ** SIZE = 32768 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 7 0 ] ==== cpu scan, power-of-two ==== -Time: 49 microSeconds +Time: 47 microSeconds ==== naive scan, power-of-two ==== -Time: 612 microSeconds +Time: 694 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 895 microSeconds +Time: 754 microSeconds ==== thrust scan, power-of-two ==== -Time: 44 microSeconds +Time: 47 microSeconds ==== cpu radix sort ==== -Time: 4240 microSeconds +Time: 4261 microSeconds ==== gpu radix sort cpu scan ==== -Time: 4343 microSeconds +Time: 4030 microSeconds ==== gpu radix sort naive scan ==== -Time: 5006 microSeconds +Time: 4914 microSeconds ==== gpu radix sort thrust scan ==== -Time: 3910 microSeconds +Time: 3990 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 69 microSeconds ==== cpu compact with scan ==== -Time: 196 microSeconds +Time: 208 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1046 microSeconds +Time: 1207 microSeconds ** SIZE = 65536 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 35 0 ] ==== cpu scan, power-of-two ==== -Time: 94 microSeconds +Time: 93 microSeconds ==== naive scan, power-of-two ==== -Time: 704 microSeconds +Time: 940 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 917 microSeconds +Time: 818 microSeconds ==== thrust scan, power-of-two ==== -Time: 90 microSeconds +Time: 98 microSeconds ==== cpu radix sort ==== -Time: 8625 microSeconds +Time: 8601 microSeconds ==== gpu radix sort cpu scan ==== -Time: 6799 microSeconds +Time: 7525 microSeconds ==== gpu radix sort naive scan ==== -Time: 7905 microSeconds +Time: 8306 microSeconds ==== gpu radix sort thrust scan ==== -Time: 6677 microSeconds +Time: 6993 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 140 microSeconds +Time: 141 microSeconds ==== cpu compact with scan ==== -Time: 397 microSeconds +Time: 433 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1730 microSeconds +Time: 1798 microSeconds ** SIZE = 131072 ** **************** @@ -376,207 +375,207 @@ Time: 1730 microSeconds ==== cpu scan, power-of-two ==== Time: 188 microSeconds ==== naive scan, power-of-two ==== -Time: 885 microSeconds +Time: 1005 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 1259 microSeconds +Time: 1091 microSeconds ==== thrust scan, power-of-two ==== -Time: 432 microSeconds +Time: 416 microSeconds ==== cpu radix sort ==== -Time: 17407 microSeconds +Time: 17129 microSeconds ==== gpu radix sort cpu scan ==== -Time: 12398 microSeconds +Time: 13022 microSeconds ==== gpu radix sort naive scan ==== -Time: 14302 microSeconds +Time: 13967 microSeconds ==== gpu radix sort thrust scan ==== -Time: 11650 microSeconds +Time: 12753 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 280 microSeconds +Time: 283 microSeconds ==== cpu compact with scan ==== -Time: 1034 microSeconds +Time: 1063 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1204 microSeconds +Time: 1239 microSeconds ** SIZE = 262144 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 42 0 ] ==== cpu scan, power-of-two ==== -Time: 738 microSeconds +Time: 721 microSeconds ==== naive scan, power-of-two ==== Time: 15 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 25 microSeconds +Time: 23 microSeconds ==== thrust scan, power-of-two ==== -Time: 766 microSeconds +Time: 803 microSeconds ==== cpu radix sort ==== -Time: 35010 microSeconds +Time: 34138 microSeconds ==== gpu radix sort cpu scan ==== -Time: 2323 microSeconds +Time: 2116 microSeconds ==== gpu radix sort naive scan ==== -Time: 2052 microSeconds +Time: 1984 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1959 microSeconds +Time: 1934 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 590 microSeconds +Time: 574 microSeconds ==== cpu compact with scan ==== -Time: 2427 microSeconds +Time: 2539 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 523 microSeconds +Time: 526 microSeconds ** SIZE = 524288 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 42 0 ] ==== cpu scan, power-of-two ==== -Time: 1415 microSeconds +Time: 1419 microSeconds ==== naive scan, power-of-two ==== Time: 16 microSeconds ==== work-efficient scan, power-of-two ==== Time: 24 microSeconds ==== thrust scan, power-of-two ==== -Time: 1762 microSeconds +Time: 1655 microSeconds ==== cpu radix sort ==== -Time: 69752 microSeconds +Time: 68891 microSeconds ==== gpu radix sort cpu scan ==== -Time: 4077 microSeconds +Time: 4096 microSeconds ==== gpu radix sort naive scan ==== -Time: 4009 microSeconds +Time: 4054 microSeconds ==== gpu radix sort thrust scan ==== -Time: 4086 microSeconds +Time: 4088 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 1143 microSeconds +Time: 1170 microSeconds ==== cpu compact with scan ==== -Time: 4837 microSeconds +Time: 5083 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1044 microSeconds +Time: 1042 microSeconds ** SIZE = 1048576 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 6 0 ] ==== cpu scan, power-of-two ==== -Time: 2821 microSeconds +Time: 2930 microSeconds ==== naive scan, power-of-two ==== -Time: 17 microSeconds +Time: 19 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 26 microSeconds +Time: 29 microSeconds ==== thrust scan, power-of-two ==== -Time: 3631 microSeconds +Time: 3526 microSeconds ==== cpu radix sort ==== -Time: 139054 microSeconds +Time: 139318 microSeconds ==== gpu radix sort cpu scan ==== -Time: 8441 microSeconds +Time: 8460 microSeconds ==== gpu radix sort naive scan ==== -Time: 8830 microSeconds +Time: 8464 microSeconds ==== gpu radix sort thrust scan ==== -Time: 9037 microSeconds +Time: 8501 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 2301 microSeconds +Time: 2303 microSeconds ==== cpu compact with scan ==== -Time: 8768 microSeconds +Time: 10349 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 2365 microSeconds +Time: 2256 microSeconds ** SIZE = 2097152 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 2 0 ] ==== cpu scan, power-of-two ==== -Time: 4628 microSeconds +Time: 5807 microSeconds ==== naive scan, power-of-two ==== -Time: 20 microSeconds +Time: 21 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 31 microSeconds +Time: 26 microSeconds ==== thrust scan, power-of-two ==== -Time: 7244 microSeconds +Time: 7438 microSeconds ==== cpu radix sort ==== -Time: 277141 microSeconds +Time: 280777 microSeconds ==== gpu radix sort cpu scan ==== -Time: 17729 microSeconds +Time: 17523 microSeconds ==== gpu radix sort naive scan ==== -Time: 17591 microSeconds +Time: 17809 microSeconds ==== gpu radix sort thrust scan ==== -Time: 17553 microSeconds +Time: 17854 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 4684 microSeconds +Time: 4527 microSeconds ==== cpu compact with scan ==== -Time: 17774 microSeconds +Time: 20800 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 4784 microSeconds +Time: 4844 microSeconds ** SIZE = 4194304 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 26 0 ] ==== cpu scan, power-of-two ==== -Time: 6579 microSeconds +Time: 11709 microSeconds ==== naive scan, power-of-two ==== -Time: 18 microSeconds +Time: 19 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 30 microSeconds +Time: 37 microSeconds ==== thrust scan, power-of-two ==== -Time: 15121 microSeconds +Time: 17569 microSeconds ==== cpu radix sort ==== -Time: 555419 microSeconds +Time: 563471 microSeconds ==== gpu radix sort cpu scan ==== -Time: 35741 microSeconds +Time: 35961 microSeconds ==== gpu radix sort naive scan ==== -Time: 35411 microSeconds +Time: 35283 microSeconds ==== gpu radix sort thrust scan ==== -Time: 35747 microSeconds +Time: 35645 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 9555 microSeconds +Time: 9153 microSeconds ==== cpu compact with scan ==== -Time: 35407 microSeconds +Time: 41391 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 9463 microSeconds +Time: 9657 microSeconds ** SIZE = 8388608 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 10 0 ] ==== cpu scan, power-of-two ==== -Time: 13667 microSeconds +Time: 23157 microSeconds ==== naive scan, power-of-two ==== -Time: 18 microSeconds +Time: 19 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 29 microSeconds +Time: 33 microSeconds ==== thrust scan, power-of-two ==== -Time: 31478 microSeconds +Time: 31014 microSeconds ==== cpu radix sort ==== -Time: 1111762 microSeconds +Time: 1125423 microSeconds ==== gpu radix sort cpu scan ==== -Time: 71012 microSeconds +Time: 71306 microSeconds ==== gpu radix sort naive scan ==== -Time: 70982 microSeconds +Time: 72187 microSeconds ==== gpu radix sort thrust scan ==== -Time: 71596 microSeconds +Time: 71193 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 18627 microSeconds +Time: 18687 microSeconds ==== cpu compact with scan ==== -Time: 69722 microSeconds +Time: 83991 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 18604 microSeconds +Time: 19679 microSeconds ** SIZE = 16777216 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 42 0 ] ==== cpu scan, power-of-two ==== -Time: 25969 microSeconds +Time: 45688 microSeconds ==== naive scan, power-of-two ==== Time: 20 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 31 microSeconds +Time: 32 microSeconds ==== thrust scan, power-of-two ==== -Time: 61397 microSeconds +Time: 63120 microSeconds ==== cpu radix sort ==== -Time: 2213557 microSeconds +Time: 2234690 microSeconds ==== gpu radix sort cpu scan ==== -Time: 142111 microSeconds +Time: 144521 microSeconds ==== gpu radix sort naive scan ==== -Time: 142175 microSeconds +Time: 141110 microSeconds ==== gpu radix sort thrust scan ==== -Time: 142549 microSeconds +Time: 140133 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 38071 microSeconds +Time: 37891 microSeconds ==== cpu compact with scan ==== -Time: 140700 microSeconds +Time: 147074 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 38334 microSeconds +Time: 38434 microSeconds Press any key to continue . . . ``` From 91acf62aacb89c8d3fc9618e876a3ad25fb55501 Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 22:41:21 -0400 Subject: [PATCH 09/10] fixed crash,added GPU functions benchmark readme update --- README.md | 440 ++++++++++++++++++--------------- src/main.cpp | 81 ++++-- stream_compaction/efficient.cu | 83 ++++++- stream_compaction/efficient.h | 2 + stream_compaction/naive.cu | 52 +++- stream_compaction/naive.h | 1 + stream_compaction/thrust.cu | 27 +- stream_compaction/thrust.h | 1 + 8 files changed, 456 insertions(+), 231 deletions(-) diff --git a/README.md b/README.md index 40103a5..912d688 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,6 @@ powers of 2 which are part of the test. ``` - **************** ** SCAN TESTS ** **************** @@ -125,11 +124,52 @@ powers of 2 which are part of the test. [ 2 3 2 1 3 1 1 1 2 1 2 1 1 ... 2 1 ] passed ==== work-efficient compact, power-of-two ==== - expected 190 elements, got 0 - FAIL COUNT + passed ==== work-efficient compact, non-power-of-two ==== - expected 189 elements, got -1 - FAIL COUNT + passed + + +==== BENCHMARK on 256 items ==== +naive scan time: 0.054762 +upsweep time: 0.053930 +downsweep time: 0.066717 +thurst time: 0.001216 + +==== BENCHMARK on 4096 items ==== +naive scan time: 0.055395 +upsweep time: 0.056800 +downsweep time: 0.063933 +thurst time: 0.001216 + +==== BENCHMARK on 65536 items ==== +naive scan time: 0.055034 +upsweep time: 0.054170 +downsweep time: 0.063862 +thurst time: 0.001190 + +==== BENCHMARK on 1048576 items ==== +naive scan time: 0.055942 +upsweep time: 0.057514 +downsweep time: 0.066336 +thurst time: 0.001194 + +==== BENCHMARK on 16777216 items ==== +naive scan time: 0.057802 +upsweep time: 0.056128 +downsweep time: 0.066230 +thurst time: 0.001184 + +==== BENCHMARK on 268435456 items ==== +naive scan time: 0.056563 +upsweep time: 0.055456 +downsweep time: 0.066339 +thurst time: 0.001190 + +-------- GPU calls results -------- +naive: 0.054762 0.055395 0.055034 0.055942 0.057802 0.056563 +upsweep: 0.053930 0.056800 0.054170 0.057514 0.056128 0.055456 +downsweep: 0.066717 0.063933 0.063862 0.066336 0.066230 0.066339 +thrust: 0.001216 0.001216 0.001190 0.001194 0.001184 0.001190 **************** ** BENCHMARKS ** @@ -141,451 +181,450 @@ powers of 2 which are part of the test. ==== cpu scan, power-of-two ==== Time: 0 microSeconds ==== naive scan, power-of-two ==== -Time: 549 microSeconds +Time: 1204 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 650 microSeconds +Time: 747 microSeconds ==== thrust scan, power-of-two ==== -Time: 1 microSeconds +Time: 58 microSeconds ==== cpu radix sort ==== -Time: 35 microSeconds +Time: 89 microSeconds ==== gpu radix sort cpu scan ==== -Time: 1301 microSeconds +Time: 1209 microSeconds ==== gpu radix sort naive scan ==== -Time: 1116 microSeconds +Time: 1356 microSeconds ==== gpu radix sort thrust scan ==== -Time: 959 microSeconds +Time: 1080 microSeconds ==== cpu compact without scan, power-of-two ==== Time: 0 microSeconds ==== cpu compact with scan ==== -Time: 1 microSeconds +Time: 2 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 823 microSeconds +Time: 1020 microSeconds ** SIZE = 512 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 11 0 ] ==== cpu scan, power-of-two ==== -Time: 0 microSeconds +Time: 1 microSeconds ==== naive scan, power-of-two ==== -Time: 663 microSeconds +Time: 563 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 624 microSeconds +Time: 657 microSeconds ==== thrust scan, power-of-two ==== -Time: 1 microSeconds +Time: 91 microSeconds ==== cpu radix sort ==== -Time: 66 microSeconds +Time: 142 microSeconds ==== gpu radix sort cpu scan ==== -Time: 1936 microSeconds +Time: 2253 microSeconds ==== gpu radix sort naive scan ==== -Time: 2750 microSeconds +Time: 2997 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1743 microSeconds +Time: 2042 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 0 microSeconds +Time: 1 microSeconds ==== cpu compact with scan ==== -Time: 3 microSeconds +Time: 7 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 732 microSeconds +Time: 862 microSeconds ** SIZE = 1024 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 40 0 ] ==== cpu scan, power-of-two ==== -Time: 1 microSeconds +Time: 2 microSeconds ==== naive scan, power-of-two ==== -Time: 590 microSeconds +Time: 595 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 591 microSeconds +Time: 674 microSeconds ==== thrust scan, power-of-two ==== -Time: 7 microSeconds +Time: 178 microSeconds ==== cpu radix sort ==== -Time: 142 microSeconds +Time: 282 microSeconds ==== gpu radix sort cpu scan ==== -Time: 1857 microSeconds +Time: 2152 microSeconds ==== gpu radix sort naive scan ==== -Time: 2996 microSeconds +Time: 3216 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1893 microSeconds +Time: 2087 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 1 microSeconds +Time: 3 microSeconds ==== cpu compact with scan ==== -Time: 5 microSeconds +Time: 9 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 839 microSeconds +Time: 829 microSeconds ** SIZE = 2048 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 32 0 ] ==== cpu scan, power-of-two ==== -Time: 2 microSeconds +Time: 4 microSeconds ==== naive scan, power-of-two ==== -Time: 522 microSeconds +Time: 546 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 563 microSeconds +Time: 766 microSeconds ==== thrust scan, power-of-two ==== -Time: 6 microSeconds +Time: 371 microSeconds ==== cpu radix sort ==== -Time: 270 microSeconds +Time: 568 microSeconds ==== gpu radix sort cpu scan ==== -Time: 1920 microSeconds +Time: 2536 microSeconds ==== gpu radix sort naive scan ==== -Time: 2679 microSeconds +Time: 3176 microSeconds ==== gpu radix sort thrust scan ==== -Time: 2020 microSeconds +Time: 2185 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 3 microSeconds +Time: 6 microSeconds ==== cpu compact with scan ==== -Time: 12 microSeconds +Time: 19 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 936 microSeconds +Time: 853 microSeconds ** SIZE = 4096 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 24 0 ] ==== cpu scan, power-of-two ==== -Time: 5 microSeconds +Time: 8 microSeconds ==== naive scan, power-of-two ==== -Time: 616 microSeconds +Time: 615 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 574 microSeconds +Time: 786 microSeconds ==== thrust scan, power-of-two ==== -Time: 7 microSeconds +Time: 704 microSeconds ==== cpu radix sort ==== -Time: 542 microSeconds +Time: 1135 microSeconds ==== gpu radix sort cpu scan ==== -Time: 2560 microSeconds +Time: 2460 microSeconds ==== gpu radix sort naive scan ==== -Time: 2989 microSeconds +Time: 3368 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1920 microSeconds +Time: 2429 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 7 microSeconds +Time: 14 microSeconds ==== cpu compact with scan ==== -Time: 25 microSeconds +Time: 40 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 756 microSeconds +Time: 983 microSeconds ** SIZE = 8192 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 4 0 ] ==== cpu scan, power-of-two ==== -Time: 11 microSeconds +Time: 18 microSeconds ==== naive scan, power-of-two ==== -Time: 585 microSeconds +Time: 629 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 649 microSeconds +Time: 784 microSeconds ==== thrust scan, power-of-two ==== -Time: 18 microSeconds +Time: 1444 microSeconds ==== cpu radix sort ==== -Time: 1134 microSeconds +Time: 2306 microSeconds ==== gpu radix sort cpu scan ==== -Time: 3575 microSeconds +Time: 3193 microSeconds ==== gpu radix sort naive scan ==== -Time: 3091 microSeconds +Time: 3786 microSeconds ==== gpu radix sort thrust scan ==== -Time: 2307 microSeconds +Time: 2776 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 16 microSeconds +Time: 30 microSeconds ==== cpu compact with scan ==== -Time: 50 microSeconds +Time: 81 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1070 microSeconds +Time: 1021 microSeconds ** SIZE = 16384 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 26 0 ] ==== cpu scan, power-of-two ==== -Time: 23 microSeconds +Time: 32 microSeconds ==== naive scan, power-of-two ==== -Time: 577 microSeconds +Time: 653 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 605 microSeconds +Time: 1079 microSeconds ==== thrust scan, power-of-two ==== -Time: 20 microSeconds +Time: 2876 microSeconds ==== cpu radix sort ==== -Time: 2146 microSeconds +Time: 4595 microSeconds ==== gpu radix sort cpu scan ==== -Time: 3037 microSeconds +Time: 4210 microSeconds ==== gpu radix sort naive scan ==== -Time: 3576 microSeconds +Time: 4916 microSeconds ==== gpu radix sort thrust scan ==== -Time: 2925 microSeconds +Time: 3774 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 33 microSeconds +Time: 63 microSeconds ==== cpu compact with scan ==== -Time: 100 microSeconds +Time: 165 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 844 microSeconds +Time: 1257 microSeconds ** SIZE = 32768 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 7 0 ] ==== cpu scan, power-of-two ==== -Time: 47 microSeconds +Time: 65 microSeconds ==== naive scan, power-of-two ==== -Time: 694 microSeconds +Time: 808 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 754 microSeconds +Time: 1274 microSeconds ==== thrust scan, power-of-two ==== -Time: 47 microSeconds +Time: 5643 microSeconds ==== cpu radix sort ==== -Time: 4261 microSeconds +Time: 8982 microSeconds ==== gpu radix sort cpu scan ==== -Time: 4030 microSeconds +Time: 6846 microSeconds ==== gpu radix sort naive scan ==== -Time: 4914 microSeconds +Time: 7885 microSeconds ==== gpu radix sort thrust scan ==== -Time: 3990 microSeconds +Time: 6811 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 69 microSeconds +Time: 128 microSeconds ==== cpu compact with scan ==== -Time: 208 microSeconds +Time: 335 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1207 microSeconds +Time: 1705 microSeconds ** SIZE = 65536 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 35 0 ] ==== cpu scan, power-of-two ==== -Time: 93 microSeconds +Time: 131 microSeconds ==== naive scan, power-of-two ==== -Time: 940 microSeconds +Time: 1140 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 818 microSeconds +Time: 1760 microSeconds ==== thrust scan, power-of-two ==== -Time: 98 microSeconds +Time: 11324 microSeconds ==== cpu radix sort ==== -Time: 8601 microSeconds +Time: 18094 microSeconds ==== gpu radix sort cpu scan ==== -Time: 7525 microSeconds +Time: 11267 microSeconds ==== gpu radix sort naive scan ==== -Time: 8306 microSeconds +Time: 11923 microSeconds ==== gpu radix sort thrust scan ==== -Time: 6993 microSeconds +Time: 10084 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 141 microSeconds +Time: 260 microSeconds ==== cpu compact with scan ==== -Time: 433 microSeconds +Time: 672 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1798 microSeconds +Time: 2814 microSeconds ** SIZE = 131072 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 10 0 ] ==== cpu scan, power-of-two ==== -Time: 188 microSeconds +Time: 263 microSeconds ==== naive scan, power-of-two ==== -Time: 1005 microSeconds +Time: 1650 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 1091 microSeconds +Time: 3079 microSeconds ==== thrust scan, power-of-two ==== -Time: 416 microSeconds +Time: 22802 microSeconds ==== cpu radix sort ==== -Time: 17129 microSeconds +Time: 36258 microSeconds ==== gpu radix sort cpu scan ==== -Time: 13022 microSeconds +Time: 19548 microSeconds ==== gpu radix sort naive scan ==== -Time: 13967 microSeconds +Time: 19723 microSeconds ==== gpu radix sort thrust scan ==== -Time: 12753 microSeconds +Time: 18615 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 283 microSeconds +Time: 517 microSeconds ==== cpu compact with scan ==== -Time: 1063 microSeconds +Time: 1571 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1239 microSeconds +Time: 1465 microSeconds ** SIZE = 262144 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 42 0 ] ==== cpu scan, power-of-two ==== -Time: 721 microSeconds +Time: 569 microSeconds ==== naive scan, power-of-two ==== -Time: 15 microSeconds +Time: 17 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 23 microSeconds +Time: 25 microSeconds ==== thrust scan, power-of-two ==== -Time: 803 microSeconds +Time: 45705 microSeconds ==== cpu radix sort ==== -Time: 34138 microSeconds +Time: 73556 microSeconds ==== gpu radix sort cpu scan ==== -Time: 2116 microSeconds +Time: 5243 microSeconds ==== gpu radix sort naive scan ==== -Time: 1984 microSeconds +Time: 5223 microSeconds ==== gpu radix sort thrust scan ==== -Time: 1934 microSeconds +Time: 5214 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 574 microSeconds +Time: 1056 microSeconds ==== cpu compact with scan ==== -Time: 2539 microSeconds +Time: 3225 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 526 microSeconds +Time: 612 microSeconds ** SIZE = 524288 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 42 0 ] ==== cpu scan, power-of-two ==== -Time: 1419 microSeconds +Time: 1139 microSeconds ==== naive scan, power-of-two ==== -Time: 16 microSeconds +Time: 18 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 24 microSeconds +Time: 26 microSeconds ==== thrust scan, power-of-two ==== -Time: 1655 microSeconds +Time: 92465 microSeconds ==== cpu radix sort ==== -Time: 68891 microSeconds +Time: 144470 microSeconds ==== gpu radix sort cpu scan ==== -Time: 4096 microSeconds +Time: 10536 microSeconds ==== gpu radix sort naive scan ==== -Time: 4054 microSeconds +Time: 10634 microSeconds ==== gpu radix sort thrust scan ==== -Time: 4088 microSeconds +Time: 10634 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 1170 microSeconds +Time: 2098 microSeconds ==== cpu compact with scan ==== -Time: 5083 microSeconds +Time: 6596 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 1042 microSeconds +Time: 1197 microSeconds ** SIZE = 1048576 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 6 0 ] ==== cpu scan, power-of-two ==== -Time: 2930 microSeconds +Time: 2288 microSeconds ==== naive scan, power-of-two ==== Time: 19 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 29 microSeconds +Time: 27 microSeconds ==== thrust scan, power-of-two ==== -Time: 3526 microSeconds +Time: 185075 microSeconds ==== cpu radix sort ==== -Time: 139318 microSeconds +Time: 289369 microSeconds ==== gpu radix sort cpu scan ==== -Time: 8460 microSeconds +Time: 22012 microSeconds ==== gpu radix sort naive scan ==== -Time: 8464 microSeconds +Time: 21773 microSeconds ==== gpu radix sort thrust scan ==== -Time: 8501 microSeconds +Time: 21896 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 2303 microSeconds +Time: 4228 microSeconds ==== cpu compact with scan ==== -Time: 10349 microSeconds +Time: 13323 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 2256 microSeconds +Time: 2729 microSeconds ** SIZE = 2097152 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 2 0 ] ==== cpu scan, power-of-two ==== -Time: 5807 microSeconds +Time: 4616 microSeconds ==== naive scan, power-of-two ==== -Time: 21 microSeconds +Time: 20 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 26 microSeconds +Time: 29 microSeconds ==== thrust scan, power-of-two ==== -Time: 7438 microSeconds +Time: 369500 microSeconds ==== cpu radix sort ==== -Time: 280777 microSeconds +Time: 587131 microSeconds ==== gpu radix sort cpu scan ==== -Time: 17523 microSeconds +Time: 44624 microSeconds ==== gpu radix sort naive scan ==== -Time: 17809 microSeconds +Time: 44796 microSeconds ==== gpu radix sort thrust scan ==== -Time: 17854 microSeconds +Time: 44965 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 4527 microSeconds +Time: 8423 microSeconds ==== cpu compact with scan ==== -Time: 20800 microSeconds +Time: 27154 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 4844 microSeconds +Time: 6133 microSeconds ** SIZE = 4194304 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 26 0 ] ==== cpu scan, power-of-two ==== -Time: 11709 microSeconds +Time: 9468 microSeconds ==== naive scan, power-of-two ==== -Time: 19 microSeconds +Time: 20 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 37 microSeconds +Time: 33 microSeconds ==== thrust scan, power-of-two ==== -Time: 17569 microSeconds +Time: 736214 microSeconds ==== cpu radix sort ==== -Time: 563471 microSeconds +Time: 1182810 microSeconds ==== gpu radix sort cpu scan ==== -Time: 35961 microSeconds +Time: 90747 microSeconds ==== gpu radix sort naive scan ==== -Time: 35283 microSeconds +Time: 89688 microSeconds ==== gpu radix sort thrust scan ==== -Time: 35645 microSeconds +Time: 90998 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 9153 microSeconds +Time: 17085 microSeconds ==== cpu compact with scan ==== -Time: 41391 microSeconds +Time: 54581 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 9657 microSeconds +Time: 12071 microSeconds ** SIZE = 8388608 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 10 0 ] ==== cpu scan, power-of-two ==== -Time: 23157 microSeconds +Time: 18279 microSeconds ==== naive scan, power-of-two ==== -Time: 19 microSeconds +Time: 24 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 33 microSeconds +Time: 35 microSeconds ==== thrust scan, power-of-two ==== -Time: 31014 microSeconds +Time: 1473584 microSeconds ==== cpu radix sort ==== -Time: 1125423 microSeconds +Time: 2342165 microSeconds ==== gpu radix sort cpu scan ==== -Time: 71306 microSeconds +Time: 181044 microSeconds ==== gpu radix sort naive scan ==== -Time: 72187 microSeconds +Time: 182013 microSeconds ==== gpu radix sort thrust scan ==== -Time: 71193 microSeconds +Time: 181109 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 18687 microSeconds +Time: 34329 microSeconds ==== cpu compact with scan ==== -Time: 83991 microSeconds +Time: 109976 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 19679 microSeconds +Time: 23858 microSeconds ** SIZE = 16777216 ** **************** [ 38 19 38 37 5 47 15 35 0 12 3 0 42 ... 42 0 ] ==== cpu scan, power-of-two ==== -Time: 45688 microSeconds +Time: 37124 microSeconds ==== naive scan, power-of-two ==== -Time: 20 microSeconds +Time: 23 microSeconds ==== work-efficient scan, power-of-two ==== -Time: 32 microSeconds +Time: 35 microSeconds ==== thrust scan, power-of-two ==== -Time: 63120 microSeconds +Time: 2988794 microSeconds ==== cpu radix sort ==== -Time: 2234690 microSeconds +Time: 4724527 microSeconds ==== gpu radix sort cpu scan ==== -Time: 144521 microSeconds +Time: 374356 microSeconds ==== gpu radix sort naive scan ==== -Time: 141110 microSeconds +Time: 367443 microSeconds ==== gpu radix sort thrust scan ==== -Time: 140133 microSeconds +Time: 359604 microSeconds ==== cpu compact without scan, power-of-two ==== -Time: 37891 microSeconds +Time: 68579 microSeconds ==== cpu compact with scan ==== -Time: 147074 microSeconds +Time: 218190 microSeconds ==== work-efficient compact, power-of-two ==== -Time: 38434 microSeconds +Time: 49360 microSeconds Press any key to continue . . . ``` -* Large scale results: +* Large scale results (in microseconds): ![largescale](./images/bench1.png) -* Small scale results: +* Small scale results (in microseconds): ![largescale](./images/bench2.png) - The significance is obvious between the CPU and GPU implementations. When looking at small arrays, the CPU seems to take an interesting advantage. However @@ -599,14 +638,25 @@ is due to interrupts between the up and downscan. Every time upscan is called, memory has to be allocated and copied, the same happens with downscan This is shown in the last figure. Despite that, -the loss is minumal. +the loss is minimal. Thrust scan does well and scales linearly albeit not as good as the naive and efficient methods. One thing that was interesting to note is that radix benefitted more from the thrust scan than the other GPU implementations. Again possibly due to the -multiple GPU functions. The max number function is -run on the GPU and memory is copied back and forth. +multiple GPU functions and memory copies. +The get max number function is run on the GPU and +memory is copied back and forth. +THe biggest bottleneck in all the test was in the +memory copying especially between the host and +the device. The GPU functions runs extremely fast +in comparison to the memory copying. +The following benchmarks took a few minutes to run +while you'll notice that the GPU time per function +is close to negligeable. Time is is milliseconds: +* GPU functions timing (in milliseconds) +![GPU functions](./images/bench_GPU_functions.png) + One bottleneck that manifests itself in the graph below is from the kernDecimalsMap function. Not enough resources are used during this function diff --git a/src/main.cpp b/src/main.cpp index b157977..a5a32ea 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,7 +17,7 @@ #include #include #include - +#include int comparator(const void* a, const void* b) { @@ -44,7 +44,6 @@ int main(int argc, char* argv[]) { printDesc("cpu scan, power-of-two"); StreamCompaction::CPU::scan(SIZE, b, a); printArray(SIZE, b, true); - zeroArray(SIZE, c); printDesc("cpu scan, non-power-of-two"); @@ -169,14 +168,75 @@ int main(int argc, char* argv[]) { + // bench tests + int iternum = 1000; + std::vectornaive_results; + std::vectorupsweep_results; + std::vectordownsweep_results; + std::vectorthrust_results; + for (int i = 8; i < 15; i += 4) + { + int SZ = 1 << i; + int* A = new int[SZ]; + int* C = new int[SZ]; + printf("\n\n==== BENCHMARK on %d items ====", SZ); + float naivescan = 0; + for (int j = 0; j < iternum; j++) + { + genArray(SZ - 1, A, 50); + A[SZ - 1] = 0; + zeroArray(SZ, C); + naivescan += StreamCompaction::Naive::timeKernScan(SIZE, C, A); + } + printf("\nnaive scan time: %f", naivescan/iternum); + naive_results.push_back(naivescan / iternum); + float upsweep = 0; + for (int j = 0; j < iternum; j++) + { + genArray(SZ - 1, A, 50); + A[SZ - 1] = 0; + zeroArray(SZ, C); + upsweep += StreamCompaction::Efficient::timeKernUpsweep(SIZE, C); + } + printf("\nupsweep time: %f", upsweep / iternum); + upsweep_results.push_back(upsweep / iternum); + float downsweep = 0; + for (int j = 0; j < iternum; j++) + { + genArray(SZ - 1, A, 50); + A[SZ - 1] = 0; + zeroArray(SZ, C); + downsweep += StreamCompaction::Efficient::timeKernDownsweep(SIZE, C); + } + printf("\ndownsweep time: %f", downsweep / iternum); + downsweep_results.push_back(downsweep / iternum); + float thrusttime = 0; + for (int j = 0; j < iternum; j++) + { + genArray(SZ - 1, A, 50); + A[SZ - 1] = 0; + zeroArray(SZ, C); + thrusttime += StreamCompaction::Thrust::timeThrust(SIZE, C, A); + } + printf("\nthurst time: %f", thrusttime / iternum); + thrust_results.push_back(thrusttime / iternum); + delete[] A; + delete[] C; + } + // print in format + printf("\n\n-------- GPU calls results --------"); + printf("\nnaive: "); for (int i = 0; i < naive_results.size(); i++) printf(" %f", naive_results[i]); printf("\n"); + printf("upsweep: "); for (int i = 0; i < upsweep_results.size(); i++) printf(" %f", upsweep_results[i]); printf("\n"); + printf("downsweep: "); for (int i = 0; i < downsweep_results.size(); i++) printf(" %f", downsweep_results[i]); printf("\n"); + printf("thrust: "); for (int i = 0; i < thrust_results.size(); i++) printf(" %f", thrust_results[i]); printf("\n"); { // bechmarks @@ -222,7 +282,6 @@ int main(int argc, char* argv[]) { //t = clock() - t; //printf("Elapsed time %f second(s).\n", t, ((float)t) / CLOCKS_PER_SEC); - Sleep(1); zeroArray(SIZE, b); printDesc("cpu scan, power-of-two"); QueryPerformanceFrequency(&freq); @@ -233,7 +292,6 @@ int main(int argc, char* argv[]) { std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; /* - Sleep(1); zeroArray(SIZE, c); printDesc("cpu scan, non-power-of-two"); QueryPerformanceFrequency(&freq); @@ -245,7 +303,6 @@ int main(int argc, char* argv[]) { */ - Sleep(1); zeroArray(SIZE, c); printDesc("naive scan, power-of-two"); QueryPerformanceFrequency(&freq); @@ -256,7 +313,6 @@ int main(int argc, char* argv[]) { std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; /* - Sleep(1); zeroArray(SIZE, c); printDesc("naive scan, non-power-of-two"); QueryPerformanceFrequency(&freq); @@ -269,7 +325,6 @@ int main(int argc, char* argv[]) { - Sleep(1); zeroArray(SIZE, c); printDesc("work-efficient scan, power-of-two"); QueryPerformanceFrequency(&freq); @@ -280,7 +335,6 @@ int main(int argc, char* argv[]) { std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; /* - Sleep(1); zeroArray(SIZE, c); printDesc("work-efficient scan, non-power-of-two"); QueryPerformanceFrequency(&freq); @@ -292,7 +346,6 @@ int main(int argc, char* argv[]) { */ - Sleep(1); zeroArray(SIZE, c); printDesc("thrust scan, power-of-two"); QueryPerformanceFrequency(&freq); @@ -303,7 +356,6 @@ int main(int argc, char* argv[]) { std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; /* - Sleep(1); zeroArray(SIZE, c); printDesc("thrust scan, non-power-of-two"); QueryPerformanceFrequency(&freq); @@ -315,7 +367,6 @@ int main(int argc, char* argv[]) { */ - Sleep(1); printDesc("cpu radix sort"); memcpy(c, a, sizeof(int)*SIZE); QueryPerformanceFrequency(&freq); @@ -325,7 +376,6 @@ int main(int argc, char* argv[]) { QueryPerformanceCounter(&end); std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; - Sleep(1); printDesc("gpu radix sort cpu scan"); memcpy(c, a, sizeof(int)*SIZE); QueryPerformanceFrequency(&freq); @@ -335,7 +385,6 @@ int main(int argc, char* argv[]) { QueryPerformanceCounter(&end); std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; - Sleep(1); printDesc("gpu radix sort naive scan"); memcpy(c, a, sizeof(int)*SIZE); QueryPerformanceFrequency(&freq); @@ -345,7 +394,6 @@ int main(int argc, char* argv[]) { QueryPerformanceCounter(&end); std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart)/iterations << " microSeconds\n"; - Sleep(1); printDesc("gpu radix sort thrust scan"); memcpy(c, a, sizeof(int)*SIZE); QueryPerformanceFrequency(&freq); @@ -364,7 +412,6 @@ int main(int argc, char* argv[]) { genArray(SIZE - 1, a, 4); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; - Sleep(1); zeroArray(SIZE, b); printDesc("cpu compact without scan, power-of-two"); QueryPerformanceFrequency(&freq); @@ -376,7 +423,6 @@ int main(int argc, char* argv[]) { /* - Sleep(1); zeroArray(SIZE, c); printDesc("cpu compact without scan, non-power-of-two"); QueryPerformanceFrequency(&freq); @@ -388,7 +434,6 @@ int main(int argc, char* argv[]) { */ - Sleep(1); zeroArray(SIZE, c); printDesc("cpu compact with scan"); QueryPerformanceFrequency(&freq); @@ -398,7 +443,6 @@ int main(int argc, char* argv[]) { QueryPerformanceCounter(&end); std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart) / iterations << " microSeconds\n"; - Sleep(1); zeroArray(SIZE, c); printDesc("work-efficient compact, power-of-two"); QueryPerformanceFrequency(&freq); @@ -409,7 +453,6 @@ int main(int argc, char* argv[]) { std::cout << "Time: " << ((end.QuadPart - start.QuadPart) * 1000000 / freq.QuadPart) / iterations << " microSeconds\n"; /* - Sleep(1); zeroArray(SIZE, c); printDesc("work-efficient compact, non-power-of-two"); QueryPerformanceFrequency(&freq); diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 87addd3..30b68fa 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -2,6 +2,7 @@ #include #include "common.h" #include "efficient.h" +#include "stdio.h" namespace StreamCompaction { namespace Efficient { @@ -104,13 +105,13 @@ namespace StreamCompaction { // TODO //printf("TODO\n"); - dim3 blocks((n + blockSize - 1) / blockSize); int nold = n; - if (n % 2 == 0) + if (n % ilog2ceil(n) == 0) { n = 1 << ilog2ceil(n); + dim3 blocks((n + blockSize - 1) / blockSize); //setup(n, idata); int* dev_scandata; cudaMalloc((void**)&dev_scandata, n * sizeof(int)); @@ -125,7 +126,7 @@ namespace StreamCompaction { cudaMemset(dev_scandata + (n - 1), 0, sizeof(int)); for (int d = ilog2ceil(n); d >= 0; d--) { - kerndownsweep << > >(n, d, dev_scandata); + kerndownsweep << > >(n, d, dev_scandata); } cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); @@ -134,6 +135,7 @@ namespace StreamCompaction { else { n = 1 << ilog2ceil(n); + dim3 blocks((n + blockSize - 1) / blockSize); //setup(n, idata); int* dev_scandata; cudaMalloc((void**)&dev_scandata, n * sizeof(int)); @@ -145,6 +147,7 @@ namespace StreamCompaction { } cudaMemset(dev_scandata + (n - 1), 0, sizeof(int)); + for (int d = ilog2ceil(n); d >= 0; d--) { kerndownsweep << > >(n, d, dev_scandata); @@ -157,6 +160,64 @@ namespace StreamCompaction { } + + float timeKernUpsweep(int n, const int *idata) + { + int* dev_idata; + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + + cudaMemcpy(dev_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + + dim3 blocks((n + blockSize - 1) / blockSize); + + cudaEvent_t start, stop; cudaEventCreate(&start); cudaEventCreate(&stop); cudaEventRecord(start); + + if (n % 2 == 0) + { + for (int d = 0; d <= ilog2ceil(n) - 1; d++) + { + kernupsweep << > >(n, d, dev_idata); + } + } + cudaEventRecord(stop); cudaEventSynchronize(stop); float milliseconds = 0; cudaEventElapsedTime(&milliseconds, start, stop); + //printf("\nELAPSED TIME = %f\n", milliseconds); + + cudaEventDestroy(start); cudaEventDestroy(stop); + + cudaFree(dev_idata); + + return milliseconds; + } + + float timeKernDownsweep(int n, const int *idata) + { + int* dev_idata; + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + + cudaMemcpy(dev_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + + dim3 blocks((n + blockSize - 1) / blockSize); + + cudaEvent_t start, stop; cudaEventCreate(&start); cudaEventCreate(&stop); cudaEventRecord(start); + + if (n % 2 == 0) + { + for (int d = 0; d <= ilog2ceil(n) - 1; d++) + { + kerndownsweep << > >(n, d, dev_idata); + } + } + cudaEventRecord(stop); cudaEventSynchronize(stop); float milliseconds = 0; cudaEventElapsedTime(&milliseconds, start, stop); + //printf("\nELAPSED TIME = %f\n", milliseconds); + + cudaEventDestroy(start); cudaEventDestroy(stop); + + cudaFree(dev_idata); + + return milliseconds; + } + + /** * Performs stream compaction on idata, storing the result into odata. * All zeroes are discarded. @@ -169,12 +230,13 @@ namespace StreamCompaction { int compact(int n, int *odata, const int *idata) { // TODO - dim3 blocks((n + blockSize - 1) / blockSize); + //dim3 blocks((n + blockSize - 1) / blockSize); int count = 0; - if (n % 2 == 0) + if (n % ilog2ceil(n) == 0) { n = 1 << ilog2ceil(n); + dim3 blocks((n + blockSize - 1) / blockSize); //setupcompact(n, idata); int* dev_idata; @@ -196,7 +258,7 @@ namespace StreamCompaction { cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); cudaMemcpy(dev_odata, odata, sizeof(int)*n, cudaMemcpyHostToDevice); - StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_scandata); + StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_idata); scan(n, dev_indices, dev_bools); cudaMemcpy(bools, dev_bools, sizeof(int) * n, cudaMemcpyDeviceToHost); @@ -233,6 +295,7 @@ namespace StreamCompaction { else { n = 1 << ilog2ceil(n); + dim3 blocks((n + blockSize - 1) / blockSize); //setupcompact(n, idata); int* dev_idata; @@ -254,7 +317,7 @@ namespace StreamCompaction { cudaMemcpy(dev_idata, idata, sizeof(int)*n, cudaMemcpyHostToDevice); cudaMemcpy(dev_odata, odata, sizeof(int)*n, cudaMemcpyHostToDevice); - StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_scandata); + StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bools, dev_idata); scan(n, dev_indices, dev_bools); cudaMemcpy(bools, dev_bools, sizeof(int) * n, cudaMemcpyDeviceToHost); @@ -265,7 +328,10 @@ namespace StreamCompaction { cudaMemcpy(odata, dev_odata, sizeof(int)*n, cudaMemcpyDeviceToHost); count = indices[n - 1] + bools[n - 1] - 1; - + //for (int i = 0; i < n; i++) + // printf("%d ", indices[i]); + //for (int i = 0; i < n; i++) + // printf("%d ", bools[i]); //cleanupcompact(); cudaFree(dev_idata); cudaFree(dev_odata); @@ -279,6 +345,5 @@ namespace StreamCompaction { return count; } - } } diff --git a/stream_compaction/efficient.h b/stream_compaction/efficient.h index 395ba10..6e24625 100644 --- a/stream_compaction/efficient.h +++ b/stream_compaction/efficient.h @@ -3,6 +3,8 @@ namespace StreamCompaction { namespace Efficient { void scan(int n, int *odata, const int *idata); + float timeKernUpsweep(int n, const int *idata); + float timeKernDownsweep(int n, const int *idata); int compact(int n, int *odata, const int *idata); } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 0781c41..ffdc72c 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -8,6 +8,10 @@ namespace StreamCompaction { namespace Naive { // TODO: __global__ + + + + #define blockSize 128 int* dev_scandata; @@ -38,6 +42,42 @@ namespace Naive { else dev_scandata[k] = dev_scandata2[k-1]; } + + float timeKernScan(int n, int *odata, const int *idata) + { + int* dev_odata; + int* dev_idata; + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + + cudaMemcpy(dev_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_odata, dev_idata, sizeof(int) * n, cudaMemcpyDeviceToDevice); + + + dim3 blocks((n + blockSize - 1) / blockSize); + + + cudaEvent_t start, stop; cudaEventCreate(&start); cudaEventCreate(&stop); cudaEventRecord(start); + int count = 0; + if (n % 2 == 0) + { + for (int d = 1; d <= ilog2ceil(n); d++) + { + kernscan << > >(n, d, dev_scandata, dev_scandata2); + count++; + } + } + cudaEventRecord(stop); cudaEventSynchronize(stop); float milliseconds = 0; cudaEventElapsedTime(&milliseconds, start, stop); + //printf("\nELAPSED TIME = %f\n", milliseconds); + + cudaEventDestroy(start); cudaEventDestroy(stop); + + cudaFree(dev_odata); + cudaFree(dev_idata); + + return milliseconds; + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ @@ -52,11 +92,10 @@ namespace Naive { cudaMemcpy(dev_scandata2, idata, sizeof(int) * n, cudaMemcpyHostToDevice); cudaMemcpy(dev_scandata, dev_scandata2, sizeof(int) * n, cudaMemcpyDeviceToDevice); - dim3 blocks((n + blockSize - 1) / blockSize); int count = 0; - if (n % 2 == 0) + if (n % ilog2(n) == 0) { for (int d = 1; d <= ilog2ceil(n); d++) { @@ -72,17 +111,16 @@ namespace Naive { count++; } } + - if (n % 2 == 0) + if (n % ilog2(n) == 0) { - kerninc2exc << > >(n, - dev_scandata2, dev_scandata); + kerninc2exc << > >(n, dev_scandata2, dev_scandata); cudaMemcpy(odata, dev_scandata2, sizeof(int) * n, cudaMemcpyDeviceToHost); } else { - kerninc2exc << > >(n, - dev_scandata, dev_scandata2); + kerninc2exc << > >(n, dev_scandata, dev_scandata2); cudaMemcpy(odata, dev_scandata, sizeof(int) * n, cudaMemcpyDeviceToHost); } diff --git a/stream_compaction/naive.h b/stream_compaction/naive.h index 21152d6..10a82d7 100644 --- a/stream_compaction/naive.h +++ b/stream_compaction/naive.h @@ -3,5 +3,6 @@ namespace StreamCompaction { namespace Naive { void scan(int n, int *odata, const int *idata); + float timeKernScan(int n, int *odata, const int *idata); } } diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 1939199..1b0334d 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -9,6 +9,31 @@ namespace StreamCompaction { namespace Thrust { + + float timeThrust(int n, int *odata, const int *idata) + { + int* dev_odata; + int* dev_idata; + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + + cudaMemcpy(dev_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_odata, dev_idata, sizeof(int) * n, cudaMemcpyDeviceToDevice); + + thrust::host_vector dv_in(idata, idata + n); + thrust::host_vector dv_out(odata, odata + n); + + cudaEvent_t start, stop; cudaEventCreate(&start); cudaEventCreate(&stop); cudaEventRecord(start); + thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + cudaEventRecord(stop); cudaEventSynchronize(stop); float milliseconds = 0; cudaEventElapsedTime(&milliseconds, start, stop); + //printf("\nELAPSED TIME = %f\n", milliseconds); + cudaEventDestroy(start); cudaEventDestroy(stop); + + cudaFree(dev_odata); + cudaFree(dev_idata); + + return milliseconds; + } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ @@ -25,7 +50,7 @@ void scan(int n, int *odata, const int *idata) { thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); - //odata = &(dv_out.front()); + //odata = &(dv_out.front()); for (int i = 0; i < n; i++) odata[i] = dv_out[i]; } diff --git a/stream_compaction/thrust.h b/stream_compaction/thrust.h index 06707f3..ccacb34 100644 --- a/stream_compaction/thrust.h +++ b/stream_compaction/thrust.h @@ -3,5 +3,6 @@ namespace StreamCompaction { namespace Thrust { void scan(int n, int *odata, const int *idata); + float timeThrust(int n, int *odata, const int *idata); } } From 7822bd0f5149bf75eea0bc6799b9d99da0cca9aa Mon Sep 17 00:00:00 2001 From: reddeupenn Date: Tue, 27 Sep 2016 22:45:23 -0400 Subject: [PATCH 10/10] dded graph for GPU benchmark results --- images/bench_GPU_functions.png | Bin 0 -> 32404 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/bench_GPU_functions.png diff --git a/images/bench_GPU_functions.png b/images/bench_GPU_functions.png new file mode 100644 index 0000000000000000000000000000000000000000..86b19fafd82cb31e763fc17a1ff11f46380c06cd GIT binary patch literal 32404 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 literal 0 HcmV?d00001