From 2b743073c09793fff7709bd1feb44f3dfd809356 Mon Sep 17 00:00:00 2001 From: Sirui Zhu Date: Tue, 16 Sep 2025 03:41:26 -0400 Subject: [PATCH 1/8] Finished part 1 --- stream_compaction/cpu.cu | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 719fa115..01381d28 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -20,6 +20,10 @@ namespace StreamCompaction { void scan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + odata[0] = 0; + for (int k = 1; k < n; ++k) { + odata[k] = odata[k - 1] + idata[k-1]; + } timer().endCpuTimer(); } @@ -31,8 +35,15 @@ namespace StreamCompaction { int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + int counter = 0; + for (int k = 0; k < n; ++k) { + if (idata[k] != 0) { + odata[counter] = idata[k]; + counter++; + } + } timer().endCpuTimer(); - return -1; + return counter; } /** @@ -43,8 +54,28 @@ namespace StreamCompaction { int compactWithScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + int counter = 0; + int* boolArray = new int[n]; + for (int k = 0; k < n; ++k) { + if (idata[k] != 0) boolArray[k] = 1; + else boolArray[k] = 0; + } + int* scanArray = new int[n]; + scanArray[0] = 0; + for (int k = 1; k < n; ++k) { + scanArray[k] = scanArray[k - 1] + boolArray[k - 1]; + } + for (int k = 0; k < n; ++k) { + if (idata[k] != 0) { + int idx = scanArray[k]; + odata[idx] = idata[k]; + } + } + counter = scanArray[n - 1] + boolArray[n - 1]; + delete[] boolArray; + delete[] scanArray; timer().endCpuTimer(); - return -1; + return counter; } } } From 9a50c8915f1505b723dbdb8461ed30b70282fa72 Mon Sep 17 00:00:00 2001 From: Sirui Zhu Date: Wed, 17 Sep 2025 15:41:23 -0400 Subject: [PATCH 2/8] update ReadMe --- README.md | 59 ++++++++++++++++++--- src/main.cpp | 6 +-- stream_compaction/common.cu | 5 ++ stream_compaction/efficient.cu | 93 ++++++++++++++++++++++++++++++++-- stream_compaction/efficient.h | 2 +- stream_compaction/naive.cu | 33 +++++++++++- stream_compaction/thrust.cu | 10 +++- 7 files changed, 191 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 0e38ddb1..8439b910 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,59 @@ CUDA Stream Compaction **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** -* (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) +* Sirui Zhu + * [LinkedIn](https://www.linkedin.com/in/sirui-zhu-28a24a260/) +* Tested on: Windows 11, i7-13620H, RTX 4060 (Personal) -### (TODO: Your README) +# Project Description -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +This project implements different approaches to **exclusive prefix-sum (scan)** and **stream compaction** using CUDA. +The goal is to explore the efficiency of various parallel algorithms compared to a sequential CPU baseline,and each method is tested on both power-of-two and non-power-of-two array sizes. +## Features + +### CPU Scan (Reference) +A simple sequential implementation of exclusive prefix-sum used for correctness validation and as a baseline for performance. +- Runs in **O(n)** work and **O(n)** step complexity. +- Serves as the “ground truth” against which GPU implementations are compared. +- Provides useful timing benchmarks for analyzing GPU acceleration. + +--- + +### Naive GPU Scan +Implements an exclusive prefix-sum using the **up-sweep / down-sweep** style approach. +- At each iteration `d`, threads compute partial sums at increasing strides (`2^(d-1)`). +- Uses **two device buffers** (`devA`, `devB`) that swap after each iteration to hold intermediate results. +- Explicit synchronization (`cudaDeviceSynchronize()`) ensures correctness across kernel launches. +- After all iterations, results are copied back to the host, with the first element set to `0` to ensure exclusivity. +- Work complexity is **O(n log n)**, since all elements are rewritten at every depth. + +--- + +### Work-Efficient GPU Scan +A more optimized implementation of scan using the **Blelloch parallel scan algorithm**. +- Pads the input to the next power-of-two size for efficient binary tree traversal. +- **Up-sweep (reduce) phase** builds partial sums across the tree until the root contains the total sum. +- Sets the root to `0`, then performs the **down-sweep phase** to distribute prefix sums back down the tree. +- Runs in **O(n)** work and **O(log n)** depth, making it much more efficient than the naive scan. +- Handles both **power-of-two and non-power-of-two** input sizes correctly. + +--- + +### Stream Compaction +Builds on the work-efficient scan to remove unwanted elements (e.g., zeros) from an array. +- Step 1: **Map to boolean** → transforms input into a 0/1 array indicating valid elements. +- Step 2: **Scan** → exclusive prefix-sum over the boolean array produces write indices for valid elements. +- Step 3: **Scatter** → writes only the valid elements to the output buffer using the computed indices. +- Returns the count of remaining elements by combining the last values of the boolean and index arrays. +- Efficiently compresses arrays in parallel with correct ordering preserved. + +--- + +### Thrust Scan +Uses the high-level **Thrust library** to run `thrust::exclusive_scan` on the GPU. +- Provides a highly optimized, production-ready implementation. +- Serves as a performance and correctness comparison against the custom naive and work-efficient implementations. +- Highlights the trade-off between writing custom kernels (educational, flexible) and using well-tested libraries (faster, less error-prone). + +--- \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 3d5c8820..5546ec12 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 8; // feel free to change the size of array +const int SIZE = 1 << 10; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -69,14 +69,14 @@ int main(int argc, char* argv[]) { zeroArray(SIZE, c); printDesc("work-efficient scan, power-of-two"); - StreamCompaction::Efficient::scan(SIZE, c, a); + StreamCompaction::Efficient::scan(SIZE, c, a, true); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); //printArray(SIZE, c, true); printCmpResult(SIZE, b, c); zeroArray(SIZE, c); printDesc("work-efficient scan, non-power-of-two"); - StreamCompaction::Efficient::scan(NPOT, c, a); + StreamCompaction::Efficient::scan(NPOT, c, a, true); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); //printArray(NPOT, c, true); printCmpResult(NPOT, b, c); diff --git a/stream_compaction/common.cu b/stream_compaction/common.cu index 2ed6d630..94deba74 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -24,6 +24,9 @@ namespace StreamCompaction { */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { // TODO + int idx = blockIdx.x * blockDim.x + threadIdx.x; + if (idata[idx] != 0) bools[idx] = 1; + else bools[idx] = 0; } /** @@ -33,6 +36,8 @@ namespace StreamCompaction { __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { // TODO + int idx = blockIdx.x * blockDim.x + threadIdx.x; + if (bools[idx] == 1) odata[indices[idx]] = idata[idx]; } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 2db346ee..7ab156e6 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -15,10 +15,59 @@ 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(); + __global__ void UpSweepKernel(int n, int d, int* data) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + int step = powf(2, (d+1)); + int prevStep = powf(2, (d)); + int k = idx * step; + int targetK = k + step - 1; + if (targetK < n) { + data[targetK] += data[k + prevStep - 1]; + } + } + __global__ void DownSweepKernel(int n, int d, int* data) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + int step = 1 << (d + 1); + int prevStep = powf(2, (d)); + int k = idx * step; + int targetK = k + step - 1; + if (targetK < n) { + int t = data[k + prevStep - 1]; + data[k + prevStep - 1] = data[targetK]; + data[targetK] += t; + } + } + + void scan(int n, int *odata, const int *idata, bool shouldTime) { // TODO - timer().endGpuTimer(); + int nextPowOf2 = powf(2, ilog2ceil(n)); //next power of 2 of n + int* devA; + cudaMalloc((void**)&devA, nextPowOf2 * sizeof(int)); + cudaMemcpy(devA, idata, n * sizeof(int), cudaMemcpyHostToDevice); + cudaMemset(devA + n, 0, (nextPowOf2 - n) * sizeof(int)); + + dim3 blockSize(128); + + if(shouldTime) timer().startGpuTimer(); + for (int d = 0; d <= ilog2ceil(nextPowOf2); ++d) { + int newN = nextPowOf2 / (int)powf(2, d + 1); + dim3 blocks((newN + blockSize.x - 1) / blockSize.x); + UpSweepKernel << > > (nextPowOf2, d, devA); + cudaDeviceSynchronize(); + } + + cudaMemset(devA + nextPowOf2 - 1, 0, sizeof(int)); + + for (int d = ilog2ceil(nextPowOf2) - 1; d >= 0; --d) { + int newN = nextPowOf2 / (int)powf(2, d + 1); + dim3 blocks((newN + blockSize.x - 1) / blockSize.x); + DownSweepKernel << > > (nextPowOf2, d, devA); + cudaDeviceSynchronize(); + } + if (shouldTime) timer().endGpuTimer(); + cudaMemcpy(odata, devA, n * sizeof(int), cudaMemcpyDeviceToHost); + + cudaFree(devA); } /** @@ -31,10 +80,44 @@ namespace StreamCompaction { * @returns The number of elements remaining after compaction. */ int compact(int n, int *odata, const int *idata) { - timer().startGpuTimer(); // TODO + int* devA; + int* devB; + int* dev_bool; + int* dev_indices; + cudaMalloc((void**)&devA, n * sizeof(int)); + cudaMalloc((void**)&devB, n * sizeof(int)); + cudaMalloc((void**)&dev_bool, n * sizeof(int)); + cudaMalloc((void**)&dev_indices, n * sizeof(int)); + cudaMemcpy(devA, idata, n * sizeof(int), cudaMemcpyHostToDevice); + + dim3 blockSize(128); + dim3 blocks((n + blockSize.x - 1) / blockSize.x); + timer().startGpuTimer(); + //make array of bools + StreamCompaction::Common::kernMapToBoolean << > > (n, dev_bool, devA); + + //scan + scan(n, dev_indices, dev_bool, false); + + //scatter + StreamCompaction::Common::kernScatter << > > (n, devB, devA, dev_bool, dev_indices); + timer().endGpuTimer(); - return -1; + + int dev_bool_last_element, dev_indices_last_element; + cudaMemcpy(&dev_bool_last_element, dev_bool + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&dev_indices_last_element, dev_indices + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + int counter = dev_bool_last_element + dev_indices_last_element; + + cudaMemcpy(odata, devB, counter * sizeof(int), cudaMemcpyDeviceToHost); + + cudaFree(devA); + cudaFree(devB); + cudaFree(dev_bool); + cudaFree(dev_indices); + + return counter; } } } diff --git a/stream_compaction/efficient.h b/stream_compaction/efficient.h index 803cb4fe..372a1ddd 100644 --- a/stream_compaction/efficient.h +++ b/stream_compaction/efficient.h @@ -6,7 +6,7 @@ namespace StreamCompaction { namespace Efficient { StreamCompaction::Common::PerformanceTimer& timer(); - void scan(int n, int *odata, const int *idata); + void scan(int n, int *odata, const int *idata, bool shouldTime); int compact(int n, int *odata, const int *idata); } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 43088769..7371fbc8 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -12,14 +12,45 @@ namespace StreamCompaction { return timer; } // TODO: __global__ + __global__ void naiveScanKernel(int n, int d, int* odata, const int* idata) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + if (idx >= n) return; + int powerOf2 = powf(2, (d - 1)); + + if (idx >= powerOf2) { + odata[idx] = idata[idx - powerOf2] + idata[idx]; + } + else odata[idx] = idata[idx]; + } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); // TODO + + int* devA, * devB; + cudaMalloc((void**)&devA, n * sizeof(int)); + cudaMalloc((void**)&devB, n * sizeof(int)); + cudaMemcpy(devA, idata, n * sizeof(int), cudaMemcpyHostToDevice); + + dim3 blockSize(128); + dim3 blocks((n + blockSize.x - 1) / blockSize.x); + + timer().startGpuTimer(); + + for (int d = 1; d <= ilog2ceil(n); ++d){ + naiveScanKernel <<>> (n, d, devB, devA); + cudaDeviceSynchronize(); + std::swap(devA, devB); + } timer().endGpuTimer(); + + cudaMemcpy(odata + 1, devA, (n - 1) * sizeof(int), cudaMemcpyDeviceToHost); + odata[0] = 0; + + cudaFree(devA); + cudaFree(devB); } } } diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 1def45e7..054f5142 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -18,11 +18,19 @@ 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(); // 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()); + if (n <= 0) return; + thrust::device_vector d_in(idata, idata + n); + thrust::device_vector d_out(n); + + timer().startGpuTimer(); + thrust::exclusive_scan(d_in.begin(), d_in.end(), d_out.begin()); timer().endGpuTimer(); + + thrust::copy(d_out.begin(), d_out.end(), odata); + } } } From 905bad2b350eccdc770a1252a1fd7d4553e85e20 Mon Sep 17 00:00:00 2001 From: Sirui Zhu Date: Wed, 17 Sep 2025 15:45:28 -0400 Subject: [PATCH 3/8] Update README.md --- README.md | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 8439b910..99602a50 100644 --- a/README.md +++ b/README.md @@ -14,34 +14,27 @@ The goal is to explore the efficiency of various parallel algorithms compared to ## Features -### CPU Scan (Reference) +### CPU Scan A simple sequential implementation of exclusive prefix-sum used for correctness validation and as a baseline for performance. - Runs in **O(n)** work and **O(n)** step complexity. - Serves as the “ground truth” against which GPU implementations are compared. -- Provides useful timing benchmarks for analyzing GPU acceleration. - ---- ### Naive GPU Scan Implements an exclusive prefix-sum using the **up-sweep / down-sweep** style approach. -- At each iteration `d`, threads compute partial sums at increasing strides (`2^(d-1)`). +- At each iteration `d`, threads compute partial sums at increasing step (`2^(d-1)`). - Uses **two device buffers** (`devA`, `devB`) that swap after each iteration to hold intermediate results. -- Explicit synchronization (`cudaDeviceSynchronize()`) ensures correctness across kernel launches. +- Using`cudaDeviceSynchronize()`to ensure correctness across kernel launches. - After all iterations, results are copied back to the host, with the first element set to `0` to ensure exclusivity. - Work complexity is **O(n log n)**, since all elements are rewritten at every depth. ---- - ### Work-Efficient GPU Scan A more optimized implementation of scan using the **Blelloch parallel scan algorithm**. - Pads the input to the next power-of-two size for efficient binary tree traversal. -- **Up-sweep (reduce) phase** builds partial sums across the tree until the root contains the total sum. -- Sets the root to `0`, then performs the **down-sweep phase** to distribute prefix sums back down the tree. +- **Up-sweep** builds partial sums across the tree until the root contains the total sum. +- Sets the root to `0`, then performs the **down-sweep** to distribute prefix sums back down the tree. - Runs in **O(n)** work and **O(log n)** depth, making it much more efficient than the naive scan. - Handles both **power-of-two and non-power-of-two** input sizes correctly. ---- - ### Stream Compaction Builds on the work-efficient scan to remove unwanted elements (e.g., zeros) from an array. - Step 1: **Map to boolean** → transforms input into a 0/1 array indicating valid elements. @@ -50,12 +43,7 @@ Builds on the work-efficient scan to remove unwanted elements (e.g., zeros) from - Returns the count of remaining elements by combining the last values of the boolean and index arrays. - Efficiently compresses arrays in parallel with correct ordering preserved. ---- - ### Thrust Scan Uses the high-level **Thrust library** to run `thrust::exclusive_scan` on the GPU. - Provides a highly optimized, production-ready implementation. -- Serves as a performance and correctness comparison against the custom naive and work-efficient implementations. -- Highlights the trade-off between writing custom kernels (educational, flexible) and using well-tested libraries (faster, less error-prone). - ---- \ No newline at end of file +- Serves as a performance and correctness comparison against the custom naive and work-efficient implementations. \ No newline at end of file From fec489110d4c540d537e0c11526d68d8905790c4 Mon Sep 17 00:00:00 2001 From: Sirui Zhu Date: Wed, 17 Sep 2025 16:34:16 -0400 Subject: [PATCH 4/8] add blocksize analysis --- README.md | 18 +++++++++++++++++- src/main.cpp | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 99602a50..59531d30 100644 --- a/README.md +++ b/README.md @@ -46,4 +46,20 @@ Builds on the work-efficient scan to remove unwanted elements (e.g., zeros) from ### Thrust Scan Uses the high-level **Thrust library** to run `thrust::exclusive_scan` on the GPU. - Provides a highly optimized, production-ready implementation. -- Serves as a performance and correctness comparison against the custom naive and work-efficient implementations. \ No newline at end of file +- Serves as a performance and correctness comparison against the custom naive and work-efficient implementations. + +## Performance Analysis + +### Block Size (with Array Size = 1 << 23) + +| Implementation | Block Size = 128 | Block Size = 64 | Block Size = 32 | +|------------------------|------------------|-----------------|-----------------| +| **Naive Scan (Power of 2)** | 7.71331 ms | 8.90992 ms | 13.3062 ms | +| **Naive Scan (Non-Power of 2)**| 7.60579 ms | 7.78397 ms | 13.5380 ms | +| **Work-Efficient Scan (Power of 2)** | 2.99248 ms | 3.06944 ms | 4.31466 ms | +| **Work-Efficient Scan (Non-Power of 2)** | 2.02752 ms | 2.16781 ms | 2.08486 ms | + +- **Naive Scan**: Block size 128 achieved the lowest runtime for both power-of-two (7.71 ms) and non-power-of-two (7.60 ms) inputs. +- **Work-Efficient Scan**: Block size 128 also performed best, with 2.99 ms (power-of-two) and 2.03 ms (non-power-of-two). +- Smaller block sizes (64, 32) resulted in noticeably slower runtimes. +- Therefore, the optimized block size for this GPU is **128 threads** per block. \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 5546ec12..a553af9b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 10; // feel free to change the size of array +const int SIZE = 1 << 23; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; From 02e7fc2650e24e656f0ef7ed0c589a1ee348bea7 Mon Sep 17 00:00:00 2001 From: Sirui Zhu Date: Wed, 17 Sep 2025 18:01:35 -0400 Subject: [PATCH 5/8] Update Readme --- ArraySize.png | Bin 0 -> 162569 bytes README.md | 77 ++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 ArraySize.png diff --git a/ArraySize.png b/ArraySize.png new file mode 100644 index 0000000000000000000000000000000000000000..8ede0a6779c0f54aff83f03dfead1cd00ac2c846 GIT binary patch literal 162569 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 Date: Wed, 17 Sep 2025 18:10:28 -0400 Subject: [PATCH 6/8] Update README.md --- README.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 75557b1a..e81aa6ca 100644 --- a/README.md +++ b/README.md @@ -21,17 +21,17 @@ A simple sequential implementation of exclusive prefix-sum used for correctness ### Naive GPU Scan The Naive scan is a straightforward parallel implementation that computes prefix sums using multiple passes with increasing strides. -- At each iteration `d`, threads compute partial sums at increasing step (`2^(d-1)`). -- Uses **two device buffers** (`devA`, `devB`) that swap after each iteration to hold intermediate results. -- Using`cudaDeviceSynchronize()`to ensure correctness across kernel launches. -- After all iterations, results are copied back to the host, with the first element set to `0` to ensure exclusivity. +- At each iteration d, threads compute partial sums at increasing step (2^(d-1)). +- Uses **two device buffers** (devA, devB) that swap after each iteration to hold intermediate results. +- Using cudaDeviceSynchronize() to ensure correctness across kernel launches. +- After all iterations, results are copied back to the host, with the first element set to 0 to ensure exclusivity. - Work complexity is **O(n log n)**, since all elements are rewritten at every depth. ### Work-Efficient GPU Scan A more optimized implementation of scan using the **Blelloch parallel scan algorithm**. - Pads the input to the next power-of-two size for efficient binary tree traversal. - **Up-sweep** builds partial sums across the tree until the root contains the total sum. -- Sets the root to `0`, then performs the **down-sweep** to distribute prefix sums back down the tree. +- Sets the root to 0, then performs the **down-sweep** to distribute prefix sums back down the tree. - Runs in **O(n)** work and **O(log n)** depth, making it much more efficient than the naive scan. - Handles both **power-of-two and non-power-of-two** input sizes correctly. @@ -44,7 +44,7 @@ Builds on the work-efficient scan to remove unwanted elements (e.g., zeros) from - Efficiently compresses arrays in parallel with correct ordering preserved. ### Thrust Scan -Uses the high-level **Thrust library** to run `thrust::exclusive_scan` on the GPU. +Uses the high-level Thrust library to run thrust::exclusive_scan on the GPU. - Provides a highly optimized, production-ready implementation. - Serves as a performance and correctness comparison against the custom naive and work-efficient implementations. @@ -67,23 +67,23 @@ Uses the high-level **Thrust library** to run `thrust::exclusive_scan` on the GP ### Array Size ![Scan Performance vs Array Size](ArraySize.png) -When comparing performance across increasing array sizes (`2^16` to `2^23`), each scan implementation demonstrates distinct scaling behavior and bottlenecks: +When comparing performance across increasing array sizes (2^16 to 2^23), each scan implementation demonstrates distinct scaling behavior and bottlenecks: #### CPU Scan -The CPU version is the simplest one: it just loops through the array one element at a time. This means it does `O(n)` work but has no parallelism. As the array size grows, the runtime grows almost perfectly linearly, reaching ~15 ms at `2^23`. The main bottleneck here is computation since everything happens sequentially. This works fine for small arrays, but it quickly falls behind compared to the GPU versions. +The CPU version is the simplest one: it just loops through the array one element at a time. This means it does **O(n)** work but has no parallelism. As the array size grows, the runtime grows almost perfectly linearly, reaching ~15 ms at 2^23. The main bottleneck here is computation since everything happens sequentially. This works fine for small arrays, but it quickly falls behind compared to the GPU versions. #### Naive GPU Scan -The Naive GPU scan improves over the CPU by letting many threads work in parallel, but the algorithm itself is inefficient. At each pass, every element is rewritten, and this happens for `log₂(n)` passes. This adds up to `O(n log n)` total work. Two buffers are swapped back and forth every pass, and synchronization is needed between iterations. The result is lots of redundant computation and heavy global memory traffic. It can beat the CPU for smaller arrays, but as the size grows, the wasted work makes it much slower than more optimized scans. +The Naive GPU scan improves over the CPU by letting many threads work in parallel, but the algorithm itself is inefficient. At each pass, every element is rewritten, and this happens for **log₂(n)** passes. This adds up to **O(n log n)** total work. Two buffers are swapped back and forth every pass, and synchronization is needed between iterations. The result is lots of redundant computation and heavy global memory traffic. It can beat the CPU for smaller arrays, but as the size grows, the wasted work makes it much slower than more optimized scans. #### Work-Efficient GPU Scan -The Work-Efficient scan improves on the Naive version by avoiding a lot of wasted work. It only does about `O(n)` total operations, which makes it scale much better for large arrays. In practice, it runs faster than the Naive scan once the input gets big enough. The main drawback is that its memory access pattern is not always ideal — threads sometimes read and write from scattered locations instead of lined-up ones. Since the actual math per thread is very small, the performance ends up limited by memory bandwidth, rather than by computation. This makes it efficient, but still not as fast as Thrust. +The Work-Efficient scan improves on the Naive version by avoiding a lot of wasted work. It only does about O(n) total operations, which makes it scale much better for large arrays. In practice, it runs faster than the Naive scan once the input gets big enough. The main drawback is that its memory access pattern is not always ideal — threads sometimes read and write from scattered locations instead of lined-up ones. Since the actual math per thread is very small, the performance ends up limited by memory bandwidth, rather than by computation. This makes it efficient, but still not as fast as Thrust. #### Thrust Scan -Thrust is by far the fastest method. Even with very large arrays like `2^23`, it finishes in under 1 ms. It’s a library function that is highly optimized for the GPU. It seems to make very efficient use of memory and parallelism, so the runtime ends up being limited only by how fast data can be moved in and out of GPU memory. The math itself is so quick that memory bandwidth is the main bottleneck. +Thrust is by far the fastest method. Even with very large arrays like 2^23, it finishes in under 1 ms. It’s a library function that is highly optimized for the GPU. It seems to make very efficient use of memory and parallelism, so the runtime ends up being limited only by how fast data can be moved in and out of GPU memory. The math itself is so quick that memory bandwidth is the main bottleneck. ## Test Output - +``` **************** ** SCAN TESTS ** **************** @@ -136,3 +136,5 @@ Thrust is by far the fastest method. Even with very large arrays like `2^23`, it ==== work-efficient compact, non-power-of-two ==== elapsed time: 0.733088ms (CUDA Measured) passed + +``` \ No newline at end of file From d5a04ed585496b38a1fd13c181968ca326294777 Mon Sep 17 00:00:00 2001 From: Sirui Zhu Date: Wed, 17 Sep 2025 18:12:46 -0400 Subject: [PATCH 7/8] Update README.md --- README.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index e81aa6ca..46548ffd 100644 --- a/README.md +++ b/README.md @@ -81,60 +81,60 @@ The Work-Efficient scan improves on the Naive version by avoiding a lot of waste #### Thrust Scan Thrust is by far the fastest method. Even with very large arrays like 2^23, it finishes in under 1 ms. It’s a library function that is highly optimized for the GPU. It seems to make very efficient use of memory and parallelism, so the runtime ends up being limited only by how fast data can be moved in and out of GPU memory. The math itself is so quick that memory bandwidth is the main bottleneck. -## Test Output +## Test Output (blocksize = 128, arrayssize = 2^23) ``` **************** ** SCAN TESTS ** **************** - [ 27 18 49 22 1 45 28 29 35 31 40 1 36 ... 27 0 ] + [ 43 33 42 12 32 37 32 13 10 20 37 6 17 ... 2 0 ] ==== cpu scan, power-of-two ==== - elapsed time: 0.1091ms (std::chrono Measured) - [ 0 27 45 94 116 117 162 190 219 254 285 325 326 ... 1607668 1607695 ] + elapsed time: 13.384ms (std::chrono Measured) + [ 0 43 76 118 130 162 199 231 244 254 274 311 317 ... 205512735 205512737 ] ==== cpu scan, non-power-of-two ==== - elapsed time: 0.1352ms (std::chrono Measured) - [ 0 27 45 94 116 117 162 190 219 254 285 325 326 ... 1607580 1607616 ] + elapsed time: 14.9413ms (std::chrono Measured) + [ 0 43 76 118 130 162 199 231 244 254 274 311 317 ... 205512673 205512693 ] passed ==== naive scan, power-of-two ==== - elapsed time: 0.493056ms (CUDA Measured) + elapsed time: 8.56035ms (CUDA Measured) passed ==== naive scan, non-power-of-two ==== - elapsed time: 0.388224ms (CUDA Measured) + elapsed time: 8.88022ms (CUDA Measured) passed ==== work-efficient scan, power-of-two ==== - elapsed time: 0.781056ms (CUDA Measured) + elapsed time: 2.5047ms (CUDA Measured) passed ==== work-efficient scan, non-power-of-two ==== - elapsed time: 1.94253ms (CUDA Measured) + elapsed time: 2.1801ms (CUDA Measured) passed ==== thrust scan, power-of-two ==== - elapsed time: 0.084992ms (CUDA Measured) + elapsed time: 0.925696ms (CUDA Measured) passed ==== thrust scan, non-power-of-two ==== - elapsed time: 0.076576ms (CUDA Measured) + elapsed time: 1.0856ms (CUDA Measured) passed ***************************** ** STREAM COMPACTION TESTS ** ***************************** - [ 1 2 3 0 1 1 2 1 1 1 2 3 2 ... 3 0 ] + [ 1 3 2 2 2 3 2 1 2 2 1 2 1 ... 0 0 ] ==== cpu compact without scan, power-of-two ==== - elapsed time: 0.1351ms (std::chrono Measured) - [ 1 2 3 1 1 2 1 1 1 2 3 2 1 ... 1 3 ] + elapsed time: 21.1336ms (std::chrono Measured) + [ 1 3 2 2 2 3 2 1 2 2 1 2 1 ... 1 1 ] passed ==== cpu compact without scan, non-power-of-two ==== - elapsed time: 0.1345ms (std::chrono Measured) - [ 1 2 3 1 1 2 1 1 1 2 3 2 1 ... 3 3 ] + elapsed time: 20.2159ms (std::chrono Measured) + [ 1 3 2 2 2 3 2 1 2 2 1 2 1 ... 2 1 ] passed ==== cpu compact with scan ==== - elapsed time: 0.3479ms (std::chrono Measured) - [ 1 2 3 1 1 2 1 1 1 2 3 2 1 ... 1 3 ] + elapsed time: 50.2771ms (std::chrono Measured) + [ 1 3 2 2 2 3 2 1 2 2 1 2 1 ... 1 1 ] passed ==== work-efficient compact, power-of-two ==== - elapsed time: 0.866752ms (CUDA Measured) + elapsed time: 11.0327ms (CUDA Measured) passed ==== work-efficient compact, non-power-of-two ==== - elapsed time: 0.733088ms (CUDA Measured) + elapsed time: 5.73254ms (CUDA Measured) passed ``` \ No newline at end of file From 4ca8ae7fe8e26723c1ab15dba6b0b85dbba05a6b Mon Sep 17 00:00:00 2001 From: Sirui Zhu Date: Wed, 17 Sep 2025 18:15:14 -0400 Subject: [PATCH 8/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 46548ffd..67514d56 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ The Work-Efficient scan improves on the Naive version by avoiding a lot of waste #### Thrust Scan Thrust is by far the fastest method. Even with very large arrays like 2^23, it finishes in under 1 ms. It’s a library function that is highly optimized for the GPU. It seems to make very efficient use of memory and parallelism, so the runtime ends up being limited only by how fast data can be moved in and out of GPU memory. The math itself is so quick that memory bandwidth is the main bottleneck. -## Test Output (blocksize = 128, arrayssize = 2^23) +## Test Output (blocksize = 128, arraysize = 1 << 23) ``` ****************