From a8b3e8309ece59a6c2915f20f9cb9c85e7056b46 Mon Sep 17 00:00:00 2001 From: Nithin Pranesh Date: Mon, 20 Sep 2021 21:34:31 -0400 Subject: [PATCH 1/7] cpu and naive implementations --- stream_compaction/common.cu | 12 ++++++-- stream_compaction/common.h | 1 + stream_compaction/cpu.cu | 48 ++++++++++++++++++++++++++++---- stream_compaction/efficient.cu | 44 ++++++++++++++++++++++++++++- stream_compaction/naive.cu | 51 ++++++++++++++++++++++++++++++++-- 5 files changed, 146 insertions(+), 10 deletions(-) diff --git a/stream_compaction/common.cu b/stream_compaction/common.cu index 2ed6d63..2aef261 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -23,7 +23,10 @@ namespace StreamCompaction { * which map to 0 will be removed, and elements which map to 1 will be kept. */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { - // TODO + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= 0 && index < n) { + bools[index] = idata[index] != 0; + } } /** @@ -32,7 +35,12 @@ namespace StreamCompaction { */ __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { - // TODO + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= 0 && index < n) { + if (bools[index]) { + odata[indices[index]] = idata[index]; + } + } } } diff --git a/stream_compaction/common.h b/stream_compaction/common.h index d2c1fed..eb1daf2 100644 --- a/stream_compaction/common.h +++ b/stream_compaction/common.h @@ -12,6 +12,7 @@ #define FILENAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #define checkCUDAError(msg) checkCUDAErrorFn(msg, FILENAME, __LINE__) +#define blockSize 128 /** * Check for CUDA errors; print and exit if there was a problem. diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 719fa11..f171853 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -19,7 +19,13 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + + int sum = 0; + for (int i = 0; i < n; ++i) { + odata[i] = sum; + sum += idata[i]; + } + timer().endCpuTimer(); } @@ -30,9 +36,17 @@ namespace StreamCompaction { */ int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + + int j = 0; + for (int i = 0; i < n; ++i) { + if (idata[i] != 0) { + odata[j] = idata[i]; + ++j; + } + } + timer().endCpuTimer(); - return -1; + return j; } /** @@ -42,9 +56,33 @@ namespace StreamCompaction { */ int compactWithScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + + // map array to 0s and 1s + int* bitmap = (int*)std::malloc(n * sizeof(int)); + for (int i = 0; i < n; ++i) { + bitmap[i] = idata[i] != 0; + } + + // scan implementation + int* scannedBitmap = (int*)std::malloc(n * sizeof(int)); + int count = 0; + for (int i = 0; i < n; ++i) { + scannedBitmap[i] = count; + count += bitmap[i]; + } + + for (int i = 0; i < n - 1; ++i) { + if (scannedBitmap[i] != scannedBitmap[i + 1]) { + odata[scannedBitmap[i]] = idata[i]; + } + } + + std::free(bitmap); + std::free(scannedBitmap); + timer().endCpuTimer(); - return -1; + + return count; } } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 2db346e..3f14a6f 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -12,12 +12,54 @@ namespace StreamCompaction { return timer; } + __global__ void kernWorkEfficientReduceStep(int n, int stride, int* data) { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= stride && index < n) { + data[index] += data[index - stride]; + } + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - // TODO + /* + dim3 fullBlocksPerGrid = ((n + blockSize - 1) / blockSize); + + int* dev_buf0; + cudaMalloc((void**)&dev_buf0, n * sizeof(int)); + checkCUDAError("cudaMalloc dev_buf0 failed!"); + + int* dev_buf1; + cudaMalloc((void**)&dev_buf1, n * sizeof(int)); + checkCUDAError("cudaMalloc dev_buf0 failed!"); + + cudaMemcpy(dev_buf0, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + checkCUDAError("cudaMemcpy to device failed!"); + + for (int offset = 1; offset < n; offset <<= 1) { + kernNaiveScanStep << > > (n, offset, dev_buf1, dev_buf0); + checkCUDAError("kernNaiveScanStep failed!"); + + std::swap(dev_buf0, dev_buf1); + } + + cudaMemcpy(&odata[1], dev_buf0, sizeof(int) * (n - 1), cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy from device failed!"); + + std::vector odataView(n); + memcpy(odataView.data(), odata, sizeof(int) * n); + + std::vector idataView(n); + memcpy(idataView.data(), idata, sizeof(int) * n); + + cudaFree(dev_buf0); + checkCUDAError("cudaFree dev_buf0 failed!"); + + cudaFree(dev_buf1); + checkCUDAError("cudaFree dev_buf1 failed!"); + */ timer().endGpuTimer(); } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 4308876..1119b5d 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -2,6 +2,7 @@ #include #include "common.h" #include "naive.h" +#include namespace StreamCompaction { namespace Naive { @@ -11,14 +12,60 @@ namespace StreamCompaction { static PerformanceTimer timer; return timer; } - // TODO: __global__ + + __global__ void kernNaiveScanStep(int n, int offset, int* odata, const int* idata) { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= 0 && index < n) { + if (index >= offset) { + odata[index] = idata[index - offset] + idata[index]; + } + else { + odata[index] = idata[index]; + } + } + } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - // TODO + + dim3 fullBlocksPerGrid = ((n + blockSize - 1) / blockSize); + + int* dev_buf0; + cudaMalloc((void**)&dev_buf0, n * sizeof(int)); + checkCUDAError("cudaMalloc dev_buf0 failed!"); + + int* dev_buf1; + cudaMalloc((void**)&dev_buf1, n * sizeof(int)); + checkCUDAError("cudaMalloc dev_buf0 failed!"); + + cudaMemcpy(dev_buf0, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + checkCUDAError("cudaMemcpy to device failed!"); + + for (int offset = 1; offset < n; offset <<= 1) { + kernNaiveScanStep << > > (n, offset, dev_buf1, dev_buf0); + checkCUDAError("kernNaiveScanStep failed!"); + + std::swap(dev_buf0, dev_buf1); + } + + cudaMemcpy(&odata[1], dev_buf0, sizeof(int) * (n - 1), cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy from device failed!"); + + std::vector odataView(n); + memcpy(odataView.data(), odata, sizeof(int) * n); + + std::vector idataView(n); + memcpy(idataView.data(), idata, sizeof(int) * n); + + cudaFree(dev_buf0); + checkCUDAError("cudaFree dev_buf0 failed!"); + + cudaFree(dev_buf1); + checkCUDAError("cudaFree dev_buf1 failed!"); + timer().endGpuTimer(); } } From f00f68915b4d0cc988bbbc3902643befaee4a897 Mon Sep 17 00:00:00 2001 From: Nithin Pranesh Date: Mon, 20 Sep 2021 22:55:21 -0400 Subject: [PATCH 2/7] work-efficient scan --- stream_compaction/efficient.cu | 58 ++++++++++++++++++++-------------- stream_compaction/naive.cu | 7 ---- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 3f14a6f..6abb60d 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -2,6 +2,7 @@ #include #include "common.h" #include "efficient.h" +#include namespace StreamCompaction { namespace Efficient { @@ -11,11 +12,20 @@ namespace StreamCompaction { static PerformanceTimer timer; return timer; } - - __global__ void kernWorkEfficientReduceStep(int n, int stride, int* data) { - int index = threadIdx.x + (blockIdx.x * blockDim.x); + + __global__ void kernWorkEfficientUpSweepStep(int n, int stride, int* data) { + int index = 2 * stride * (threadIdx.x + (blockIdx.x * blockDim.x)) - 1; + if (index >= stride && index < n) { + data[index] += data[index - stride]; + } + } + + __global__ void kernWorkEfficientDownSweepStep(int n, int stride, int* data) { + int index = 2 * stride * (threadIdx.x + (blockIdx.x * blockDim.x)) - 1; if (index >= stride && index < n) { + int oldValue = data[index]; data[index] += data[index - stride]; + data[index - stride] = oldValue; } } @@ -24,42 +34,42 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - /* - dim3 fullBlocksPerGrid = ((n + blockSize - 1) / blockSize); + + int nPow2 = 1 << ilog2ceil(n); + dim3 fullBlocksPerGrid = ((nPow2 + blockSize - 1) / blockSize); - int* dev_buf0; - cudaMalloc((void**)&dev_buf0, n * sizeof(int)); - checkCUDAError("cudaMalloc dev_buf0 failed!"); + int* dev_buf; + cudaMalloc((void**)&dev_buf, sizeof(int) * nPow2); + checkCUDAError("cudaMalloc dev_buf failed!"); - int* dev_buf1; - cudaMalloc((void**)&dev_buf1, n * sizeof(int)); - checkCUDAError("cudaMalloc dev_buf0 failed!"); - - cudaMemcpy(dev_buf0, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + cudaMemcpy(dev_buf, idata, sizeof(int) * n, cudaMemcpyHostToDevice); checkCUDAError("cudaMemcpy to device failed!"); - for (int offset = 1; offset < n; offset <<= 1) { - kernNaiveScanStep << > > (n, offset, dev_buf1, dev_buf0); - checkCUDAError("kernNaiveScanStep failed!"); + // up-sweep phase + for (int stride = 1; stride < nPow2; stride <<= 1) { + kernWorkEfficientUpSweepStep << > > (nPow2, stride, dev_buf); + checkCUDAError("kernWorkEfficientUpSweepStep failed!"); + } - std::swap(dev_buf0, dev_buf1); + // down-sweep phase + cudaMemset(&dev_buf[nPow2 - 1], 0, sizeof(int)); + for (int stride = nPow2 >> 1; stride > 0; stride >>= 1) { + kernWorkEfficientDownSweepStep << > > (nPow2, stride, dev_buf); + checkCUDAError("kernWorkEfficientDownSweepStep failed!"); } - cudaMemcpy(&odata[1], dev_buf0, sizeof(int) * (n - 1), cudaMemcpyDeviceToHost); + cudaMemcpy(odata, dev_buf, sizeof(int) * n, cudaMemcpyDeviceToHost); checkCUDAError("cudaMemcpy from device failed!"); + cudaFree(dev_buf); + checkCUDAError("cudaFree dev_buf failed!"); + std::vector odataView(n); memcpy(odataView.data(), odata, sizeof(int) * n); std::vector idataView(n); memcpy(idataView.data(), idata, sizeof(int) * n); - cudaFree(dev_buf0); - checkCUDAError("cudaFree dev_buf0 failed!"); - - cudaFree(dev_buf1); - checkCUDAError("cudaFree dev_buf1 failed!"); - */ timer().endGpuTimer(); } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 1119b5d..c1f2c2d 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -2,7 +2,6 @@ #include #include "common.h" #include "naive.h" -#include namespace StreamCompaction { namespace Naive { @@ -54,12 +53,6 @@ namespace StreamCompaction { cudaMemcpy(&odata[1], dev_buf0, sizeof(int) * (n - 1), cudaMemcpyDeviceToHost); checkCUDAError("cudaMemcpy from device failed!"); - std::vector odataView(n); - memcpy(odataView.data(), odata, sizeof(int) * n); - - std::vector idataView(n); - memcpy(idataView.data(), idata, sizeof(int) * n); - cudaFree(dev_buf0); checkCUDAError("cudaFree dev_buf0 failed!"); From 22f1c8470142397930b12f33c8ed5b27c73f6c77 Mon Sep 17 00:00:00 2001 From: Nithin Pranesh Date: Tue, 21 Sep 2021 02:13:49 -0400 Subject: [PATCH 3/7] efficient scan/compact implemented --- stream_compaction/cpu.cu | 25 ++++---- stream_compaction/efficient.cu | 112 ++++++++++++++++++++++++--------- 2 files changed, 94 insertions(+), 43 deletions(-) diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index f171853..157da89 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -12,6 +12,16 @@ namespace StreamCompaction { return timer; } + int _scan(int n, int* odata, const int* idata) { + int sum = 0; + for (int i = 0; i < n; ++i) { + odata[i] = sum; + sum += idata[i]; + } + + return sum; + } + /** * CPU scan (prefix sum). * For performance analysis, this is supposed to be a simple for loop. @@ -19,13 +29,7 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - - int sum = 0; - for (int i = 0; i < n; ++i) { - odata[i] = sum; - sum += idata[i]; - } - + _scan(n, odata, idata); timer().endCpuTimer(); } @@ -63,13 +67,8 @@ namespace StreamCompaction { bitmap[i] = idata[i] != 0; } - // scan implementation int* scannedBitmap = (int*)std::malloc(n * sizeof(int)); - int count = 0; - for (int i = 0; i < n; ++i) { - scannedBitmap[i] = count; - count += bitmap[i]; - } + int count = _scan(n, scannedBitmap, bitmap); for (int i = 0; i < n - 1; ++i) { if (scannedBitmap[i] != scannedBitmap[i + 1]) { diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 6abb60d..aa5ffeb 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -2,7 +2,6 @@ #include #include "common.h" #include "efficient.h" -#include namespace StreamCompaction { namespace Efficient { @@ -30,47 +29,46 @@ namespace StreamCompaction { } /** - * Performs prefix-sum (aka scan) on idata, storing the result into odata. + * Performs prefix-sum (aka scan) on the buffer in place. Expects a padding to keep the length a power of 2. */ - void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - - int nPow2 = 1 << ilog2ceil(n); - dim3 fullBlocksPerGrid = ((nPow2 + blockSize - 1) / blockSize); - - int* dev_buf; - cudaMalloc((void**)&dev_buf, sizeof(int) * nPow2); - checkCUDAError("cudaMalloc dev_buf failed!"); - - cudaMemcpy(dev_buf, idata, sizeof(int) * n, cudaMemcpyHostToDevice); - checkCUDAError("cudaMemcpy to device failed!"); + void _scan(int n, int *dev_buf) { + dim3 fullBlocksPerGrid = ((n + blockSize - 1) / blockSize); // up-sweep phase - for (int stride = 1; stride < nPow2; stride <<= 1) { - kernWorkEfficientUpSweepStep << > > (nPow2, stride, dev_buf); + for (int stride = 1; stride < n; stride <<= 1) { + kernWorkEfficientUpSweepStep << > > (n, stride, dev_buf); checkCUDAError("kernWorkEfficientUpSweepStep failed!"); } // down-sweep phase - cudaMemset(&dev_buf[nPow2 - 1], 0, sizeof(int)); - for (int stride = nPow2 >> 1; stride > 0; stride >>= 1) { - kernWorkEfficientDownSweepStep << > > (nPow2, stride, dev_buf); + cudaMemset(&dev_buf[n - 1], 0, sizeof(int)); + for (int stride = n >> 1; stride > 0; stride >>= 1) { + kernWorkEfficientDownSweepStep << > > (n, stride, dev_buf); checkCUDAError("kernWorkEfficientDownSweepStep failed!"); } + } + + /** + * Performs prefix-sum (aka scan) on idata, storing the result into odata. + */ + void scan(int n, int *odata, const int *idata) { + timer().startGpuTimer(); - cudaMemcpy(odata, dev_buf, sizeof(int) * n, cudaMemcpyDeviceToHost); - checkCUDAError("cudaMemcpy from device failed!"); + int nPow2 = 1 << ilog2ceil(n); - cudaFree(dev_buf); - checkCUDAError("cudaFree dev_buf failed!"); + int* dev_buf; + cudaMalloc((void**)&dev_buf, sizeof(int) * nPow2); + checkCUDAError("cudaMalloc dev_buf failed!"); - std::vector odataView(n); - memcpy(odataView.data(), odata, sizeof(int) * n); + cudaMemcpy(dev_buf, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + checkCUDAError("cudaMemcpy to device failed!"); - std::vector idataView(n); - memcpy(idataView.data(), idata, sizeof(int) * n); + _scan(nPow2, dev_buf); - timer().endGpuTimer(); + cudaMemcpy(odata, dev_buf, sizeof(int) * n, cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy from device failed!"); + + timer().endGpuTimer(); } /** @@ -84,9 +82,63 @@ namespace StreamCompaction { */ int compact(int n, int *odata, const int *idata) { timer().startGpuTimer(); - // TODO + + dim3 fullBlocksPerGrid = ((n + blockSize - 1) / blockSize); + + int nPow2 = 1 << ilog2ceil(n); + + int* dev_input; + cudaMalloc((void**)&dev_input, sizeof(int) * n); + checkCUDAError("cudaMalloc dev_input failed!"); + + cudaMemcpy(dev_input, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + checkCUDAError("cudaMemcpy input to device failed!"); + + int* dev_bools; + cudaMalloc((void**)&dev_bools, sizeof(int) * n); + checkCUDAError("cudaMalloc dev_bools failed!"); + + int* dev_indices; + cudaMalloc((void**)&dev_indices, sizeof(int) * nPow2); + checkCUDAError("cudaMalloc dev_indices failed!"); + + Common::kernMapToBoolean << > > (n, dev_bools, dev_input); + checkCUDAError("kernMapToBoolean failed!"); + + cudaMemcpy(dev_indices, dev_bools, sizeof(int) * n, cudaMemcpyDeviceToDevice); + checkCUDAError("cudaMemcpy from device to device failed!"); + + _scan(nPow2, dev_indices); + + int count = 0; + cudaMemcpy(&count, &dev_indices[n - 1], sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy from device failed!"); + count += idata[n - 1] != 0; + + int* dev_output; + cudaMalloc((void**)&dev_output, sizeof(int) * count); + checkCUDAError("cudaMalloc dev_output failed!"); + + Common::kernScatter << > > (n, dev_output, dev_input, dev_bools, dev_indices); + checkCUDAError("kernScatter failed!"); + + cudaMemcpy(odata, dev_output, sizeof(int) * count, cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy output to host failed!"); + + cudaFree(dev_input); + checkCUDAError("cudaFree dev_input failed!"); + + cudaFree(dev_output); + checkCUDAError("cudaFree dev_output failed!"); + + cudaFree(dev_bools); + checkCUDAError("cudaFree dev_bools failed!"); + + cudaFree(dev_indices); + checkCUDAError("cudaFree dev_indices failed!"); + timer().endGpuTimer(); - return -1; + return count; } } } From 551e01bc4be7d8bc65b69aaea1e5357363b1e9b5 Mon Sep 17 00:00:00 2001 From: Nithin Pranesh Date: Tue, 21 Sep 2021 16:40:06 -0400 Subject: [PATCH 4/7] wrapped thrust::scan_exclusive --- stream_compaction/thrust.cu | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 1def45e..a4f0ec4 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -19,9 +19,26 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - // 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()); + + int* dev_in; + cudaMalloc((void**)&dev_in, sizeof(int) * n); + checkCUDAError("cudaMalloc dev_in failed!"); + + int* dev_out; + cudaMalloc((void**)&dev_out, sizeof(int) * n); + checkCUDAError("cudaMalloc dev_out failed!"); + + cudaMemcpy(dev_in, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + checkCUDAError("cudaMemcpy to device failed!"); + + thrust::device_ptr dev_thrust_in = thrust::device_pointer_cast(dev_in); + thrust::device_ptr dev_thrust_out = thrust::device_pointer_cast(dev_out); + + thrust::exclusive_scan(dev_thrust_in, dev_thrust_in + n, dev_thrust_out); + + cudaMemcpy(odata, dev_out, sizeof(int) * n, cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy from device failed!"); + timer().endGpuTimer(); } } From ca451400529f5c707eca27d02e20f18ea7677744 Mon Sep 17 00:00:00 2001 From: Nithin Pranesh Date: Tue, 21 Sep 2021 23:48:39 -0400 Subject: [PATCH 5/7] more accurate timing + readme --- README.md | 37 +++++++++++++++++++++++++-------- img/proj2-results.jpg | Bin 0 -> 172759 bytes img/scan-chart.jpg | Bin 0 -> 72283 bytes stream_compaction/cpu.cu | 10 ++++----- stream_compaction/efficient.cu | 16 ++++++++------ stream_compaction/naive.cu | 8 +++---- stream_compaction/thrust.cu | 12 ++++++++--- 7 files changed, 56 insertions(+), 27 deletions(-) create mode 100644 img/proj2-results.jpg create mode 100644 img/scan-chart.jpg diff --git a/README.md b/README.md index 0e38ddb..d5a3807 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,33 @@ -CUDA Stream Compaction -====================== +**University of Pennsylvania, CIS 565: GPU Programming and Architecture, +Project 2 - CUDA Stream Compaction** -**University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** +* Nithin Pranesh + * Here are some links to connect with me: [LinkedIn](https://www.linkedin.com/in/nithin-pranesh), [YouTube](https://www.youtube.com/channel/UCAQwYrQblfN8qeDW28KkH7g/featured), [Twitter](https://twitter.com/NithinPranesh1). +* Tested on: XPS 15 7590, Windows 20H2, i7-9750H @ 2.60GHz 22GB, GTX 1650. -* (TODO) YOUR NAME HERE - * (TODO) [LinkedIn](), [personal website](), [twitter](), etc. -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +### Project 2: CUDA Stream Compaction -### (TODO: Your README) +![Screenshot of the output](img/proj2-results.jpg) -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +### Overview + +This is a series of implementations of the scan (prefix-sum) and compaction algorithms. +- Scan is an array operation that results in an identically sized array with each index containing a partial sum of the input array up to (and sometimes including) that index. +- Compaction is an array operation that results in the same list with all identity elements. This can help compress large sparse arrays to only contain actual information. + +This project includes: +- A baseline CPU implementation of scan and compact. +- A naive CUDA GPU-based approach for implementing scan. +- A work-efficient CUDA GPU-based approach for scan and an implementation of compact using this implementation of scan. +- A wrapper for the scan implementation from the "thrust" library. + +### Analysis + +![](img/scan-chart.jpg) + +Lacking a more thorough pass of optimization, the results seem contradictory. For instance, the CPU implementation seems to be the fastest up until a very large array size. Similarly, the work-efficient implementation seems paradoxically slower than the naive approach until very large array sizes. + +The CPU and naive GPU approaches are likely close to, if not exactly, optimal due to their simplicity. The work-efficient implementation on the other hand has some obvious optimization that can be done. While the work-efficient algorithm conserves work, threads are currently being launched carelessly even when they clearly will not be required to do any work on that iteration. Fixing this should result in an immediate improvement of performance. + +Lastly, varying block-size for each implementation while holding the array size fixed does not yield any significant improvement / deterioration. The typical block size of 128 seems to work fine. diff --git a/img/proj2-results.jpg b/img/proj2-results.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38a02f14a74d64487d381a7788a84ca9dfe72db5 GIT binary patch literal 172759 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%0D_H;*d>1-b+O-s?P4GjMwP+LA?-;gRXlBPQWT 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 X$kAG4w5A> > (n, dev_bools, dev_input); checkCUDAError("kernMapToBoolean failed!"); @@ -122,6 +125,8 @@ namespace StreamCompaction { Common::kernScatter << > > (n, dev_output, dev_input, dev_bools, dev_indices); checkCUDAError("kernScatter failed!"); + timer().endGpuTimer(); + cudaMemcpy(odata, dev_output, sizeof(int) * count, cudaMemcpyDeviceToHost); checkCUDAError("cudaMemcpy output to host failed!"); @@ -137,7 +142,6 @@ namespace StreamCompaction { cudaFree(dev_indices); checkCUDAError("cudaFree dev_indices failed!"); - timer().endGpuTimer(); return count; } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index c1f2c2d..d963c9e 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -28,8 +28,6 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - dim3 fullBlocksPerGrid = ((n + blockSize - 1) / blockSize); int* dev_buf0; @@ -43,6 +41,8 @@ namespace StreamCompaction { cudaMemcpy(dev_buf0, idata, sizeof(int) * n, cudaMemcpyHostToDevice); checkCUDAError("cudaMemcpy to device failed!"); + timer().startGpuTimer(); + for (int offset = 1; offset < n; offset <<= 1) { kernNaiveScanStep << > > (n, offset, dev_buf1, dev_buf0); checkCUDAError("kernNaiveScanStep failed!"); @@ -50,6 +50,8 @@ namespace StreamCompaction { std::swap(dev_buf0, dev_buf1); } + timer().endGpuTimer(); + cudaMemcpy(&odata[1], dev_buf0, sizeof(int) * (n - 1), cudaMemcpyDeviceToHost); checkCUDAError("cudaMemcpy from device failed!"); @@ -58,8 +60,6 @@ namespace StreamCompaction { cudaFree(dev_buf1); checkCUDAError("cudaFree dev_buf1 failed!"); - - timer().endGpuTimer(); } } } diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index a4f0ec4..414943b 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -18,8 +18,6 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - int* dev_in; cudaMalloc((void**)&dev_in, sizeof(int) * n); checkCUDAError("cudaMalloc dev_in failed!"); @@ -34,12 +32,20 @@ namespace StreamCompaction { thrust::device_ptr dev_thrust_in = thrust::device_pointer_cast(dev_in); thrust::device_ptr dev_thrust_out = thrust::device_pointer_cast(dev_out); + timer().startGpuTimer(); + thrust::exclusive_scan(dev_thrust_in, dev_thrust_in + n, dev_thrust_out); + timer().endGpuTimer(); + cudaMemcpy(odata, dev_out, sizeof(int) * n, cudaMemcpyDeviceToHost); checkCUDAError("cudaMemcpy from device failed!"); - timer().endGpuTimer(); + cudaFree(dev_in); + checkCUDAError("cudaFree dev_in failed!"); + + cudaFree(dev_out); + checkCUDAError("cudaFree dev_out failed!"); } } } From 34cfccea4331be864511fe3b095132f989928cc4 Mon Sep 17 00:00:00 2001 From: Nithin Pranesh Date: Tue, 21 Sep 2021 23:49:59 -0400 Subject: [PATCH 6/7] small fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d5a3807..ab637e7 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Project 2 - CUDA Stream Compaction** This is a series of implementations of the scan (prefix-sum) and compaction algorithms. - Scan is an array operation that results in an identically sized array with each index containing a partial sum of the input array up to (and sometimes including) that index. -- Compaction is an array operation that results in the same list with all identity elements. This can help compress large sparse arrays to only contain actual information. +- Compaction is an array operation that results in the same list with all identity elements removed. This can help compress large sparse arrays to only contain actual information. This project includes: - A baseline CPU implementation of scan and compact. From bf82d1a66929d0ada3a5848864b004488c43597e Mon Sep 17 00:00:00 2001 From: Nithin Pranesh Date: Tue, 21 Sep 2021 23:57:37 -0400 Subject: [PATCH 7/7] move output screenshot to the end --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ab637e7..11ba171 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,6 @@ Project 2 - CUDA Stream Compaction** ### Project 2: CUDA Stream Compaction -![Screenshot of the output](img/proj2-results.jpg) - ### Overview This is a series of implementations of the scan (prefix-sum) and compaction algorithms. @@ -31,3 +29,5 @@ The CPU and naive GPU approaches are likely close to, if not exactly, optimal du Lastly, varying block-size for each implementation while holding the array size fixed does not yield any significant improvement / deterioration. The typical block size of 128 seems to work fine. +![Screenshot of the output](img/proj2-results.jpg) +