From 87b7c3901b8516575ba7e2e5ce5cfecd0c5fa96c Mon Sep 17 00:00:00 2001 From: JeffersonKoumbaMoussadjiLu Date: Mon, 15 Sep 2025 13:17:08 -0400 Subject: [PATCH 1/8] Add working code for stream_copaction/cpu.cu. Passing all test cases for CPU --- src/main.cpp | 2 ++ stream_compaction/cpu.cu | 76 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 75 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3d5c8820..7e0425f0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,6 +13,8 @@ #include #include "testing_helpers.hpp" +//const int SIZE = 1 << 8; // feel free to change the size of array + const int SIZE = 1 << 8; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 719fa115..67caeed5 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -20,7 +20,23 @@ namespace StreamCompaction { void scan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO - timer().endCpuTimer(); + + // exclusive scan + if (n <= 0) { + + // Empty input, nothing to do + timer().endCpuTimer(); + return; + } + + odata[0] = 0; // first element is always 0 for exclusive scan + + // compute the rest of the elements + for (int i = 1; i < n; ++i) { + odata[i] = odata[i - 1] + idata[i - 1]; // exclusive scan + } + + timer().endCpuTimer(); } /** @@ -31,10 +47,26 @@ namespace StreamCompaction { int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + + int count = 0; // number of non-zero elements + + // iterate through input array + for (int i = 0; i < n; ++i) { + + if (idata[i] != 0) { // keep only non-zero elements + odata[count] = idata[i]; // write to output array + count++; // increment count + } + } + timer().endCpuTimer(); - return -1; + + return count; // return number of non-zero elements + //return -1; } + + /** * CPU stream compaction using scan and scatter, like the parallel version. * @@ -43,8 +75,46 @@ namespace StreamCompaction { int compactWithScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + + // Handle edge case of empty input + if (n <= 0) { + timer().endCpuTimer(); + return 0; + } + + // Map to boolean array (1 for non-zero, 0 for zero) + int* bools = new int[n]; + for (int i = 0; i < n; ++i) { + bools[i] = (idata[i] != 0) ? 1 : 0; + } + + // Exclusive prefix sum (scan) on the boolean array + int* indices = new int[n]; // to hold the scanned indices + indices[0] = 0; // first element is always 0 for exclusive scan + + // Compute the rest of the elements + for (int i = 1; i < n; ++i) { + indices[i] = indices[i - 1] + bools[i - 1]; // exclusive scan + } + + // Compute total count of non-zero elements + int count = indices[n - 1] + bools[n - 1]; + + // Scatter - Write all non-zero elements to odata at computed indices + for (int i = 0; i < n; ++i) { + + // If the element is non-zero, write it to the output array at the scanned index + if (bools[i] == 1) { + odata[indices[i]] = idata[i]; // scatter + } + } + + delete[] bools; // free temporary boolean array + delete[] indices; // free temporary indices array + timer().endCpuTimer(); - return -1; + return count; // return number of non-zero elements + //return -1; } } } From a677d860d9d013d1bdacec746ccd27a98120c8cb Mon Sep 17 00:00:00 2001 From: JeffersonKoumbaMoussadjiLu Date: Mon, 15 Sep 2025 15:16:25 -0400 Subject: [PATCH 2/8] Passing all test cases of Naive GPU scan --- src/main.cpp | 2 +- stream_compaction/naive.cu | 64 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 7e0425f0..0b30d70b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,7 +15,7 @@ //const int SIZE = 1 << 8; // feel free to change the size of array -const int SIZE = 1 << 8; // feel free to change the size of array +const int SIZE = 100000; // 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]; diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 43088769..68ce8d3c 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -13,13 +13,77 @@ namespace StreamCompaction { } // TODO: __global__ + // Performs one step of the scan, with the given offset + __global__ void kernScanStep(int n, int offset, const int* idata, int* odata) { + + int k = threadIdx.x + blockIdx.x * blockDim.x; // map from threadIdx to array index + + if (k >= n) return; // check array bounds + + if (k >= offset) { + // Add the element from index [k - offset] (previous partial sum) + odata[k] = idata[k] + idata[k - offset]; + } + else { + // Copy the element as is (no element to add from behind) + odata[k] = idata[k]; + } + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + + //TODO + // Allocate device memory + if (n <= 0) { + return; // no elements to scan + } + + int* dev_in = nullptr; // input array + int* dev_out = nullptr; // output array + cudaMalloc(&dev_in, n * sizeof(int)); // allocate device memory + cudaMalloc(&dev_out, n * sizeof(int)); // allocate device memory + checkCUDAError("cudaMalloc failed for scan buffers"); // check for errors + + // Exclusive scan initial state: dev_in[0] = 0, dev_in[1..n-1] = idata[0..n-2] + cudaMemset(dev_in, 0, sizeof(int)); // set first element to 0 + if (n > 1) { + cudaMemcpy(dev_in + 1, idata, (n - 1) * sizeof(int), cudaMemcpyHostToDevice); // copy rest of elements + } + checkCUDAError("cudaMemcpy H2D for input data"); // check for errors + + timer().startGpuTimer(); // TODO + + // Iterative up-sweep (Hillis-Steele): offset = 1, 2, 4, ... < n + const int blockSize = 128; // number of threads per block + + // Ping-pong buffers: in each iteration, read from dev_in, write to dev_out, then swap + for (int offset = 1; offset < n; offset *= 2) { + + // Launch kernel + int fullBlocks = (n + blockSize - 1) / blockSize; + kernScanStep << > > (n, offset, dev_in, dev_out); // launch kernel + checkCUDAError("kernScanStep kernel"); // check for errors + + cudaDeviceSynchronize(); // wait for kernel to finish, for timing purposes only + // Swap the ping-pong buffers for next iteration + int* temp = dev_in; + dev_in = dev_out; + dev_out = temp; + } + timer().endGpuTimer(); + + // At this point, dev_in holds the scanned output (because of final swap) + cudaMemcpy(odata, dev_in, n * sizeof(int), cudaMemcpyDeviceToHost); // copy result back to host + checkCUDAError("cudaMemcpy D2H for scan result"); // check for errors + + cudaFree(dev_in); // free device memory + cudaFree(dev_out); // free device memory } } } From bf4f0735c62889fbc6c269b61b8856e213627fef Mon Sep 17 00:00:00 2001 From: JeffersonKoumbaMoussadjiLu Date: Mon, 15 Sep 2025 21:33:44 -0400 Subject: [PATCH 3/8] adding the code for efficiency passing all work-effecient scan --- src/main.cpp | 2 +- stream_compaction/efficient.cu | 79 ++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 0b30d70b..7e0425f0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,7 +15,7 @@ //const int SIZE = 1 << 8; // feel free to change the size of array -const int SIZE = 100000; // feel free to change the size of array +const int SIZE = 1 << 8; // 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]; diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 2db346ee..de1587d8 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -12,13 +12,92 @@ namespace StreamCompaction { return timer; } + // __global__ kernels and device code here + + // Up-Sweep (reduce) kernel + __global__ void kernUpSweep(int n, int step, int* data) { + int index = (threadIdx.x + blockIdx.x * blockDim.x) * step + (step - 1); // get the index of the last element in the current segment + + // make sure we don't go out of bounds + if (index < n) { + data[index] += data[index - step / 2]; // add the value of the left child to the parent + } + } + + // Down-Sweep kernel + __global__ void kernDownSweep(int n, int step, int* data) { + + int index = (threadIdx.x + blockIdx.x * blockDim.x) * step + (step - 1); // get the index of the last element in the current segment + + // make sure we don't go out of bounds + if (index < n) { + int left = index - step / 2; // get the index of the left child + int t = data[left]; // store the left child's value + data[left] = data[index]; // set the left child's value to the parent's value + data[index] += t; // set the parent's value to the sum of the left child's value and the parent's value + } + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + + // TODO + // Edge case: if n <= 0, return + if (n <= 0) { + return; + } + + // Allocate space rounded up to next power of two + int pow2 = 1 << ilog2ceil(n); // next power of 2 + int* dev_data = nullptr; // device array + cudaMalloc(&dev_data, pow2 * sizeof(int)); // allocate device memory + checkCUDAError("cudaMalloc dev_data for efficient scan"); // check for errors + + // Copy input data to device and pad the rest with 0s + cudaMemcpy(dev_data, idata, n * sizeof(int), cudaMemcpyHostToDevice); // copy input data to device + + // Pad the rest with 0s + if (pow2 > n) { + cudaMemset(dev_data + n, 0, (pow2 - n) * sizeof(int)); // set the rest to 0 + } + checkCUDAError("cudaMemcpy H2D and padding for efficient scan"); // check for errors + timer().startGpuTimer(); // TODO + + const int blockSize = 128; // number of threads per block + + // Up-sweep (reduce) phase: build sum in place + for (int step = 2; step <= pow2; step *= 2) { + int threads = pow2 / step; // number of add operations at this level + int fullBlocks = (threads + blockSize - 1) / blockSize; // number of blocks needed + kernUpSweep << > > (pow2, step, dev_data); // launch kernel + checkCUDAError("kernUpSweep kernel"); // check for errors + } + + // Set the last element (total sum) to 0 for exclusive scan + cudaMemset(dev_data + (pow2 - 1), 0, sizeof(int)); // set the last element to 0 + checkCUDAError("cudaMemset root (exclusive scan)"); // check for errors + + // Down-sweep phase: distribute the prefix sums + for (int step = pow2; step >= 2; step /= 2) { + + // launch kernel + int threads = pow2 / step; // number of add operations at this level + int fullBlocks = (threads + blockSize - 1) / blockSize; // number of blocks needed + kernDownSweep << > > (pow2, step, dev_data); // launch kernel + checkCUDAError("kernDownSweep kernel"); // check for errors + } + timer().endGpuTimer(); + + // Read back the scanned result (first n elements) + cudaMemcpy(odata, dev_data, n * sizeof(int), cudaMemcpyDeviceToHost); // copy result back to host + checkCUDAError("cudaMemcpy D2H for efficient scan result"); // check for errors + + cudaFree(dev_data); // free device memory } /** From 332334914a539a9120227d41617c4c86fd4aee87 Mon Sep 17 00:00:00 2001 From: JeffersonKoumbaMoussadjiLu Date: Mon, 15 Sep 2025 23:20:46 -0400 Subject: [PATCH 4/8] Adding stream compaction efficient.cu final with all work-efficient compact --- stream_compaction/common.cu | 13 +++++ stream_compaction/efficient.cu | 92 +++++++++++++++++++++++++++++++++- 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/stream_compaction/common.cu b/stream_compaction/common.cu index 2ed6d630..0ce27a17 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -24,6 +24,11 @@ namespace StreamCompaction { */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { // TODO + + int idx = threadIdx.x + (blockIdx.x * blockDim.x); // map from threadIdx/blockIdx to element idx + if (idx >= n) return; // if idx is out of bounds, return + bools[idx] = (idata[idx] != 0) ? 1 : 0; // map to 1 if idata[idx] is non-zero, else map to 0 + } /** @@ -33,6 +38,14 @@ namespace StreamCompaction { __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { // TODO + + int idx = threadIdx.x + (blockIdx.x * blockDim.x); // map from threadIdx/blockIdx to element idx + if (idx >= n) return; // if idx is out of bounds, return + + // if bools[idx] is 1, copy idata[idx] to odata[indices[idx]] + if (bools[idx] == 1) { + odata[indices[idx]] = idata[idx]; // scatter + } } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index de1587d8..d35793d9 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -112,8 +112,98 @@ namespace StreamCompaction { int compact(int n, int *odata, const int *idata) { timer().startGpuTimer(); // TODO + + // Edge case: if n <= 0, return 0 + if (n <= 0) { + timer().endGpuTimer(); + return 0; + } + + // Device memory allocation + int* dev_idata = nullptr; // device input array + int* dev_bools = nullptr; // device boolean array + int* dev_indices = nullptr; // device indices array + int* dev_odata = nullptr; // device output array + + cudaMalloc(&dev_idata, n * sizeof(int)); // allocate device memory for input + cudaMalloc(&dev_bools, n * sizeof(int)); // allocate device memory for boolean array + cudaMalloc(&dev_odata, n * sizeof(int)); // allocate device memory for output + checkCUDAError("cudaMalloc failed for compaction arrays"); + + // We will allocate dev_indices with padding for scan + int pow2 = 1 << ilog2ceil(n); // next power of 2 + cudaMalloc(&dev_indices, pow2 * sizeof(int)); // allocate device memory for indices with padding + checkCUDAError("cudaMalloc failed for indices array"); // check for errors + + // Copy input to device + cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); // copy input data to device + checkCUDAError("cudaMemcpy H2D for compaction input"); // check for errors + + // Map input to booleans (1 = keep, 0 = discard) + int blockSize = 128; // number of threads per block + int fullBlocks = (n + blockSize - 1) / blockSize; // number of blocks needed + StreamCompaction::Common::kernMapToBoolean <<>> (n, dev_bools, dev_idata); // launch kernel + checkCUDAError("kernMapToBoolean kernel"); // check for errors + + // Scan on dev_bools -> dev_indices (inclusive of padding) + // Copy bools to indices array (and pad remaining space with 0) + cudaMemcpy(dev_indices, dev_bools, n * sizeof(int), cudaMemcpyDeviceToDevice); // copy bools to indices + + if (pow2 > n) { + cudaMemset(dev_indices + n, 0, (pow2 - n) * sizeof(int)); // pad remaining space with 0 + } + checkCUDAError("copy + pad boolean array for scan"); + + // Up-sweep phase on indices array + for (int step = 2; step <= pow2; step *= 2) { + + int threads = pow2 / step; // number of add operations at this level + fullBlocks = (threads + blockSize - 1) / blockSize; // number of blocks needed + kernUpSweep <<>> (pow2, step, dev_indices); // launch kernel + checkCUDAError("kernUpSweep (compaction) kernel"); + } + + // Set last element to 0 (prepare for exclusive scan) + cudaMemset(dev_indices + (pow2 - 1), 0, sizeof(int)); // set last element to 0 + checkCUDAError("cudaMemset root for compaction scan"); + + // Down-sweep phase + for (int step = pow2; step >= 2; step /= 2) { + + int threads = pow2 / step; // number of add operations at this level + fullBlocks = (threads + blockSize - 1) / blockSize; // number of blocks needed + kernDownSweep <<>> (pow2, step, dev_indices); // launch kernel + checkCUDAError("kernDownSweep (compaction) kernel"); + } + + // Scatter non-zero elements to output array using computed indices + fullBlocks = (n + blockSize - 1) / blockSize; // number of blocks needed + StreamCompaction::Common::kernScatter <<>> ( + n, dev_odata, dev_idata, dev_bools, dev_indices); // launch kernel + checkCUDAError("kernScatter kernel"); + + timer().endGpuTimer(); - return -1; + + // Copy compacted data back to host + cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy D2H for compaction output"); + + // Compute and return count of non-zero elements + int count = 0; + int lastBool, lastIndex; + cudaMemcpy(&lastBool, dev_bools + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&lastIndex, dev_indices + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy D2H for compaction count"); + if (n > 0) { + count = lastIndex + lastBool; + } + + cudaFree(dev_idata); + cudaFree(dev_bools); + cudaFree(dev_indices); + cudaFree(dev_odata); + return count; } } } From 44fef898e66fee2d6f151f30b877d0377b853599 Mon Sep 17 00:00:00 2001 From: JeffersonKoumbaMoussadjiLu Date: Tue, 16 Sep 2025 00:30:43 -0400 Subject: [PATCH 5/8] adding thrust.cu code passing all test cases with block size 128 and array size 2**24 --- src/main.cpp | 2 +- stream_compaction/efficient.cu | 2 +- stream_compaction/naive.cu | 2 +- stream_compaction/thrust.cu | 23 +++++++++++++++++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 7e0425f0..8492512a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,7 +15,7 @@ //const int SIZE = 1 << 8; // feel free to change the size of array -const int SIZE = 1 << 8; // feel free to change the size of array +const int SIZE = 1 << 24; // 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]; diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index d35793d9..9b82b39c 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -67,7 +67,7 @@ namespace StreamCompaction { timer().startGpuTimer(); // TODO - const int blockSize = 128; // number of threads per block + const int blockSize = 128; //128 // number of threads per block // Up-sweep (reduce) phase: build sum in place for (int step = 2; step <= pow2; step *= 2) { diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 68ce8d3c..ab792d10 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -59,7 +59,7 @@ namespace StreamCompaction { // TODO // Iterative up-sweep (Hillis-Steele): offset = 1, 2, 4, ... < n - const int blockSize = 128; // number of threads per block + const int blockSize = 128; //128 // number of threads per block // Ping-pong buffers: in each iteration, read from dev_in, write to dev_out, then swap for (int offset = 1; offset < n; offset *= 2) { diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 1def45e7..7ab62036 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -18,11 +18,34 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + + // TODO use `thrust::exclusive_scan` + if (n <= 0) { + return; + } + + // Allocate device_vectors and copy input data + thrust::device_vector dv_in(n); // device_vector manages memory and automatically cleans up + thrust::device_vector dv_out(n); // device_vector manages memory and automatically cleans up + cudaMemcpy(thrust::raw_pointer_cast(dv_in.data()), idata, + n * sizeof(int), cudaMemcpyHostToDevice); // copy input array to device + checkCUDAError("cudaMemcpy H2D for thrust scan input"); + + 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()); + + // Use Thrust library's exclusive_scan on the device vector + thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + timer().endGpuTimer(); + + // Copy result back to host + cudaMemcpy(odata, thrust::raw_pointer_cast(dv_out.data()), + n * sizeof(int), cudaMemcpyDeviceToHost); // copy output array to host + checkCUDAError("cudaMemcpy D2H for thrust scan output"); } } } From b1a8bc548be0f79dfe445cd03e18357d403ad493 Mon Sep 17 00:00:00 2001 From: JeffersonKoumbaMoussadjiLu Date: Tue, 16 Sep 2025 22:58:21 -0400 Subject: [PATCH 6/8] Add my working code with everything, extra credits, and read.me --- README.md | 269 ++++++++++++++++++++++++- img/Stream_compaction.png | Bin 0 -> 12932 bytes img/UpSweep.jpg | Bin 0 -> 61647 bytes img/impact_by_array_size.png | Bin 0 -> 191910 bytes img/impact_by_block_size.png | Bin 0 -> 138793 bytes src/main.cpp | 47 +++++ stream_compaction/CMakeLists.txt | 2 +- stream_compaction/efficient.cu | 324 ++++++++++++++++++++++++++++++- stream_compaction/efficient.h | 11 +- 9 files changed, 641 insertions(+), 12 deletions(-) create mode 100644 img/Stream_compaction.png create mode 100644 img/UpSweep.jpg create mode 100644 img/impact_by_array_size.png create mode 100644 img/impact_by_block_size.png diff --git a/README.md b/README.md index 0e38ddb1..0bbe9882 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,265 @@ -CUDA Stream Compaction -====================== +# **Project 2 - CUDA Stream Compaction** +## **University of Pennsylvania, CIS 5650: GPU Programming and Architecture** -**University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** +* Jefferson Koumba Moussadji Lu + * [LinkedIn](https://www.linkedin.com/in/-jeff-koumba-0b356721b/) +* Tested on: Personal Laptop, Windows 11 Home, Intel(R) Core(TM) i9-14900HX @ 2.22GHz @ 24 Cores @ 32GB RAM, Nvidia GeForce RTX 4090 @ 16 GB @ SM 8.9 -* (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) +

+ +

Stream Compaction

+

-### (TODO: Your README) +## Overview -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +Stream compaction is a parallel algorithm for filtering out elements from an array that do not meet a given condition, while preserving the order of the remaining elements. In other words, given an input array and a predicate (e.g. "is non-zero"), stream compaction produces a new output array containing only the elements that satisfy the predicate, in their original order. This operation is important in GPU programs to reduce unnecessary processing and memory transfer of unwanted data. It is widely used in applications like particle filtering, path tracing (to compact out terminated rays), collision detection, and sparse matrix operations. +By compacting data on the GPU, we minimize bandwidth usage when copying results back to the CPU and avoid serial processing of irrelevant elements. +A prefix-sum scan is the backbone of efficient stream compaction. A scan computes an array of prefix sums from an input array. For example, an inclusive prefix sum with addition on input ```[1 ,3, 5, 9]``` would produce ```[1, 4, 9, 18]``` (each output is the sum of all inputs up to that index). + +In this project, we focus on the exclusive scan, where the output is shifted right by one, and the first element is the identity (0 for sum). The scan is fundamental because it can quickly produce indices for writing compacted output in parallel. + +### Summary of features: + +We implemented multiple versions of scan and stream compaction on both CPU and GPU and compared their performance. The features include: + +- CPU Scan and CPU Stream Compaction (both a direct without-scan method and a with-scan method using prefix sum). + +- Naive Parallel Scan (GPU) - a work-inefficient but simple CUDA implementation. + +- Work-Efficient Parallel Scan (GPU) - an optimized scan using the Blelloch algorithm (up-sweep/down-sweep), and GPU stream compaction based on this scan. + +- Thrust Library Scan (GPU) - using CUDA Thrust’s exclusive scan for comparison. + +- Shared Memory & Radix sort: An optimized scan with shared memory for better performance, and a Parallel Radix Sort (stable, scan-based) that supports sorting signed 32-bit integers using our scan primitives. + +## Features Implemented + +### CPU Scan & Stream Compaction (CPU) + +We implemented a straightforward CPU exclusive scan and two versions of CPU stream compaction to verify correctness and provide baseline performance. The CPU scan simply iterates through the array accumulating a running sum, which runs in O(N) time. +For compaction, we developed: +- ```compactWithoutScan``` (CPU): a simple loop that checks each element and writes it to the output array if it meets the condition (non-zero, in our case). This approach filters values in one pass. + +- ```compactWithScan``` (CPU): a two-pass method that first builds a boolean mask array (1 for elements to keep, 0 for discard), then performs a prefix-sum scan on this mask to compute output indices, and finally scatters the input values to their computed positions. This method uses the scan operation to achieve compaction. + +Both CPU compaction methods produce identical results, but the direct ```compactWithoutScan``` is faster on the CPU since it does minimal work. Using a full scan on the CPU adds overhead that isn’t worthwhile in serial contexts. In our tests, the simple loop compaction outpaced the scan-based approach on CPU (as expected), reflecting that the scan method’s benefit lies in parallelization rather than efficiency on a single core. These CPU implementations served as a correctness reference for the GPU versions. + +### Naive Parallel Scan (GPU) + +

+ +

This image is an implementation of an inclusive scan. To convert this to an exclusive scan, we can simply shift the inclusive scan results one position to the right

+ +The naive GPU scan is an exclusive prefix sum implemented using a parallel version of the classic Hillis & Steele algorithm (also known as the Kogge-Stone scan). This approach is called “naive” because it is not work-efficient: it performs O(N log N) operations for an array of length N. + +The algorithm runs in $\lceil \log_2 N \rceil$ iterations; in the d-th iteration, each thread reads two values separated by $2^{d-1}$ and adds them, writing the partial sum. By iteration’s end, the array is transformed into an inclusive scan. We convert it to an exclusive scan by shifting the results right and inserting the identity (0) at the start. + +Our implementation launches enough threads to cover the array and uses GPU global memory for all reads/writes at each step. This simple approach keeps all threads busy each iteration (no branching based on index) and is relatively easy to implement. However, it does significantly more work than necessary since each element’s value is involved in many repeated additions across iterations. The naive scan also issues many global memory transactions due to repeatedly reading and writing the array on each iteration. We took care to handle non-power-of-two (NPOT) array sizes by checking bounds before accessing out-of-range indices on each iteration. The result is a correct exclusive scan that’s easy to verify but not optimal in terms of GPU work efficiency. + +### Work-Efficient Scan & Compaction (GPU) + +For a faster parallel scan, we implemented the work-efficient Blelloch scan algorithm. This approach performs only O(N) operations by using a balanced binary tree method in two phases: an up-sweep (reduce) and a down-sweep. In the up-sweep, the kernel recursively reduces the array: pairs of elements are summed to form partial sums at increasing stride distances (1, 2, 4, ...), until the last element contains the total sum. In the down-sweep phase, we first set the last element to 0 (this ensures an exclusive scan result), then we propagate the partial sums downward: each step, each thread uses the value it computed in up-sweep to set a prefix sum for two children elements. After downsweep completes, the array has been transformed into an exclusive prefix sum of the input values. + +

+ +

Up Sweep phase

+ +

+ +

Down Sweep Phase

+ +Our Blelloch scan is implemented with multiple kernel launches: each sweep level (for both up and down phases) is a CUDA kernel invocation that performs the operation at a given stride. This was simpler to implement and debug. We again handle NPOT sizes by ignoring threads/work on indices beyond the array length. The result is an accurate exclusive scan that does minimal total work compared to the naive version. However, we observed that work-efficient does not always mean faster in practice. The overhead of launching multiple kernels and the fact that many threads do nothing in certain steps (causing warp divergence) can hurt performance. For example, at each up-sweep level $d$, half of the threads become idle (those at indices not divisible by $2^d$), leading to many inactive threads that still occupy GPU resources. Despite these practical considerations, the work-efficient scan should scale better for very large N, since it has asymptotically less work than the naive scan. + +Using our GPU scan, we implemented GPU stream compaction in a work-efficient manner. The compaction consists of three steps on the device: + +1) Map: Generate a boolean mask array where each entry is 1 if the corresponding input element should be kept (e.g. is non-zero), or 0 if it should be removed. + +2) Scan: Run an exclusive scan on this mask array to produce an array of indices (or offsets). Each index tells us the target position of the corresponding element in the compacted output. The last value of the scan (plus the last mask value) also gives the total count of surviving elements. + +3) Scatter: Launch a kernel that, for each index i where the mask is 1, reads the input value and writes it to the output at index ```maskScan[i]```. Threads for which the mask is 0 do no write. This effectively packs all desired elements to the front of the output array without gaps. + +All three steps are O(N) on the GPU and involve mostly memory-bound operations (aside from the additions in the scan). Our implementation preserves the order of input elements. We verified that the GPU compaction output matches exactly with the CPU output and that the count of surviving elements is correct for both power-of-two and non-power-of-two array sizes. The GPU compaction uses the parallel scan to efficiently compute scatter locations, which is much faster than any serial method once N is large. + +### Thrust Scan (GPU) + +To compare our custom implementations against an industry-grade optimized solution, we also incorporated the Thrust library’s scan. Thrust is NVIDIA’s parallel algorithms library, and we used ```thrust::exclusive_scan``` on device arrays for benchmarking. Thrust’s implementation is highly optimized. It efficiently handles arbitrary sizes and is tuned for the GPU architecture. For example, Thrust’s scan uses shared memory and other optimizations internally. We used the Thrust scan results to validate our own scans and to serve as a performance baseline (“best case” scenario) for prefix sum on our hardware. + +### Optimized Shared-Memory Scan (GPU) + +We further optimized the work-efficient scan by using CUDA shared memory to reduce global memory traffic. In the original Blelloch scan, each partial sum operation reads and writes to the global array. Our optimized version instead loads data into each thread block’s shared memory and performs the up-sweep and down-sweep steps locally in fast on-chip memory. Each block computes a scan for its portion of the array. We then handle the inter-block sums by performing a scan of each block’s total (this uses a separate small array of block sums). Finally, we distribute the offsets to each block and do a second pass to add the block offset to each element within the block. This multi-kernel approach ensures most of the heavy-lifting is done with low-latency memory. The result is a significant speedup: by reducing expensive global memory accesses and using memory coalescing, the shared-memory scan approached the performance of Thrust’s highly optimized scan in our tests. The functionality and results of this optimized scan remained the same as our original work-efficient scan, but it highlights how careful memory layout and access patterns can drastically improve performance. + +### Parallel Radix Sort (GPU) + +For an additional challenge, we implemented a parallel radix sort on the GPU using our scan as a subroutine. The radix sort is stable and supports sorting of signed 32-bit integers (both positive and negative). Our approach is a least-significant-bit (LSB) first radix sort (also known as an LSD radix sort) that processes one bit at a time using a scatter operation based on prefix sums. For each bit position from 0 to 31, we: + +1) Compute bit mask: Generate an array of 0/1 flags indicating whether each number’s current bit is 0 or 1. For sorting in ascending order, we treat 0-bit as “keep” (these will go to the front) and 1-bit as “remove” in a sense. Alternatively, one can partition by counting 0s vs 1s. + +2) Scan the mask: We perform an exclusive prefix sum on the inverted mask (e.g. treat 1s as 0s and 0s as 1s) to get the destination indices for elements with the current bit = 0. This gives us the positions where the 0-bit elements should go in the output for this pass. + +3) Scatter pass: We scatter elements to a temporary output array: elements with 0 in the current bit are placed at the beginning (in the order determined by the scanned indices), and elements with 1 in that bit are placed after all the 0s. Because we use the scan results, this scatter is stable. It preserves the relative order of elements with the same bit value across passes, which is crucial for correctness in radix sort. + +4) Swap arrays: The output of this pass becomes the input for the next bit pass (we alternate buffers). + +We repeat the above for all 32 bits of the integer. After the final bit, the array is sorted in ascending order. To handle negative numbers correctly, we adopted a common trick: interpret the 32-bit integers in two’s complement form such that all negative values appear “smaller” than positives. In practice, this can be achieved by offsetting values (e.g., adding $2^{31}$ to each number to make them all non-negative, sorting, then subtracting it back) or by modifying the final pass to ensure the sign bit is handled appropriately. Our implementation ensures that all negative numbers end up at the front of the sorted array (still in ascending order among themselves), followed by all positive numbers. The sorting is stable by construction, which means if two elements have equal value, their original order is preserved (important if this sort were to be extended for more complex keys). The complexity is O(32 * N) = O(N), since we perform a fixed 32 passes of scan/scatter regardless of input size. Each pass is parallel and largely memory-bandwidth bound. While 32 passes is a lot of work, this method can outperform a comparison-based sort for large N because it has better parallel scalability. We compared our GPU radix sort against ```std::sort``` on the CPU to evaluate performance. + +## Performance Analysis + +

+ +

Execution time (log-scale) vs. input size for various scan (prefix-sum) implementations and baselines, using a fixed block size of 128 threads

+ +| Array Size | CPU Scan | Naive Scan | WE Scan | Thrust Scan | CPU Compact (w/o scan) | CPU Compact (with scan) | WE Compact | Shared Scan | Radix Sort | +| ---------: | --------: | ---------: | -------: | ----------: | ---------------------: | ----------------------: | ---------: | ----------: | ---------: | +| 2^8 | 0.000450 | 0.135120 | 0.159744 | 0.126464 | 0.000500 | 0.004400 | 0.508832 | 0.104448 | 9.245700 | +| 2^12 | 0.005700 | 0.160800 | 0.194560 | 0.044192 | 0.006100 | 0.024900 | 0.387104 | 0.144384 | 5.800960 | +| 2^16 | 0.096250 | 0.194736 | 0.257072 | 0.042288 | 0.104350 | 0.285600 | 0.502672 | 0.194624 | 6.959100 | +| 2^20 | 1.492150 | 0.549088 | 0.354976 | 0.300816 | 1.614800 | 4.622800 | 5.415200 | 0.241312 | 11.718700 | +| 2^24 | 23.081900 | 8.591905 | 2.714130 | 1.075105 | 30.581250 | 85.811400 | 17.569300 | 0.828192 | 107.652000 | + +We can notice that GPU-based scans (Naive, Work-Efficient, Shared-memory, and Thrust) scale linearly and run much faster than the CPU scan, especially as the array size grows. + +

+ +

Execution time of stream compaction algorithms vs. CUDA block size (threads per block) for a fixed 1,048,576-element array

+ +| Block Size | CPU Scan | Naive Scan | WE Scan | Thrust Scan | CPU Compact (w/o scan) | CPU Compact (with scan) | WE Compact | Shared Scan | Radix Sort | +| ---------: | -------: | ---------: | -------: | ----------: | ---------------------: | ----------------------: | ---------: | ----------: | ---------: | +| 64 | 1.687300 | 0.485184 | 0.427136 | 0.332160 | 1.858200 | 4.837900 | 1.614050 | 0.494176 | 10.397700 | +| 128 | 1.492150 | 0.549088 | 0.354976 | 0.300816 | 1.614800 | 4.622800 | 5.415200 | 0.241312 | 11.718700 | +| 256 | 1.600250 | 0.380368 | 0.333600 | 0.337344 | 1.717300 | 4.884100 | 1.571085 | 0.217696 | 10.311700 | +| 512 | 1.462850 | 0.406608 | 0.375488 | 0.311328 | 1.638950 | 4.688700 | 1.589280 | 0.463008 | 19.420200 | +| 1024 | 1.481200 | 0.412144 | 0.675872 | 0.484688 | 1.739750 | 4.773300 | 1.562370 | 0.264000 | 10.693600 | + +We notice the GPU Work-Efficient compaction is shown in green, and its performance improves dramatically with block size up to ~256 threads. CPU baselines (horizontal lines) are much slower (higher runtime) and unaffected by block size. Lower runtime is better (log-log scale). + +### Scan Performance + + +#### GPU vs CPU Speedup +All GPU scan implementations significantly outperform the CPU sequential scan for large inputs. By the largest tested size (~16 million elements), the fastest GPU scan finishes in only a few milliseconds, whereas the CPU takes on the order of 10^1-10^2 milliseconds. This is an over 10× speedup (one to two orders of magnitude). In fact, even at more moderate sizes (e.g. around 1 million elements), the GPU already provides a ~10× overall sorting/scanning speedup over the CPU. The crossover point at which the GPU pulls ahead is on the order of only tens of thousands of elements. Beyond that, GPU parallelism dominates. + +#### Naive vs. Work-Efficient Algorithms +The Naive parallel scan algorithm performs asymptotically more work (O(n log n) operations) than the Work-Efficient scan (O(n) operations). This extra factor of log n has a noticeable impact on performance at large n: in our data, the work-efficient scan begins to outperform the naive version markedly as n grows. By the 16M input case, the work-efficient GPU scan runs roughly 2-3× faster than the naive scan (which does redundant work) because it avoids the substantial overhead of those extra log n steps. In short, minimizing algorithmic work pays off, as predicted by complexity analysis. + +#### Impact of Shared Memory & Thrust + +Using shared memory for intra-block scanning boosts performance over a naive global-memory scan. Our custom Shared Memory scan shows better throughput than the purely naive approach, thanks to fewer global memory accesses. The fully optimized Work-Efficient scan (based on the Blelloch upsweep/downsweep) is even faster, nearly matching the performance of NVIDIA’s highly-optimized ```thrust::inclusive_scan```. In fact, the Thrust library scan and our work-efficient implementation achieve similar timings at large sizes indicating that our implementation is close to state-of-the-art efficiency. + +By leveraging parallelism, the GPU scan implementations run orders of magnitude faster than a single-threaded CPU scan for substantial array sizes. The work-efficient algorithm, which achieves O(n) work complexity, overtakes the work-inefficient naive scan for large n, illustrating the importance of algorithmic efficiency on GPUs. Optimizations like shared memory usage further improve performance. In practice, all GPU variants handle millions of elements with ease (on the order of milliseconds), whereas the CPU time grows into tens or hundreds of milliseconds. The results demonstrate that GPUs are extremely well-suited to prefix-sum computations, achieving high throughput as problem size increases. + +#### Effect of CUDA Block Size + +We found that scan performance is relatively insensitive to block size in a broad range, with a slight sweet spot around medium block sizes (256-512 threads). Very small blocks (e.g. 128 threads) underutilize the GPU, leading to a bit more overhead per element, while extremely large blocks (1024 threads) can reduce occupancy or increase serialization, also slightly hurting throughput. For example, in tests at 1 million elements, using 256 threads/block yielded near-best performance, whereas 128 threads/block was a bit slower (~10-20% slower for some scan kernels) and 1024 threads showed a minor slowdown as well. Overall, as long as the block size is reasonably large, the scan kernels maintain high throughput; the performance stays close to linear scaling with input size (see figure above) regardless of block configuration. + +### Compaction Performance + +#### GPU vs CPU Compaction + +The work-efficient GPU compaction algorithm vastly outperforms the CPU-based approaches. For a ~1 million element array, the GPU compaction completes in only around 0.3-0.5 ms (at optimal block size), whereas the CPU implementations take on the order of 2-5 ms for the same task, roughly an order of magnitude slower. At the maximum tested size (~16 million elements, not shown in the block-size figure but in the size-scaling results), this gap widens further: the GPU finishes in only a few milliseconds, while the CPU requires tens of milliseconds (20× or more slower for 16M). The parallel speedup here is similar to what we observed for scanning, since GPU compaction essentially leverages a parallel scan internally to mark positions. + +#### Single-pass vs Two-pass CPU + +Between the two CPU implementations, compaction without scan (single-pass filtering) was slightly faster than compaction with scan. This makes sense since the two-pass method performs an extra full scan plus an additional memory pass to scatter elements, which in a single-threaded context just adds overhead without any parallel gain. Our results confirmed only a small difference (both CPU methods are slow), but the version avoiding the extra scan has an edge, especially as n grows. In other words, doing everything in one pass (branching on each element and writing out survivors) is more cache-friendly and incurs fewer total operations on the CPU than doing a separate prefix sum then copy. + +#### GPU Work-Efficient Compact + +Our GPU compaction uses an efficient parallel scan to identify non-zero (or valid) elements and then scatters them in parallel. Despite doing multiple steps (scan + scatter), it still runs orders of magnitude faster than the CPU because each step is massively parallel. The work-efficient GPU approach has linear work complexity overall, similar to the GPU scan. As a result, its runtime scales linearly with n and remains only slightly above the pure scan time. For instance, at 1M elements the work-efficient compaction only takes marginally longer than a scan (owing to the additional write step). This shows that the overhead of compaction beyond scanning is minimal on GPU, whereas on CPU that overhead cannot be hidden. + +#### Block Size Tuning + +The performance of the GPU compaction kernel does depend on block size more noticeably than the scans. As shown in the figure, at a very small block size (128 threads) the work-efficient compaction was about 10× slower for 1M elements compared to using 256 threads. With only 128-thread blocks, the kernel likely launched many more blocks and incurred extra coordination overhead (and possibly did not fully occupy the GPU’s SMs). Increasing to 256 threads/block improved utilization dramatically, yielding the best performance in our tests. Beyond 256, the performance remained high: 512 and 1024 threads per block gave similar results, with maybe a slight dip at 512 in our data (possibly due to some memory or occupancy trade-off). In summary, ≥256 threads per block is optimal for the compaction kernel on our GPU. In contrast, the CPU times (horizontal lines in the figure) are flat since they do not involve GPU block sizes at all, underlining that their performance is consistently poor relative to the GPU, regardless of configuration. + +The work-efficient GPU stream compaction exhibits excellent performance, completing in time comparable to a single scan and massively outperforming the CPU versions. For large arrays, the GPU achieves an order-of-magnitude (or more) speedup over the CPU for compaction. The single-pass CPU method is marginally faster than the two-pass (with scan) method, but both are far slower than the GPU. We also see that proper choice of block size is important for GPU compaction. Too small blocks can hurt performance, but with a reasonable block size (256+ threads), the GPU algorithm runs at full efficiency. These results highlight that parallel prefix-sum-based compaction on GPU not only is correct for arbitrary input sizes, but also delivers a huge performance advantage, leveraging throughput that the CPU cannot match on this problem size. + +### Radix Sort vs ```std::sort``` + +#### Crossover and Scaling + +We implemented an integer Radix Sort on the GPU (stable, least-significant-digit approach) and compared it to the C++ ```std::sort``` on the CPU. As expected, there is a crossover point beyond which the GPU outperforms the CPU. For small arrays (e.g. a few thousand elements), the CPU’s ```std::sort``` can be as fast or faster, because the GPU incurs overhead (kernel launch and, if included, data transfer) that dominates at tiny problem sizes. However, once the input size grows into the tens of thousands, the GPU gains the advantage. In our tests, around ~10k–100k elements the GPU sort begins to pull ahead. By 1 million elements, the GPU’s Radix Sort was roughly an order of magnitude faster than single-threaded ```std::sort```. This matches general observations in literature: for example, using Thrust on a GPU yields about a 10× speedup at 1M elements, and the gap tends to increase with larger n. + +#### Throughput at Large n + +The benefit of GPU sorting becomes even more pronounced at very large input sizes. The Radix Sort algorithm has linear time complexity O(n * k) (where k is a small factor related to number of digit passes), and it maps extremely well to parallel hardware. In contrast, ```std::sort``` (introspective comparison sort) has O(n log n) complexity and runs on a single thread by default. As n grows, the cost per element for ```std::sort``` increases (log n factor), whereas for Radix Sort the cost per element can actually decrease slightly due to caching efficiencies in linear passes. Consequently, the speedup of GPU Radix over CPU sort grows with problem size. NVIDIA reports that using Thrust (which employs a GPU Radix Sort under the hood) can deliver anywhere from 5× up to 100× faster sorting performance than a typical STL sort on CPU, depending on the input size and data type. Indeed, for extremely large arrays, the GPU can be two orders of magnitude faster: one user reported sorting 2^27 (~134 million) 32-bit values on a GPU ~100× faster than a 4.5 GHz CPU doing ```std::sort```. Our own tests didn’t reach that size, but at the upper end we did test (several million elements), the GPU Radix Sort consistently maintained a wide lead over ```std::sort``` (likely tens of times faster at 16M elements, extrapolating our results). + +#### Parallelism vs Optimization + +It’s worth noting that ```std::sort``` is highly optimized for general-purpose CPU usage, but in our comparison it was executed single-threaded (the default). Multi-threaded sorting on a CPU (e.g. using OpenMP or TBB parallel sort) would improve CPU performance and raise the crossover point, but leveraging more CPU cores only narrows the gap, rather than eliminating it. The GPU is specifically strong in sorting huge volumes of data in parallel due to its thousands of cores and high memory bandwidth. In other words, sorting is a data-parallel task where the GPU’s architecture shines. Our Radix Sort takes advantage of this by distributing work across many threads and using efficient memory access patterns (e.g. scatter/gather with coalescing). Meanwhile, the CPU’s comparison sort must perform more work (log n comparisons per element on average) and is limited by sequential memory access and branch mispredictions. The outcome is clear in our measurements: for large arrays, the GPU Radix Sort runs in only a few milliseconds, whereas ```std::sort``` takes tens or hundreds of milliseconds. + +GPU-based Radix Sort outperforms the C++ ```std::sort``` by a large margin for non-trivial input sizes. While ```std::sort``` is very fast for small datasets and benefits from years of optimization, it cannot keep up with the sheer parallel throughput of the GPU on large data sets. Once past a certain input size (on the order of 10^4-10^5 elements), the GPU gains a performance lead, and by millions of elements the difference is dramatic (an order of magnitude or more in favor of the GPU). These findings reinforce the advantage of linear-time, parallel sorting methods on modern GPUs: they can handle massive datasets significantly faster than the default CPU sorting routine, illustrating the power of GPU acceleration for high-volume data processing. The Radix Sort’s performance scaling is such that the larger the input, the more it outpaces the CPU. A trend that is consistent with theoretical expectations and other reports in the field. The result is a compelling win for GPU computing in the context of large-scale sorting. + +## Sample Output from Final Tests + +This is the final output running the test cases with: +- Array Power-Of-Two Size = $ 2^{24} $ +- Array Non-Power-Of-Two Size = $ 2^{24} - 3 $ +- Block Size = 128 + + +``` +**************** +** SCAN TESTS ** +**************** + [ 0 9 35 11 36 9 26 22 38 31 35 0 31 ... 38 0 ] +==== cpu scan, power-of-two ==== + elapsed time: 23.2384ms (std::chrono Measured) + [ 0 0 9 44 55 91 100 126 148 186 217 252 252 ... 410967026 410967064 ] +==== cpu scan, non-power-of-two ==== + elapsed time: 23.5367ms (std::chrono Measured) + [ 0 0 9 44 55 91 100 126 148 186 217 252 252 ... 410966993 410966997 ] + passed +==== naive scan, power-of-two ==== + elapsed time: 8.78406ms (CUDA Measured) + passed +==== naive scan, non-power-of-two ==== + elapsed time: 8.94765ms (CUDA Measured) + passed +==== work-efficient scan, power-of-two ==== + elapsed time: 3.02592ms (CUDA Measured) + passed +==== work-efficient scan, non-power-of-two ==== + elapsed time: 2.80576ms (CUDA Measured) + passed +==== thrust scan, power-of-two ==== + elapsed time: 0.876ms (CUDA Measured) + passed +==== thrust scan, non-power-of-two ==== + elapsed time: 0.843424ms (CUDA Measured) + passed + +***************************** +** STREAM COMPACTION TESTS ** +***************************** + [ 3 2 3 2 1 1 1 3 0 1 3 0 0 ... 1 0 ] +==== cpu compact without scan, power-of-two ==== + elapsed time: 56.6298ms (std::chrono Measured) + [ 3 2 3 2 1 1 1 3 1 3 2 2 3 ... 3 1 ] + passed +==== cpu compact without scan, non-power-of-two ==== + elapsed time: 33.3305ms (std::chrono Measured) + [ 3 2 3 2 1 1 1 3 1 3 2 2 3 ... 1 2 ] + passed +==== cpu compact with scan ==== + elapsed time: 98.6215ms (std::chrono Measured) + [ 3 2 3 2 1 1 1 3 1 3 2 2 3 ... 3 1 ] + passed +==== work-efficient compact, power-of-two ==== + elapsed time: 22.1919ms (CUDA Measured) + passed +==== work-efficient compact, non-power-of-two ==== + elapsed time: 23.1942ms (CUDA Measured) + passed + +***************************** +** EXTRA TESTS ** +***************************** + [ -47 8 49 -44 -17 35 39 45 -18 -17 37 -6 2 ... -17 -4 ] +==== radix sort ==== + elapsed time: 107.549ms (CUDA Measured) + passed + [ 7 38 45 2 47 44 1 18 43 35 39 38 23 ... 10 24 ] + elapsed time: 24.5372ms (std::chrono Measured) +==== shared scan ==== + elapsed time: 1.05357ms (CUDA Measured) + passed +``` diff --git a/img/Stream_compaction.png b/img/Stream_compaction.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed5cca88ed799f8695555e6f88b098bd8ef782c GIT binary patch literal 12932 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%0A!FJ= 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

o~J{9z#LA-;d;cqMW7e2F@@`U}CHtJF>xO_7p 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

)Fh9E^8%DuhObn$cFDFDkI}3b^{-Muhc|3vtMmY zqQ&L;{`TfZZNEzxkxH}Iw20u-BFm7>?UVBtLbTNU{OZOh7lgIlCN)4Vl2VBbctIV3 zz5QNj=uyo6K)SNsW42m{0>(n!-(PuSk^8*zri`7o59W}rC1U++GXjv}#XLEj*l_&p z+3-4Bz9f#-@q*jw0=72^+YBEl6|;}>oqgA)eyKk7=n!2>fAGM{|O%E_HLefkIJdVTDtVOO%XcwvVdv-dap z0({0_1lFq^-t$jAQN}l#og6ECe&3zJr^1um zGJ3ILtEbPl-}c>eJ2&aqrf=!ip$&(&-}ueR*uG_h(!P+U3`ud6w2)s{O^~7-t*R5VPs`p8h$Z)vX`8I+j0-i0;aX``?Pjyp;BS@qDz}!=s~7 z$IRFBr|2S|&#i`Q*^Q=d8LsQvk3^6_fcK*vTm|)-5$CM6Yoq zt2G31w>U#;_7}9v!k&w0*e3cLwzh-FEF$uvBS(%9&TnGm>%;nbmAVC%1LjP7l%jq) zTSiN{da1m-A;=?g-cEvDPfw55fui7f6fggKqlU`vCt}gJ^X|FTOU%v+AKvNpMeg;@ z@p0`vXBm8`jn2haU8K}#>0{+yO0Iw6y}ss5bqk|Z_A%EpA$;`~XCDyTf?sGT$6+7S z3^No4Cq13q%@Nez4fN#(GIz5dRXwNu5Kv^eDu(8?4hBls(lEXBT(OEm%<4M@3BvhQ zXuF4KdN7Hcao6eV%8q1!7z~$&sBhR9ra5nSeXuAd!Fg`)+~yr0qmYmg%h${apj;@2pgBLAo_A!(-NaUWwxd#V%hssx zUtX(4Swkdk*H~rTm7lbK#`gTq^(z!5r(dz3a{IWmC^R6+@6p~#nqv2tm40g9bR-s= zcw;>_DJ3+=8-8A?zpnPVk=0RUifBgnRu!GU6;nbgr-=|t5Z+kDxbq`HW7ELpGRWQ( z=39|k5$XExOdJ(rt9wj09a1W)gQ?dU#U77L-jLjDteXclw&>vbr4Y00XIPk@Zhc$e zJkG(YU-%{Mv>LoA3MX4GE=zJ37v`mUEW0ZQ?6m8p&S-2d(e`MuZ6EZ=H*P?mCvR-b z4LgKBJikvg^Qz3E8v>^Do<23-dtmz6%$OihGy21$&a6ue3X}eMA z)MbuNUI=lGQqkC4^p&sZBeiHWMrBN z*Y4eZu+_(;3kZY8&_c)8r<9ah*yyRL$^Qx2qipm2~omQyzp z^gY$|o}N;s_xGx`xtFPGp}OhuHxsY%(PXHT6)(6A?`ddyF3Rq(=4p#`%w)2iXUnFb z=FPtXJ6I=bqvFL!WR*>-UDx+ddazYVocKmJtTbVt@sB#Bi9r-DB6lJqPa&@ndW@udczB@kg^&PM=+a?!?T7Kk2OeVd9&T(|{PTF=D8QCcIOVLMU9MMQ zAH>h~siT9VMEiELX){xS1oU>E6zUq2&-&mnt0(jT1h2M&6$(Q*ENW_|2?|cQxP^%p zR=2lKK2AmS?07D}V$Wcqec0_}Aw_KB6tHmjK~eb;?Z||S6ttxfMQ`O6zEagO57s&O zi1%9OdpFzdv3snRIez>`vO8`Sg+Dz`D-E638JPgX-5zXc{2sPOx>~0{0 zOKxLwk(;CR^VsVFkyX>Sa!ylKjpyBCYtMz?98F7eDQQo=9ogQSQhu2eB{GakZG(H7 z3p+KPH{~Ui>=R+ZCGG!|%|!v)-rSBk5j8T@iuD;655nQ0#6{R5PqWQ(Z|}I*#%u0# ztJ@qps5K}D>;lbMs$wr571|!RULs=ZaMK>edq=iMvLqyx$O{}iRrey~8*{?%>vT!| zTZF#9SEmUzt%~YA*fsQL$6S)u&*-Evk#Mv(cvzRYbP!Gd^{|@cpf)xzfVDXe5>#8J zm6^}Z^ODws`()yKtB2yYyF1*b*@+#0$Zo~4wr|*_A4u5qyz!?u0-dKlECr_(BsNDm zeslImu|H-meJo{C=B=Ux0VGVSf1GJ@gF~c*G~+6iiwDLhm!#o1{1?yTF1Z65vy(> z`eEM^F$7R&IgW?UZlwJIC=QsO9f$WXx{Llv7if%`p#)57m>@3APQNc>Jwe*cwPS}D zq^+nBaM=DpSF$E9F3!`sy8?41%IRk_`aeFVhRB%62{BF>4&xtaD-_P0xwq%AqjbAd zcMwqU#`M^BH*rjP-5$8cS$EQ{Hq)HDOu6sNw$NFbk?co@i4h^ZU64BoP4zuNo+e3l z3A^pvU%I+gjd6UhPHY_D*?;IuLStAoYTJEZE3igruP2Sc6I>Bs{VyX8A8lHvoY*Bd$Is{FC<)9x?koK`b5i@K2{bX1MGIm4t( zzV0HW{gdC>`PW*vZ=IfZs}XHeQ!(Gnv)a+yGAn_;EM}~siBd5rI~IRGVW54u*@#ff zeSLRr^U%&8=^os}plFHzr_u0Z(Ps33{MTU(ksa-!bu<$iXWdUaYJ5KQMZEdzw?dJ^ zx#-w92O2#ZgvmEnhh`kLdL9kTbL3>1!RY;8qD{4LHAR_Zuu3YH^Q=8f0f)2p5 zMoWteXpJEPWEM5ur2j7XG1Or(`M5izi6D9$G=niT#YDCW!tY$#UKphTS9}U&4_ZG` zr=bbJZH8v{Ipmjx!}(t%nd5tiesSPS0spCRUN|*|;r7YO%Jw&>Z$0?cE~HNr%aIrW z6+??h?l2IS`W(YkNtkD5cWi$J?54PDU&p!9k-^ysH8+11zPqPq zN354FSB(9X5mI0k>=9OIY;1I6Nu*_lIKsvz$4K*()?JHzhQD$4Mt?9gJ8`#8LPA%? z%C^Ga$JRDiAhOEqy_X8t(7rRy^Kn)5&fg5Rye_qmmU*pc3sHR{9x2qk$?s#2xbghC z`pQv=dHa;zW+h?#Km6UM@KeE64vJ_Adx^n_C2Esg%zt=#O0;9D)@QA<9Lp)w%e*D$ ze|(AEerfeA-Jw%TJ=xsS5tH)CsYAoBH(!4hNKf0>(%X5I$!vtyfBU7MkG6&l3zb#* zbAA>--c#xsM)M)Y=ZwoywWOb`#C|$b@6U8%wpDT3FTd|!lxP#>Tc*t{yb6hTXJ%${ zl?qao0;1?j`A9u=>Fk!6*QzIS?CFe1HJV%y_}J=VqA zDt1)rh5Y@;)*31w6?Zv*F=gC)s!>Is{bxcX$g2^}1Dd0`r1=JEPF;*-g?v zX}FJB^Ht@BYQ0N+Zy188)eEyK*RExMaAV|?yG4BMYKuKb+NEEW?ULAj{+kZohzB}|Q%Q-7j>U9x8hIyYf{UrenjoFMD8fxX< zvDs8fo1p`-laT|o?H`NRbj$5{o_|7k;<6u=Y=+g-C{9hmtA}<|B#F)k#UI-fe<=Ud z#gzW|$>{n4lXd3G@@ckgaAx~>v;qS#X{(YOFSK&vTCcm4{o^&G{=^1OF0NG`OF6R% z*iWCK(2`e${Y<0_tdE2qz$Fyelj4I{x-wa<`UPLCHSV7o`R1E<*;OK%4)qN5o}Kkq zv=Ly1dK+%ogVjE5=D<|U4`dukZ5mE*F>@B8K5S#r7{Nr=6+zp7HOH zSpD+H?u$&}hiLU{4=6qe@JjC)7SoTFr48KQ_$W;~vb}rVcJhrO#xJ-PJ$uKG>(@6i z%@dyaXA{r|tgwwx$pV4Mg3K!+^_-vsH>-4eAM&=UdtUTU)jBBI7dY}MHaEu*zGvXi z7u)V_r+(({p8kY*VN`J-8EdnPldkmM5OldIVArowSBG7U7-IoXz#*14>&eK*Mxrp$ zPd-XYGW`s2larS>@WY4GV`I-QN)xFS1*Cpv!T!F!j1UN7-df!1yJr$Fu&VFhb;-ih z(~IwW-e$g=lXC@JVVbqEr=ptt@#6=EOezN&lc6PsTh`q>cdWD{gF7#Wb#+ljhpY-1 zy?!+7b!?=s5T1(n6ErKwZgG~~SEp-DNg_35+pH;%vfCg5y7?5;GOIuMy>wcPxcb)D zf#rB;W~j%r(?-Xq34bpQUK=g-AHTp7R6aXR*luC+TKL6Qm|z3*E%xBeTT12%>uYLiWnU=D*dgbVq!P$}LUb(V<#uuf-PSiLGN=~~6u8~$_GThWH7jpbUg)4Q;EquDTV@_pU4#{o>3~bg9blu~*JM~>jFKlUZ38Ro#boBh%Yg?jSFtAI zC0DOr-DG_ah!W(S1sN`WbJhM~Ak)e169YuiMx#`cWuw zP5fc&w+TXhj&e<^ovnF!(x<7bzgM)E>3v#|9u0Z3RxZMb^T*h&($XyJqu7#V@8CC| zw65A0Hb$CAZ@fe!6n=^Aav&A$mgyHVUtJ~*yz_kI0cA`ytq-_V>ZoUCA!O@1ZdKv$ z*Vrh1d@a?H6uIE@>b>k|FSva0=ln^jwnK>d?mUHG=+zQsx{@s~Bq{f2X4UDbI-_x5%hs{{+S)m(i{hPjGf!Gy>l&Dk z3y_OysG?>kB(_dA+UA+M;Wy5(tZPgO4ekQsUF#0^EUfCz-1Tjb|E1X?P8as~qdET= zzQ-XTPmWhM*Zt)*Cpu1q*HB5s$$A;zQL5|j-OsdjLv7sd8o{a;(q1ZkZ2L4Gc$_z^ zRJ|(qER5sy%@3VP8*l5j=e?i*amB5Qrr}ro!?n#c~G|kezq3}TOr200lagKM-#y6%sm)Eqa%Mm@wb?gQw zv1-IgAp>BY#DEY35pPQRGmve9;u!v%m#9^jZ@c#XAw#Z-~ z22J=h3oM8C9&(xBMjf`10{d22g`j=~4M5>q;Cc@voo#|l8BD_w^+mQeS8`*dQ ziNt9$J9Uwx+F7d$mW_ALX*>H8rMx9t8hf$k0P^|XJZcn7a%LKh5v$PH?J*K~Dt`M9&k=Pf^OmZOywzxXay!dd58`jPLwOH@p~Q z(Hyf*zlJstkAj$UOAbv#-EFT7*_FnRn0L!>7MPo`J6+W4rKxA}Jx;7&a+PM#n#T?_ zYrS6~D8(-0(kXy|Hv=J;QQutfprO7E#U*hwG0h`PAmJUbXOHf6EWAWC%VcV```v9s zLxUShGT)u@t-fndn1yh}2L$76Vx#L|<;Q;H`s0GeB7aT! z9Yr4MoV+AsALhm8(mP9Qq&^JqRlQGF_E=PYm4r;!F#)TCM{lQ#s%?7NY4u(VwQ|_s zeF9@L2OiRDXw+#H#^B$f#eQd+N5~Z95|x?I$Wufsy?c3m6|v<4-63xD5Jw7$`=WqO z*1x^Io#p0NMMYzVv0!$$~S=hcJgRKJV5WxgE^m``62M^!yI14zmqZo^*p!Az;AOSvS3s>C?lYW+97i63 zxPXwNzRbg85g_b_En6IvXe|NDoQMA>dj2lp3y>|6P7ydnqCyac&ok?r3eNNLY8Rs) zZNZ*&vvFW2po3Dkc^mlhHs)Jgl=KhO8Ycrp^Cc}MOI}4FU->t+@w&TOpiGDRR z5iwA#rFwW09HhFAXiwM+r|CN({5E!>FP?FHzsRI9a#P~Xr>-T2r-QVcjIxt1i59$N z92d*%FKS?35d8U5Da4g+1&iTd3e!}3W8AFdN2Y(Gz!IWx=0l$A+tkJZRA?j&$oQv5 zAbV8>{j_sh8iqUgUXS( zHFz=7$^#o94n;Vsh;V{TBx6kmlrb}_2mJ(4rMAQYJQ~DX*vHqmAxV)HMsEnqGr~wI-i7V2??*tnJ}S%t z6GPnQo?OUX3*rbB@cQ-ZNjwN#8ZPIy^*1Kd;{l{$6T1Wd36$#$LBCr;ijTj@!U=$W zp%JeS)buR_mI>$^6wWBCZ?{@QY=XD6;?oQJ^rQ};4OrlD9!rZc9qS!kSr3@M9IzuX ze`d88vM-Z~NnX4S*l}&ZHUUtM=?5D3?K`v3uU2sAaw8Ukek@q z$6;mK-Pf0VA!`b2x!q%F0ni`=)+E3@9O5{Gh?&^O7xreKpP3+8L)-0Bs@fi<*u%rk z{yn4V^A|3Zxl3U_B?;6oam@$v^&3Aj1jirdmB1X2e}p#mxQ&fa*`G0Lod1pTw_Qg% zFkb-S$o-mLprxXDr$I_Ztn2C65cof1@iD%St2b`kD2H7YpfFrxO{)0H{@769ev7_) z^Z!FR^5Me|>@xsj;~EE!Lq75=60y20Ck6I3_ z~E~ zvBy}vlPW$b<40>mU{Yo3yPd@E>FMN0k5;2~MhV3iQLXs8&|x zyr;Om!dQUm*ZBDOPOs2+|An&G>fb5+Vhe{<M3CFW*j>(%hZ?M1`E){fvJh6eH{_y#X7F*NLMUMOw;8mudUCfTj!V#I=+Rpya(a>4KujeU-swrMLjw*pr>76z~Exb)R9#kDj5U7)8 zu>A+6r4bwNiO~)Ybg-{{D~J^*s=b#6mm4g^3k zuD!iFOLI6nm}$02-bX6&d)qP!*hqkxh%w5##xXZLtCy$QFkr_fZu7R$A2m7B7AwYw z3S+~t83b+zR zeF1AF9>@j-2HbNR3R;PHR0s* zuTyKUQ!Y_YtyC;DHNU=LTI^Y@UvsLc+Te>=^u+k7G4$TFC9&-yNk+;*W#%#~aXm5c z_TOkirG>-Z09j08OGIbN?%on*{d{uFwKsJ7oMm+8(0FL|7MsIt0DJ467 z{`jpdx4<#qwzgS&qg>lkL|MVsdxGe*&*K<=3*~pGZSquZ-a(ww7^JGhjCD2SP@Xwj z0|gdeDu_w1Qk2*$Z281DltRp5hzWe`>hF-jrHhpQLzv_ISt=q43)TuNflNRtJ9N*Y zQ4b9jFnG@ZpCw|2f#;~TJrUzu!iX3}Wm63zd-$f_kN0=k4mkwEQY1h%QNcvWmE_z3 zFh7P9!+H9vqv&u3Mx!xh%n2r;;6}Edf8wk0Ek-5{f`*9FuoF(NeQF; zUbGlwq1BM-24L$Wv(ei?gd5dHb;5KY`C@^kQArjckMYyavBE~db?#}rekAS@z7wPl zjB%ec$+9h7n7T-^2&d`VJVA&~t5tEHEittf{#PbG>ZscAc`ablwnJ)i66 zT+Iv`W+5Nck}gR-gLV>_U4275lkafKIW5liiCV)!o3KK#v;v}^48@sI^D|g@kQ{AN zMU6vZ*!^T$4;nKRb5cG&K2MPnmSu0bZ%R$RJt-@JJMu8wLCdJtTp`%wk~dhBTVPbT zjWm=SHf}^#S?0NGa3~;Ya?rBfMO5h7z4{{i_oMW`859(TZoPM)KHj@`zxTucBwpSv z6EC7>PNB*FW?qQkDa1?Lok~HjMZN8_K|(4`gSvu+X-@y?;@H$NlLP0UbW@V$qYh^K{Dtn5;2M-+h>_~g&uYEKehodkGm<=z=I+5WqK@ut*d497zOw~W9 zfA|_x#49bWV;fxb4L7m47H0LR+inoYI5BK*Q{A1bK&y2S(lO6uMc;Ex2sWupTU981y}1JjKKMY zI!YMje;jYOq=3L3KCKtVpK(U8qWD7|hp6`S>hFH6mcIfT%@5eZCWW{PAvyAhtnBLx zqJ=sMgoK2il-Oz_3$u4T3dI|RVXiwAHE!QHrloj1>b|-;L4sR%Dt656{36@5GemBM zt+{>LEX#_bI>zre=Mmkmv5l*}ujt*vE#~UYpdH1e*iKgN;Sm8aV30MK?_z2oE=1ER#gXOK~`P$9#f>hK>^pY=FHJ$z(eCM!AB1&(ik>=wp4^gP)bUyvX&61wnkVAP2{~;)921+(}hbt+UwG?0`ZZwMQ>t zff!o}W$JNox_7CMxpB_E> zy>`8(n!1r69sSGiH2qT@YfYBjqXCEQ2{@B~w$FEApYU$)pi6HHo5x2l3%#qdMQ-}X zcsWWyEY2vN>NE>dQr?^O4Nya+)|hLgOaXs|{#+RM(IFSA-%djLtF3i53nEFq+RU$@ zwuH%=OS2YwGzwJzPkz&=aDVA3-2vDF-5{e(uE-G>EkVPton&k{Ok|H(q<6x@6;7V4 z64$rRV!vQ5oICzXs^kwKk+2rfKJ=dN{tV$%gR!(#rHPzWR z{URP(lL;P__M{_yX_o3gUJf4#|gbTQp3+2WOY49QL^j<&N&&^ux5*JfmxYzD+`v^oD^D2iDQaiP-iOU za4BBvem8Gh*~BfP5tBMGaB5Gr#n{xsFOvAn0}KR*Neq$)m@E zr)g^rs0yqY(H7Py9I^QPjEKdt8Jhg`fPsI^Kwl3IG6;jVdE#x=?mLu+`xg?u-jHg6HJANqNW- ze>S$G^4P&W%Y-j@W7yB?KS>W^(uE$C%}8FZu0W>PXFVe#=y5L zfDL%)_cy#@uc>1By=bk@na$i=ny$t~eXr$>`K_z-(=+avZTk0Nq{6PA zztL7M0enp{GF13UsJ#wSR?pqwEo7!OM?tplPh3U$vO5(2w%_vtvi z>1XC`_b>)T3INUqtG%ukOFd*hRePP8Ch9Q-E_wU~Tu(x;b`t;^1Qjq2qDk}v#5T=z(2@<_-SCC_h{qF#2T8W3 zfSjc}+~-00?G0nO1FhLLJj$Na>dw;=i6bsO;?`ZOU8jch5ZZp&V+pzxl0EbQLMVEv z2?jj21pEUMWrH;cJ+3qC{%TWKR3#0S!G1&J>bEEqF7*(t;lM9PeFFooc84z(k-O+f zxG}5|st}MwP96LtSR-Lrj)at>osKhFe{;-j29S7Tf;=^bAYMY2zi;?W8fk^VgJP#O z%*($Ru`Fgiy?Z0hQhRp4?IP;}*m+_N-uOTG=4ZTdRXa1SpKR5+ zP-wFYYDUz;+7BR*h^N#Q`#8zyAMTkc1GE64Oj8)_u3O1rJ zA{YkAAOlR2&^oxDp56$5BQkZVXI=mh2|&(zKz_))yLoc{*JUV~^w6S_>>?Jfg80M~ z`@Hh|D&5dpI<@pbEVXC*_PAiKG;M%P5EHCkv!=O9bH7(T!(NA!Ymu}Z25C{5x;NGi zbOyIrMRc%uHOBaO1*q-cWNgoB=e{=5E;H}G*~WkE2CpCcB3rwo)J^7sgP#4LZ|Oww zAd94&sY0s;yh(2)5D^D+{*6yLg)!?xl<}~=N2T7}G9pJWMI0f|m$>BBO^UPb5S0oi zd2wV{AtrdZ!(}Hen%|yx$$p=FF#Z+7n-Eo2ZduT3&+Vl$%I%O+?0Vkt*Y2=3W*o{Y z^lG19r#+|rvwxn)%Y(JcB0wR?@A{$69QmM@O>36lu*6@94E&cbXKxoj<@LP=!ea!A z>tcB|f3`$J;)D}~HE1uD=%H{J=#K&40KTeXsP?RsQ*8i4;4F;0l)~iOez_-ArBZb? zteW^0Vf_4%m2l0+rS-FeC9F5tRzw@g=B^$UB4Y>SmyhO;wDimbP#VNOjbuwVhl{#^ z8Phm*D1r*fZkw@9euxxJ&y-7b0B?(7h1KVycy0y1ocGsIIxBE=!QB`c_Nf?t^&^$|KgRjYa;>LScgL!v6oMu-#w-jOoT%{y)mLQLDi*GLf4KxIV46 znu9}r5(&(z!mMBHD~V%b`-W6ECA2mPcN)ZXiY3lIu=M{H-xg!9{;2-bMzi_kb+^jG zqK3?K_FWo0Gq6WP1JwwUcoY)0XyvMacODEQb7C>>Fx8?a$3j>B{a%3w1q)8<68&Q zpqkpSG2&1VYysHtXUXmYantPca2DHf;J{RrzBANJqSuE`cHG!owr>F^8mm@C|Kq7E znsC;MR`ORf(zVXNH7(TXqgB)x7fV;6Q24xPVB2fD8kyMf&6}-7OK6V08%WuodF-k{ z6ZNtPl}Lt&9ROx<#YF#G{Ss~P9Dj_r)VPMs7W_+3Yac1dQ(?@NR4f=76QhKoG4^BX zB>=%8&j-6ftB{zT`G(PlrTnM*Y!~+j=_mJ+7iex@pe!ixD$5r;err`Drz@k1p7GU4 zm3%+rw?T2nw9TiO|M%UI!tQ5N<+yxVn#GHKZMbA{Z}k=S_7w;Mc`(c*Hl;sD{v0Z)~Fsa8TR*&m9k&-l9w(0;qjlJZm233^9F>dSvs&i_=uy{oqlq@tg1e zNY4zg6S8{EGjEX9gNKgnkt_Q53rA7UPVtJI$Gk7F6=yAf&UG5EM~IrJm+g$W=Bq&w zZh@p-rvrJm^9)KqT~xFRH{LgUOs>5wZdfWVB+r2FKTA~&>}MD>AVtnPS~liWd~|{& z-ry%i(W#z?Q4l(qbNKb|->-LBopXP#(W|+(@7y2H3LTSe52?4@(Z682-}2v|%9wY# zYy$d)6PB1e9C$b=!FEK9pRI?cffqlgMpYnHLog$_m}*dG#XA#=U205krB)0ld2+^0 zt-Si^KkgJEG|_Q#V)!;Xv-4`CN%r{}=*ruk>aC)r-}dO~QwHePV19M1%zc3gie|L2 zF>@rN5>^V42N1M{y5N#Sn_;_stJX8iubP;|W5g#7v+pI0gzikNse2 z-rmFu>s?M^;SfwDXv_x>y3I{+A}OAP^Ay)vOM9b$#ejL1W_K!;y=Zupn6(#bZy|!{ zqNva;vb2Ya6yVAJ?^db2b-s>tsRkFG8LnNUApiPD%N9*`w^c1mTZi`Kg#~if|5oj{ zl4de+@%cylwnS`oiJvLXIWnPC;_3)$oSTPd2NczySAL@^8%HJdF-u3frVxl9@U0bA zy&srC^PGpB8DZ2B-AkrOC$+uf9!t=?1rJK76!^ku52MRP{Um5uwaJg3qZXr%R4$c)JALy$!H+jMu~T~Ii@9+ zKAUAV8#n;I|Meq8IR{=zWON;jR)|a1krelDE`$3c4_>WB6>0it0kieG0yjj@Y7hen zGQ~y^@1=!~C1{bh`b?DKg42Fi*C?&t|3!U3#dqP}1XcT{^&uC(n1mdnKk$e3iTLM} ze%t$h=|0$NYO4JoZ}z`LDroZjV414&mw;PoOuFY6Y4YkQ( zMuL%%QIzqpiZF{$TDIG~13D(=Lk`erXDehjKvcnEGJS?iQZfq6_*1m5*w)w6(q;_a zsbwYb<}IaUE?(Xzs!!fbO1V$cp5o!e#lGJ`T0|Gui z>(f@V2X2SJm2VzPZs;FiuSoiq`H`Z!>ebIQGf1yT(%DdWTXnr9LDTptPed%ah3}rr zyi|$#$T!dkfG2|r<|7~y^gxOzkwwkkSz=58SJ0_ex?}H8w78<4=h%!MCPb zxK8Ac#Uq(r$$*06Ds}pGA$XM;5!0Hv;!bi_-^Dm%JGnf%L>VNEY z=mEaZJsvB|B&m1#^Qa5S&70K!w*Hk~NPo?1%YQ5ovX^7_%AQ>z>=Wc-6y9rT)6Ryp z_SooUhh`kpXdFCsR$dMs<=E-;z<`l9Iz96R)va<_5DfT4L|q3m>}_8m1PfiTX(2^9 z=2`V7W-#*8by41tN#Hb9tXUN^VuaIxnJ6;HygBIeZc%n;yry?fvV)M*e z!Iy0zc4!ygZT^mp?w{HY>^J|d?Et&S&s9HQM;zL-L2_fw5Ex+RP9NA70Pwr<)iU{N zM=8pLo0wr5!`8Neg{2CyBb_FR=d!f>>~#*}FF~85sgsXA{HVM`DyGlP`E&<;OQ|nwzxu6df&35?NbV9AQ)5;3#m#9s^dhOl6pUkZn z!%P+pq5#0I@sG2>55_;9;zuDjfO&k}woRKh5q^?pE_kO=#_v^l&&&TsIZXshVg7mh8xPS}?u`M2> zM{xpEUv9JRyRu@70VKMRmii*3qck~>08(UPOHzsVy63lhOvp>leBWtY@$fBD|0Ep4 z1uTkz`^k{~qPiWY@Ixr&FtFXSQ`SG)sQhq#JZX`M@d{?pqvYJgEI?5c5E>y-8{lEZ z`8kI5^9jJw>h|||Af*W#VT**@Z~i2ZUZ&yb`6bih!5(%;-1vl~Q$S2Ue*Cx%VnaO9 z)JCDVM{l^Qvx2v_1I{S$jj2U=eR^>oI8swI6T<0DfHq7??J#Se<=?!2 z949%N8bX}_uoTsul(YoZw~^d6xXFMhR}4r+!1(!x^JA^l&R!Uf-vPnMt&18h<{YNZ zM(D%I%388}hy$>5YrC`$G+%Vpa<_ogjUj@46z_h9pP0#-Ark@M=4Y1AzczQqK5sTQKiljj9Mv?A_1*r^a#f4zj!JMGv0wz_dJZ zUw|cp_R$)pGXj8iDiquKNj_+cgm~QE%dvY2QSIi~0JKT6Ottn}#GN z;HQPXb}wOOQhgEh6(F6og*cuB;`ZJIG3iBQ@xA)``U&$s%q+PY0Dn*&U*=52J*?+A8 zgfhUMl_T~5l?BF*YEJ$FIlx~pwGY2}oK?lZU>mBtha4*IWbM6we>*sscs_VWHDVJ) z+A<1S@f!m(*DjE5M2CV~&B#%&>E3h(*sHXo@wN|}*PN#<@ac%U@=ljYtLA99SWI0V z!TGVMgr^6fX_A5R###k^*L?4Wc5zXKR#J>a+t#n}wa+ndi%@_}9*QkoITUIdq9ng#|k$xqHOpJ_N2cE{o*`X$dOYry4&%>(+)tRv&E!!q6{KX`v zrSqBTCE(amU?|fBm%hhiL}ZAFzr&QdK@T5rX#x_0n?6|gM z@Rxwx0&JaCV)?ISms+lgBWh}&BQ9sHN&2z>Q^>x;8q~RgG95)B{kE^W*mai2mK^Of z*|vAhpSH%7i{Gl5ac{Xtt_D7u_@F*SS8z`Hj&aU|Th96A^x2h_7 z>VT@k6$j;eEPRy8Eos-Tof0KVG8>04=% zV=7N`f!CtB?qsog$Niut>#RrWV&KRNlSm2TI6}T+Vq)M&W7p=`$Y)x!O|hbPWN})u zarH*7PNW;Z=?pz^-^||RnEK>gPP$4p%ATW*$#P3joA7E(k-A5GzPIlf8ISqO`}}}I z#JgukVzhHn&<@M0N z@2|=6>1V#IPx`daZhnL8ddsFX@AvPIaVSP1ABYY%HyHS(gYz|9u(-gQSwg|gbsFlz9+QwX5PH5N*VzX9xhzaXOgw7`B4pS0*}Q(_2d>OG4r_A2Us{+p zAyHzY4Ek9?fu5~tDF&@LzcOD&y-P;T>ocdbTITSUE9{LFK)I`v(` z!Yt`c{tf24#l*r9uJGs=s(C8asOhtJ{2Dr|24Md6uzDP0A~HvBvP^N%a&c7F+%(+X zn|`M8x%Lh0La?|S)4FjGw2|Zh?3tZG?%KiN{!pCJ(9kg3oW+NAbXL*lysM!DnrC8? ze5ft|_2z4rlBJz<`K=1!GeWfJjCA$1zk4qXMw4LIT|@@Mwz#0^Xxq^q@Xw* zE*OAuip2m_RCgae(jO9So$s|^yW}Y&sK1_#3vLCSotA6)YZB!3 zTgK&#y{k&D@=~kx$i-j?UAGx@E8Cu$KVv~gVKtMpGmprKhRRRP5#i_@3kKR@L~_KxG=jLF@{7 zd27lUpFfKv^Cvv%c%>63Pl}ju4L|Tvh@bE%nj%9{iZxp$b<8$T6(6&nNQcZMsxlpg zU|{Km9sBl`f&v0JovOiRwOhHbi31zVNtTa_TY#&Qfh`iVfZsn5ApxmfREJ5H=8wVN z!hwcli(Tx$QK&pT%>gQp{*YB8<6Q_L386hyijar@A+&?r1laLGd2i+xNCo}~NMROo zFujScvmr_$9%<8E4x)LVGhjS{61BRkim63Kt-+#=7WNDf1|lHsrG~J}=r(NhB}=vv zY;WRxsZ&jpB;=E5*%kLyR13Z+FR|N8Ev+^@7!Ci*L$5a<>U__cDw|VH~Pr#BGkQ0lr z?KU7sQU0y=ZI98_gkaI9ZlNc}3_y6JvQ^bc5IGsWoPNlA1@$E$E;2I*0hZ@Cdb}b+ z-=@#=HD5Y~KIWyL-E^dMgK(ck<^!G`{ z8BZ{V>J04ca#B)PkyT;UjNAJburI5)%Zt7(o_|K`Nam&UXBP^Dq={%U#!#iykP0^v zn*dpkr%!XapR9St3MXJld_X=hd0sK$Itenl^obKI@f(Yb(;;fet1@d!+l>#4u5UG% zj$kT@_kw>8QZ7k40EnlqbJ6>ohcjL8?ArjbK4ct%jx8XG%YX7KQ$8K&t(JMj%OA1RoP zC2@jpOZ)-CEF!DZ`y})Zd`V4~5@e|XvY+_qt( zWh*eL*h>pC7aO&7YNP%=jLt>Jupy0oe;l;bkiy6VeL7Aul8%xsQV1sfV6*}ou!Gs{L zUqQq85XAxPC4cj7;c-aXb5$Lcm zNG2?NoF8>CehZ2tiIe0z0IHJ23;<&=%tDtMHPJK(qYNa$Eka+iANcavG@-p01xqvm z0jr!K)QM`E)0lfT-plcN)H?NIE*Q@s8NEnp*kxXzXnn9|7iwn7^Kv0PDhp0nBpD1WCgd;^r@nXZ-*8p6u z-?BvknGDHkEgGcPFl5%uG4^iODA~aQy{e``6+> z0AizIU^hVPVH}M%db*&$I1QlKgD2J~=R1 z^YEt4@rM3vKCyKTIpp9FcwTCriKRs zUY7*f162fB(i9vg%&|8kbUwM*C67TKRz!XENLhkt|NKkR@sFcXw1r|2U>7bGu=(QP z1W4+!T!{B9IC(;;mjH)vA^dZaa06@Eu;2f(y#);<%APpXLJU{}3*&1a&VR*A?gAwn z;#1Htp)-Aq<2TG?Z70_DHxTfN4<7-h&|%@&M26-c|Jj2;5mKKu5GVpHqPtO1ftAKP z|B?$5onj5@>!3I|`M}Jn5>pXbSmr|h^oKW(#oYn|2RSD(S|K!&sp%i+Y5Ym@;a=Z& zFt0vbt?ITn{QP0Z0aXfu8Y>!KoW3*yavf4b$Qc;Mf{7xDvqVEL23G6aUOT>vU8EPN zz~x}U^G`-Fp@&KaML0XW(DfZ2Oz(3LB@Z?UiiH9nLm4Wl!SMV7cD{ff3AQh-+*^3@%mxxFxE^r;5H|y-LGz;So3V1<#!tV2z z7txf&M8nACK9O*Q>tP@IYzokrttHE*51jD2pVHIWZPjpH*zq?N{&}6h5+5$sk^)vUJy!ZtkDMMeHsmqtjJDWSo1U1&HWGHR> zr#4UWWr@Ao8IGy25|Ri%J#9bqdzsCEITvO-iWq(4!zI|x9@K5f9=FF6pKUSix{b?2b-D2m3n2>)Hx}MGrR}+ei z(6FPpce;wY;YrlpgiU5KUlx-@8|z@R^y3 zn~uz8OF@5$seO?d%_aS_QKj8zKJ0;f=t#F0)hGR{*KDrT#Xj%pU=x*~w;HC2e0lc# zAApGPY+|h8umk&|>Q_|vv(|(R3F_a;uY`d?IhEqu1x?#d0o#oh`=@1&wyM-j>eZCf zu>H-QS$WlV-x5icK4d6ft-a#R^amIj#k00{=*8Ha+5W?eY0VqjKw9nE@S>RR!!h$0 zYGxZxRs8eQ+v?XY^~`?@{xuiJlnqPzFvm@YM8|e9icx{QR<#82LHpa(GJ=R`w zr#uy8y1$<~x`?`F>`q$$#MLvD|DN)IorMaXm*ss0oH}BOdD3k~8_*HNl&gW^S}3|a zaI~SCay*m$I+S|%;La0nYq&z2Pl+D>ZmZuU8vAXud6m{5>J?#M(Rjn2bXz_9WP}p& z$zt2;W17WbWN}k(Lzh&k9z{!(cNaB&dP7Dy-NnUa1quJ-r%{LFr$uIc%MKn>?{j_d zL1-T?zST`%I|sfwVQSw=v;F&M;IVbnot8@LzZV9-<N|8u=O zUc~nYX^rj4tvE!0U4m|#jrk1`nY|exMr1@G0D?IgDN_(J7LHKYs=;c6&|~(fbEbkQ zXZN3dMxtzc`W{%B!U^Cg27){y<;XXUReK9V8zOiLS!j1oj1pitPZBMw}i z#DQxhtqS)R9rC@_-qAV-;k-Pl1IuF<=_2E$&y+N;)HMAswnOaRQ`ZC!qFw~I6E5vR zXxzv=s+YL2CnT)Aj23p*a;Jz0>t!%WUGJkYnH3+7gG{JzvjqlviW0vVG1EMzL@aJj z;7wD)?Y##_Q#bjF3%5RxU9zuj_-Pr`cO=n}V1hWFpAFh_yRyw_D69WX+o)MBA9Yv8~v`ppMr@g@3>}+j@`AD~;1iFKegR#y!}ppiP++-)#!{do={>wS zy%xn*@=M`mF&t*!4NvNBVo zMKR^4O+z%;xBpF6w7rr|FYoMR>PmRuxRnxvP9!t~O4ZLQQBW!1c7yDKD1px>JWzmP zx1I@u? zo?K}VMEbB;$Lo0()5Y|Tn(oD_Tq%`lpYX)8Y|c67%$TRz>20Si;(7TuImBPOCSUjU zH|L1#yBkOPOtv4}D9KFDIqYaNr(sHgCKU@t;}Cp6#KOtkb=|u zASEG_O)|z5cTJ01z3fAEOk6 z|Hfq`CKEC{e!3XcnUyP78sJWl)LT^SG;20}ZwTDR&$zVR`o;n-`>j-K9AwdA3JqAqtVNMbN5kCd7bw=UU zcWtfYsF}YtOp>5V7{h&ZuWHJ37ecq%OS&CQ+J9McEaycl0aW+onKQThFgocjSe)lU zkJk&h!l>*0t*A8E#1U--KuNe{i=*|MxR;nz2HKKulO?=$L7bt(V{i<8GEos&=Bp~2 zEP~=rL|wAw+6DvknEV!>{h{aRvK4;QT-WbF0#L*3 zp~oqEp4ATaI>65SntE{03yK*XOXjgE;j220c9!1=o8x;}|A1`+j<^vI6_gBi)9&g) zP|d^cw!B!5`Q`=x&xV*`yu*upM1S=WTSTv2E$l7`Ckc)ic{JH_^dNhp3kNZA+)w}b z1x*we1*McG-qp%OR0if^-t0S$=w~qBH7>kUoyTtGq^ap+`kUdlCHsF>>%AgFT-$pd z-0Dlws1|nZ^$267O0M@2>rRj5YlgK5`sy`v=WdhD6^H)q$jG74uJ(LS_eVpr$B(Or z$-AXwN+nZgMfu8ZhxPGF()<(iewf^kYVB-j%$SE*juOqh3`hb3MksF)EJH{UXp9eN zWz^g&`S1a>FtJoY&LGX4nv;xB(>zr ze>dC<)0=b}zv?Jo(EejHw+RwZ!39)x?F^JYcd1`Ea$MkfZ(-+Ir-%P1yM|d>HQ~@d z=lIn#vN*JH%ZSzojAhus;4^%(tk?i-+Q1;%#KbM@P9rwGQvngENAPU;bAI?%#pq}f zsJ9YxT8jG$OwL=K8}}<}XgqA>o6?E^%q-brZ*r{}#@1;F#!N3Jw6MxC5Y&jB{!E4B zFBvfG&KS$Cre6ydy#^QPcW`>7yve5()DJsZ@QTJn+flL+RTCsM)zL?<4QxC3Rk`;g zhLZy|GYr^W!EXjX z=pDET6hqB17)`-vjJVuHD8!erJTDD+5Y1J$zD)3(vRdZn(~r|DcO~?*z>eYr2I#A3 zX}cf*kAW){=xc6q@7A&lR+OJ$x-Pd4J^wa>aF;nf*>JtN)6^_<`|F<%v$nGhtx##+ z2X3OzC(AF>RGTiXt*5oweNFTz$|&<^Xq%U)pi+;YBuZWmR&T z<7Nh$l*C~I0!1gPg5f$A@3e|f&|n5fMd|Hl=Q-LGCx<0R^wng`-=F$s{7p4IB18aw z68{5YiFALfm{WyHYTQNrMuUSn=U3m!HQ?2469+8ID%lz=1{iDGHoM z_uOi!JX!x*nj@Gy1G@ru0}H$e5AIFKk|1JE9;~@8TUD!kfBJ@6zW9LE%~zZzH`%O2 zZjXD}nsR4zo}OOme?_7C$WP&#(%U=#(qi!IG0Nn0W{T=^Gjm*%0`vE6s#?VD+lAl> zk%I)X0Ky5x^C`a>N-=O+cON=LjM6I=1_Z9?rJ5iZiHwR#{0hp#^c2O{sMi!DAPVZj z$AxRgT>x6<0}z7yf|?Vv*Ejx>{9V*d#>R1t61th@_xGF?vNmjPyf+UsqS;p4WE4IS zjHUrFAXHxa;%>d>Y77S-$8D?EXPZoLr^Ls;G&gpf0ADy!;@Iun_XwXZQ82~{n+`Whl9SQKO;e-aWt`W_QY2^0RXx;MK)33qPrOm>KZu8+w z;<#D>gsA1o{O#`s06|`x8 zHYVAsnFd92%4^}6GXA)iPXu!=NWR?-lc$o+&N@G*F#{rSXu3r>4ttad;HbR7jSk_~ zEyGHY@DqIi4$`x;gRZ(@?z(=Svpobz4;&t0kmjHRwQPUWG%?wyEQ?~L%)wjkmQHfn zoHVEYrseM5%r}*cAGRu-Q)PU(Y0tUpawFq}bPes=R3-;E+U5l&hh`H^h5`2fZZJQY z3N~0l|AvQq(!*v_Kt^)gw#zuZ(y$4f8oWmac_wWhW<<^C?3H>G#xr-<0` za86QVqELk5^90r$T(jO{Hr-gTa387~#WrLRy)bx71#w*=iSU4S1a*Ni4kuC{VyfUS zUugpn8z^UAs7ch<(mjuQ5PP&6KHnH?kvJ%9z=T5XvawOeo*rdIUt)Yz7YeF9d-txq z3@X#>v%@!{pYjFl&Me(+=r7fz;L!Hk@iEr6!$^B1pekEDn)XqBw!+!q0hdC=0tqK3 z7w|b~#6*FJ0$pM2h;jK>8?RY*7#ZGbB)7Rw;EZ%r^B%YaJ^rSFs!k%eq7A<9gdhvs zflxHL7x4-a>bU{yFtQ4j-BvKC)(xAk9TH&+}G@~4-W$R z%TwiOQmbZXop4r=DKY|05B-4y;KoV0S6d(2=&!`u1C@hmRX8%hK+ETXUnU-yzq+ng z*S<*7buC-5;!)$TxnKEb{nLDgbzM(g^_PVE4)PW2g~*aOc01j6qh3O zpb@Qe>%|qI8jiaLz=nya;z>Xk;jy6GIDxqtR-|!j_C-`z?gO}sw_)+Jl?%u_yw+XP zPJUo{&d%1Np{%_(Db;&7+jht_^Yl_h@cM@VLrs?)UU-Xnflhx8aZ$jbMp^c$X8)SI zq__rAle#m#TCy7}@AExoX6AH{>G26)5^PSlS@dUw7T}5{J~oJ&nr3+zO&T3)-J6Qs`|mZx`j%f0ch z#T?K&cj%R0{v{cZBb{<}ot`pthlwYbxrZ7J-Z;yDtVo_WG4kER5CgmWg;%n+&F_Ap z_9e6C%ck>NudMN+HVkfFt@jU>wk(D%`+|S1A4a7wzrS+D9{?Oa^uV}MgEj#q|Hs6X*`pYc5 zdpYRdGR&^M>B`_QZ*josAGr;~^?_slwf46$swr3dw#{*%KJk;=a2je%dl=cFyw&Tq zD1aFj!rkm)TSrFO01v{2Y`)#tdTATXIS9EyE#Jr1?6!@H>tPimrB_+on`0xk58R+% zQ?S}>(dX0SX5X13H>btkOVY*N{vV%}hQaXXCJ+`}E(Ib+DML?H^#P<5BZR+#ivr!;!w=T27UoF&uDl4v8z$ZT4(Lkwjh4(9Z=nC}QqEcuUP|~0<<<@o ze*s19;b)r34Zfupq?8y_S=jD!#MdS6OHPX0aF%)N*4mf99|kHvh)rZRSIybe{Ncbl zZmORO{+g@LOi2bQhdoV)=YzcO3OR>%b8Z?`s)yf?c*qiCu7MPlK`Jw&L$1AP!8<>0Fx1^u5QkpOZ5w#9}Rs zp}+-JmDAqnCu8V8L$XDDO^!?p)f(oN#TnFpDZ?#@lTDDtUG5AH`4@LQ>FGknasm?5k5tn@9 zmz0UR=3zKEuYtzU(eVgd3I?NKFks96pJaz6(>}q91B9>ym%1B8UyYW{{%^7z^@c)E zb3n)soU?eqiHjoXaq=i?Zhm3JQwn$iCq8 zbn3(Ok5dIGTL{=iOh-=OnD_jw4gW=yG}Im=I{M7_I_^vE-Yt{9-_y{=PaCFpu>Zla zh0U8fkNyC_v2%3dF8d9dlM|BKnLQs9k0xdE1>Uv6}cNg5&^h zJ1l9?keg6ZQ%f9HcX(H>l3y`&wQ)~{ar(C+x9RSD@Z|1?um%*T>yi4?7XMwuyAu;OevsUE4zdfvKv$Rpz zrZqRJt9SO9r%GB7lFYWSR)nu4#U{>~tN?NQP$6@#$?!C%J^M;)m7nKZ{!U9lgkEfa zS9Rj>bkPOq(C9D`1HqFDBe9r5I zi74YPHB*@@-&}&6RC?p1ses;dp(uQuRIS#Y0tri&9pfGEWD$aa$=7*ZT>o zXMF$SDxpb$JSsKK=h@$B1c{}+N$tA*YHH|hQ0j6&_;HG7DHGzifNXitZjuJ}Lq)CW ze*RHg*i??=!=Sz_AQcZNy#l?&F9baSjRA)Dj_bNamKZC2xHsc~oX!gh1xD^rj1*nY zKitL>>@?Dw+x6{P+Hqy&bHA!7Hqi-uv(4MSVsQhvYGBbzO_uS-ZkZl=%#XDvL*89t zzpY~u#%6f*2oLw?9VIuYRWIB@ZdO+ zORKtvfzScL+EUc%ecgVGP;fltP0(8318j2;-7>_F-$bkh!v(^*MK-MgTw4t329bwh zLnC@9Y+_5=7tfzcVEPq74o?Q-=4y3Kd;g>EP5?AXga$V4oAUHJ_I8|Zagdd)Jo}rs zTqZ_3e0%eI3TN3Ot94FcEJs8#S*2&vzmI!8*^#nQ+SVZ=a9^xfNzZ<3NQ`=P2q&=#x=PopJH68quz z-@0+|H!&5Eu(4s^@F6g5^S8qlsv^%fGq3zq6#4vX)o0qbvda~AziscoJ)7q&eeN33 zaJv}|E#qEE?_VsAx%(M0f;Ft{Hb%lM9K{YT za@x8bZ{nU1(RUYObQ5rJU8AL=Eq3KUGn!HeAl{=7MW^`{_X`ha9W0Z{@C}?BG`){a zL=O~#X+azbvs+M%Cww?cW%qx-?^51O+HSGUTcwIIw=Dk_qQBTV;@fW zNi2XsVnW%rfa>rNN@e+J5Jd>PAF49RRQ0U_In_B2f464O{?zFM9+~xN76fOAIweOQ zJuBGWW>Q4K1wP}`6+dvR>S!zob;oF**^_GIIC8obzFEc{kYOirvvnd6lhrO zSj{WGhJ7D?Xm$MKV((EY-va5QV%fsfxoI6PE8;5}3)d|Vv`l?4uNvi3uNd3^sip^U zDz&DTs(-(IeF1O4Q*a*o_qO*mG0y3!x*C(;hffC1wF}7B1hWNRuyvqn%Wnb^7vdSB zvIad--Tz2l{W9i)L)q-;W<{nf!@x3!Yc0&GYX%pV!x9L-M9{`{Yf7ha^EWiYtabhh z&^A;-Uo2m_r6OyEe9nMRU!0%X+_Z^1u!ec{p-2yxW5@G##Twca~|B&t>N7nqMkJbT84iXjI)=;@Y@g>RX0#!gOx9bStPq`LqNhX`2E zBMBRCdQgAy6oeXYx(NG`aJ?`LCT>^+sl(1m=3=}sZDo{+LCO}voB+$Y3+e{mx^)hx zKr2ktBn7O1(Zjtr4HG2rZ_!E^p^YFsPQbTzkp3ZR;E8?vjr6tx`(G;94B(lJhFSpo z(pLvjV4Bgu_<*T|Kp;Y8RB(8SgGrnO{z|z;Mh-ZZ05IsJedxw~Z9t&%fM5??vlT$= zAb=$FOW)Xp~ghKd3;>8V$+MA59w|0|S(^KTGf zhe|)B_en`uk7r+}$a)rPRWVd1cV3+7@0>h4+W3k#hGY3D`*V$6otp3&vMPRzV!0+x`76-PdH{aGQ;83&kXvmm@d@$h^G2kQXLh4Dk~3k5)P205?Vkv!5j$MI+|`pY$L<<(mIfg8 zhM+bL2z$O=w5)pPCz|?tLG4$s0z$ZmmH_Sxc*nq??8pd+5HxLZYEGaqw8H@RRP`fK z$0W!}4{jI<(YB^EzzPa`4b*e$pbRDP{lM_I6tcs8oSfqrF%zEx#x|@Sg6yH$C08`; z$0FwYQOH-J2;tJ~63K^iGT89Q*o-AIRkQaPDevB~BUbr&e)hxJ2N)g^8Z0J*Bxv}J z@l6v%pHO07)u51`lrEQe09-NXYt+y={)Pa6lJ;dZAOSy+cbM>f~h zGXY<8IQ6%9yWUW<%aq%8?(hY*HLvJ>yerO2WIl z@kQN9G{`t<2yuuQKw=?};T&_1ROj>CFnZz0+13OLfSuwf#i0RD`XpSYxZN3fLtXX< zzJu;hIf`$d^{8%rGDJb1dZBrfuY%n zL3e9XbnTyPICNunW=^`?1!C!`kq_CahIM1xR2#XQaX0+8NQ6O;N-{lwB_p7C6^tV! z4M%0BXSI}--)&G7Cnl+c&kel*2PY>jbSANT2^R}j^OM}#d%t3MnFvS9hmZQ#o?va&=!pz8MUuq9%r%+#`oi@%;bvB+H4H%#LTw z2J`ZNpCbJTJpby8=}iQ$MxyRdU_7ZYO#9yi^4>coiz0eP!t=g#2y4<5Gl zC-Tkf@3AwneE0Hwn<9NZ;+1_yG~MSsa?wB37@@wj}P**k~8-i>$j_Uo$X zg@>7^{gJ$1FEpXxQPLx|774lnvo;a0plK^{S6bkTW zqu+8h0bb7G#x#r23KoAFRF;hoJe^5XeZ&b zn&-rqrS%+Pk8p`l3@=!i*-u7H7<@tvhs4CVTN9}LD1Z|_Y6{Bd&oRsyNJ=JJQBQNb zRLueFx;%?HocV83x{-HPDwWwX6lDj3AmXaQv5WjGUPE$rAF^Wl=2z3xFE5KLP`9jB zKa3H_8dPGKYfE7u1EEkUqETNSh?QQgD#Z5-+!F4@`hg`tSd$WS$mZg`*GhlG{d zp5mn#kCBO{+%K1sEab7qk-kh5^FIO$hZX#jtr^u`)mUZ_56F$$djG@~!f2JWQG($X zy_FelzZQquTwPRqn@Yw;EKhPA(V%8Ia%b7?=p9$Ne6usIu2wa=^IU@|<~Qf_kfi6n z&$v|?w1k!=hsfwK)UTvfV~n}H?Ni$I-RI=49-G{K;ci8R$jH|I(}#9#Z@GSfqoCUH zBI~z^i3-o^U0GkF`o!0ANtky(ci6w8x=Fa*ny=sMjJ|e%NAzFx z7}G>pG!JxIO|NX1^SW^$Nhx4HLsw*9d{Wgulqg^(66NLMVKym=Ju3^QPU3F{B7#f0 z&!NOy=s5mvd%Ug3qkF-2v}YBdD?o2}{-p*?x9JgW|L#!y={l&%P(p)`v0bF7l3#wY zs$V969DOg&6(JUb^t8g8ri0~(V-TQ_9(|tlXcD=D`i9JLi3EWHrUG)rl@)r6cUu=m zZ(ROOoRc6y*b;ODt@1UTvC~105E%J!zrKlD=-C+sBCLRGXgp3#?BDStEuZ1 zRTjRXXX=Va<`dDr3oJD7)F|ecM}Na_sLH7i=OEf4in_b5y3Veu_5?H*&Co;`80Tdgl*+g$seGYXPr`}Ae(IDh9}8?n$o6uq}k zdje9i8TOU=ai*>%VjTi+w~Vw}5a0GzYa!Tf@HmLgK*CKVbChsiHo22JJFWNlYO0@2 zcZ^N`v=1TUp}e7&iC^#lClf>YP zXSCu__3u5>lyg7p6fc;V1mC_*(PI;mftZ}L&oqvL!ZvsD09r`V;{dU|r()u+l;%C8*_P`WcQ%EEE-aM81Qj{Yl$-oMoD9QHG)-@P$R zag;I6$gBh#V8{{NLwM*~uI` zwhT}unXkKuZ-LePTeQgge~Lq-w7_8uq--u-O314D7?>8>V2x{JnyZDDM2fpYX664C zRe2Y1&nI}}Xc_O`zb}KS0VzdE11cnI(UA0kg!d6gWQ>*xg9NJ*2qj#~i_r>JqK-Q? zKiBIyPnfyHBX+#EoTNgL*mDfsVQNa!-|<@pZ2Y0MnkVf8vD68YoVf|PBZ-QF8W-s5 zUNp~oq5491Y@>@4POKC6DgE^5Yrs5*nGFB25p!BBOw-|v%l+Ozy)ijZ(^f- z;D1%ni^gQyiGy+J;v`mqxOWsSKJj^jg)gWVp}+^s8&l+geiO<(pm2ji|Kjm5G$$ws z1&OCCR?Ab=em@5q{K%7tMn1%%f`*=r6kO>SO4s8CzePVuq+RrE{Ly6Sj8Go5TFZ6p z5jb`bkO83|gAP>%u-z2pM78(?9Xk5GDux+vQuQ&Q35B}@_=r73Z4B_Q#5lb+`=TKY z9ZMm|%p-@VKzw|R&1Y#W32F>Xjz58~M;d_Bb*hG{=3LMD*otXW_`>eqRqlEIGp3?@ z43p!N*g5_38lFCT^UaGrcJ}m|h&qN$&CaU0(Uy>nTEYhm*lb64ei5NebE1i|d|9-6 z?UC^K?K54`?>Tn7RcCcPcFcTZ!@4_RA9(3NCtH35>!;d1*VJs<$;e4~(}(sD&K=5k z&m`@>uOwG4SCDt|V_M6Q_hVn|hS)8dFK-8D983WFvRrtIKBZ6y*&1 zT!ixkMlbl$YqhSnDmnUG?%MkBo2pR;pVzHR3{^dT>`AOgxbm%=s@Kg=PABkbNdrg| z`r-7n8sayY-1A$vvgEeurL^%J5ENS!H}C!BNi(a{$Hhhe(~5TO`<$FFs~&O;|KxcQ zfBK!>Ob2COmEliFkBi5 zwo_JU5ZP15F9Jt_05$>IhkR^hBHrCgI~lM2LAsp=jlBjxPK}JYyl5F(kXJD;<8Ce^ z2UX|rsgdN}4HA3whbAiR8d82L_k+STv^WEz%vbmp?mBqzF6Pgd^?8ABK=!^122JF@ z`5;(E9L;X9WdL0*+eA1v6ac2yxQK)7g8G|SECZXT3f#@Xfw_Y;GBZ%eOdj5X^bYVW zOUujm^Xs8=A`k?Q7qE3mG91n~aG;)|D|lK}%KLSN4R!vDjGiMY%YW;u)L%U*)WTP+ zyFsqpboF54{LMW!)RpPq&XnZk)mXT54HzFZKYX)1``$6`9W-T;DzdVj+>=J7rSY%x z6!B59ThkSFf?25JP%DFd?#90_oIV}=f#|a7x$fE1mMk6M2E7?zLgDxW`uo3!e(Avj_3v9}^L4A!(|HwT!7EsS}9tOL4fWj5|L!DfJy>e>9p6@RW~Bujd?07 zlP)8re4a_aK+V{A~VFdsNW5u(^qqZ}O{m^;&lFt+sXF;F9pv`)uZdws_$DYA5m4 z$JIA(c~&}9W4*q9kTK%eu_tBso(A5$$tdG^?1?d-f2R%0c@`S5osNN9+)uM>$NFZe z#1K{40|$88PVt5`ZU}*OdSpH)FsN-^$b29ZO(s3uXI_Py|0?VN_Vz^zBYK# zC$d_~Sov!(d;9If(iuwCogCYCs118yGkU_mv^!wB?seesx;x{_2lj0hkllSjlPg3j z>se@AY1yLSG3Sl73`0z-*XnCUZ+CNJ|G~2M#ztnzoTJXBLac0Ubevo}&Lt*@?%1Kc zF=^)xWu<%pI4*KZWj^t!XSsj-K6q@%BE-3f_dGiEa?ZzeJoH^(`})<3&WYZy@_oLC z>b|h2+B8QYY!ce$7CFHl8{nS2opb#++Ry6*1dlxtUwVghMcel5xdH01c>#CyO;!D* z-Mx>C6Ru}OMChE|n#C(tbU}L^eXV}+w~m7yDOFzV5hhcGRVQytZWT6pknwQMbXJAX zP_j?L33|KXHCa1$7(K=NWm2nOQ$_x)rR-$xf9k|R`Cx%PTyG-6Kjv@tE(ox(zIRxf zzqXN~Qj#KQilC3xin`Rm!23~J*!apjl(5xBzkSl~UHIRu4LfRtL3ptO@~ zqg)K@8d&$iafhx5&((@eQ0JpHYPEKbQQYp46&NWN1%&sjZRanyF&A;l5P>ZA-exI)Bj!TJ7AiLuzvA$zZfAtE~K0!p1Ff z^!MM}&$fa~5$?Ks`xpb4_UpG5cp|VS4l961V;1HeRg%@NuXHHeBP)l^=W9U~zdT*h z-YJ*9T#hf@_wT8^C{|f|pe~7T)jyC}B{FUP$Sf?o%^DO_xo5riGi#sX`W(YBU|yfZ zN|3lf=$F6^+cdhGxPxPD0IEmg)h1q9&=&tNog-V~zY7m$%LuNJ0)UkN*)U3k?_ z4IBy5e_y(Tbksp5P}#2v|JU{dQN;&-dF*u?Uqq?@a}mqT@RKfideD^M!AHxCKlq#j z6_P6D*1xyuOpCtio{v>kG^6@9SuHSFeTOpMe3@9J0(gqBGolR8hGiRI&^WW1k_kf5 z-m!x!t3@|q-H(<$QHZUgZ^01b>fPWV9JOWr?|K-Sn0l)d4d@#9_UPN!_u3JwNjM7M z$`t40yHjSs=V!qu_p!XHDh_X)0yfCvmd5_gLr!t=F4OL>y|?_Lm(Aie)i0@7WE2|N z8x_f8AjZ4eZ{2Tdb5ZTiTZKm$mYp;jz)T9#hAt4| zMh{Oy3^bOkKkp0Y(=aSD^=5l^pQGRx0wCN88~_Qj%30RBY=V}A2Sk!Bv)Y`rpGp+e zTgIr$aXt0b4yd(Tb_+jbtj;jZf%&C~} zm{$%t1;Y%WKtkczlV?ji+)}eWZKF-^2yYO|!ogp5Fcbx-{0<9C1JeKG5 zg82i8zcoM_2+4_J7LP*{L6YHOV>xZ!Rjk|K=FJmKxlrNFr=Ngpnfh)% zILu@GK#J}CLn7$dR}}(US}h>6-Rs)R4%kWDpPbvFED3M=n0N*E7hmSQ1cvxDy0%`s zUQ(!(MN7S5sWrJ{pK0DeOCqtCiCc$pfYWT!kfcUzZs8wcn5jh^kRYIY>b1BalOpjD zzKnQj=MWzKDgYQLA$!q`5QEaa?s(vg`u_5`bogOIj>7?iu`6y_F7gYS zSe7>4x*1VqowZ@>)~&BBbZ?#LRoT4mj&GU<7j{{nUtyQA`%u(_@!L6u(}k$q20lNR z18zY)O~9czkGDtsGy%^uzZU2iaykU%9XR^LgOAvkSZ9Tk;VazLrE)JY?-3OZ!)Kg; z=9DD76Dtokep8A>= zL$4sEQr>aiO!D6M69UI%p3GSaYR4#kl{r=>h4O~#AxF02{r>f8Bt2EcN(EO8Ha%vB`>CP#B^kvSIID$a@u~CB6!)isz~kc%@`)yR!dCrB2v}z z)nc1c6YwgmBjU11?6@USas`vvAY zWRGdZzjj@oW#mfMA9ro29NM!jR`1LWe!6SKNtXDD!RU_IdD+77Wm$wFT)%;|t=0wM z(UVLH$QML!Of@XJ8K&zfASu)+v>Jr+h-e1Mscz(Jk3SJtP7?GDKjVwgyOQgOggOi# zZ4*lfVV1;iK{-Q2H~6ROpWU z33l}chS0>|n82M-2~yya&=p!`wVgG6hVt;zbh$pR#Je5rk9A)=j0NrN>K=1BmHG49 zToBviKPBdR#{A9S?d|Qc$)5w!fD1X!fWz+s`k;vzbjl?#5q38oC-IJ%Czlrmr@NdU zK;b0_PWV^sRYtx!xVvP?35!Ph%ZKOt6?^qK$U7$z1@d)d!R;x+q_z_uWr*&L-dm5rVf@9UH zmA^fAZL<5jKmG=gcB9{it?{U@`77u8UN&5537nqDG&LVq{Y>lb0Ox#*Q=6*KuAqH0OeqrSE`O!fZyfvznmJEAv2WloN%l#U2cprd zgpp>2lLCbm6(GGBAnmC9VU&-owRoH-593%zXTuaPj!iR)XJw~)Ha?6iMR-=PmnCY4 zxi02{(T+eJ)%>TP0b%@RL^(C;B2EM(2(cpO<12K!*&ip2RRy#-w`O_BootL?cjvX^ zEC*hjnr(5fZjo^=G%-bl71enAkkbZMR?YJVQlEvsF!%q=fLk-^<%vyW6vOfLz%-Bo zS;)hJ06EY*2-ryen*~#Ef<1zvgc!=!IP~oZ`UBMl=@4L|7Z(Bc5Z) z)=626+Wggv`$o}GJq3jruOATivtR!4jEmyUSut+KONN4+2Wf*^n!XLsS*xpSPYyNvThxIX&(7MVrSr9NFLn!tKff8VFf{|t zCM0q3H9;Z6l$Z#l+fu=bV^?fC}b{CksOO4baAU-f2X21MvI zFJ}v;uHFt_bg$<3TWsIo<>?z3SbYBFZ~O6mBU4d;>RcFvrysxm)?*R)T8A5B7sQ6{ zeHpTcgF~5>%lP5}<5jMx4Umt*Mxql4W)n79n(^NiJ-K1#_87ndGh~LV8#HMzw4R53 zoz%x>MM(_eyaP$1I-=7X(cXgk`Qwp*D2RMGb2M`7o)(yO9daGN0CTo%?1G`lwqG2> zwl$8}350b&yDT3{=oSF`-<;VSNX{XsB$I12D2Vj}O0R7wH;A1D)IVUwN#m}NNKlYe z6cY7z*747$Dk`Pc!WTZ2&yWV1&#nNWb_#MX6H*J&-Qj!|F%ZvcsU)~LnQVY}oQ(&W z@;8Keq5Nj+A?M!)9vb(!CmR@Ggu_N67;&iWWfZ#Jh^t7O2Xv0aK|G8*31d!U|5LpH z=$WvJytnXV@6 z|Es+-56d}!`~H=E2~$K3#av{mv4pfxjg+O*kRm39Fp5c*MiDjrEXk5=SxT5fg@h)R zN=SaTvNRc6lBN_xHBmEkJ+Cv&@4k=YIiBPB^Zw&@92%os*Z2BU0hQg8p8oKtrB>8L_XnP3I;}7pvT#8|SW$Cf#Mc zYg1ln38VW*IMmQLml={bLj>V0Vn2BeK$UwVPkX6jvUUQ>C3hH*8|^h&&z-4yEdH@ zCmDeescoe9z$2Rul>g+$YkJ9teA-OO=%vsvcHU6Vr?sP!cdM4J8z z3-Siucm(cNgns=&gF0Rs0{>ptiK5AT5jFatiIguQI<&`hiBbd@=+7MFKEr9-0Zpdh z)a)_H+qosUwX4KM0xt(M*jdAYJZkf==$iPr?akX>FnNmigi|keX*Sg}8WDDd6xBZ1 zCUV?PKQ&8DA%={LGwYgWHUWx7dV}E7q+jRz^nx-E1xS&reMA=s=uwn5*c_LTdm!m( zbb6`&%d!*P5|{_KAugebSsm=jTam&GaK)6tH7?2dnLqoj4EOlnus8;it0DBxsOY9A1hz{@i>cvK z&&F?d^qq*cp)tFD0KdKV=4r&YJ$q$=w&A%e3+(LdB2w>c7<#kdi-<5MDQNf-Kb@_} z0iZYw5ZwRF>EYMyZ9=}<={;fIy*o7tPm*>vm6A>6r2Zt5;oazFj~MaGgCI?%vM{nT zG}L(~Us{Y=vfpB3=+1TC6MlQ4wPRbEuW4v_cv9sMn?7qv5u5VF@wN<|5u+2#)iv5K z5wtP<7yY>bneJkyQ&e@La*|CSoB#aq-Xj|yz8d>5h<^;1io8wp^eDYf!rdsXcJ}M9 z)I8i&<9{mj`7pMLdF3pE6{6&fY`w_|DDxJItm$&)$)+4LFS*+ zt>W%&K*?b1Qf>@brF&9p!I2jKN#SyT`oE-b|0=4|N4dV|(bugF?kzJIFF28NgBcW# z*(ozF8GIriB-}DHi@s%@XKnExHUhm3R7;VBG*bT;h(DS{?JUA`=j6;u?qYW4p7+g| zpPk?Ad2M!Ls^Jl@-2vxoXLf#BZMT1lZQe&Ha`pLTRnz>g0b>g9jks?#@vds5vzK?; z>oM`OXc4Z5Gn=Za5`zw6MFgLW!Gz{(a!6>u0wtq?DgS?kbs;$sA(rQ^>3f{qSV4o+ z>}fUXN%Wb_*1R|6DYrG<%}_S=G97Pbf*+{-k&k1D8vr+{z@K*5QSxsJ9uXoSxseRy z#8e2Q+BIhL=FV-=qv@hud>nxXtNld|)y&LncEo=Y+;|eSMUT#DY|4G68s~8AADs5q zzfpoCV-=ov2}J6BcKF&cjwSV$^5ZX~XjhTjNNGjtKQ#Zcfob;} z!zY3jIvyQ%aKhv#)dscuDlOgpLPwje8>?QjM+g^T>Csu{Wph&>#=9hTt*b0VxO!Lm z?rFb%Y|!LLjA+NLbm=kKS9(Jj1*nexgY65zpKILT&XDjU5ub7E(VQmN26kZ!ESV8q zF?Hpqn7TBf!s^e}XO118y70pG9`pka&2X}mqo|T%75r6LE-t!Zp=^kYhe*V%&+u8n_qwL|V$KCTE zPjs@0J^T54O+VH21LL+#{&<;ujbDOlgtnpSYV(mJGuriz@3DS1r4~=fKl4dK$8k2+ z+dfCQPhoE2G4bWyl&g8qXyB2qJ==Uo=^Y2D#zlAi=Ri4r9lU}sbai#_8TlDze*W9g zd#3wne$$o2W#gMN2a}IH2(BURi{=02$Hss0&uwhFzI)nQpRYFJ%m04q|G(eLb1zgI z?>~}#B~Oj?y90YpzjyEENk#VL<+$|-#q>GNd&9eX1eN4(7_DOX`4TAZRS=fxM~r09 zs_WOT7dZIMR{q(aHVla6U6@cD_G3AsuMa;Ey3@liu`|35a++kOwWU?Ld*FAXd#?zp zztmG3p`U;xmdzIe8$z}e_j6RD6hL=rWU|7Zu;8_)SSp=P`zGqQ)FtDAkQBMga2o2l z;!e*9ek`vp@(9ID4w&}XI<%~>a-B=6x#n^I)2C01Q@ap#K?&HcLKjY2Q)eh-NGjfI zJ9mV38SGYdHO+l>or}AFNlR7n>g>|B%1vJT=DW21s-$YW{UA=4dX=7**19Hth=;2C zaK3M_$7n?9Z%xJ50qw7=a4X)27bbbc2t%HoshMOlafe_4R3}!w`UV4fs66SE&qWYe ze``Ob*0jf!mjQHjplw9t*?G?w6=b*=PH%!vu$=A=Z|;2q9XClJLT=7CG}6-;5bc|w z-%3# z4_;YUxl21dbm!MS_|#5QrT`YLxRAZrI?X8IyBBdz0i*N?nO7+s^0_)0%7ASmH5xgq zLO>VMZ_&(qfch6}ybRofd8b-(~^pyFN#v>Jyt6;4luS5)=4K$2a zclTga{oX(?aPGBCW59{Zsr?lE3>(M7zv9pae>mq}$SuU59HtI}00`U~h;lBs75WG@ z&P8C%(j+6qCoK`$7+knV>11BwY#+$C{GUgR6Lk`qAYgPr9M~igWSS)zk@c}#d&K{C zSUKA1apibh@SjnSSWC3m#ZCr@Y&;wV&K6O=xp#8reo{^>-uDbWZ>L;pSu%CpEwC<8 zC#OXUqh(j+KJWZ4@ivrKX0NOJ9q_-ndDEt0NLt+3ym|AS{D;{=*#UrQ`_ZfrDe#+= zKl_e&?L*yaM*!u;KKXl+tebEw54>ym>)q?cS8{XrlKP!^@nc4N-Tdpn0{F50dX;dn4-^ah|<<_AHQBWD>%lI#472T;r1t48X$ z=yz#0vCA)>*c!Ev(_P-J0pqJZJcL@0?$?BsS191?lhUkj`zwT&|J;o7S_FDHg709j zDSl$KaoSw4?Kbl=(+my(%iuQOgFm8|bo_q#NM_~~9E$f}t&6-5%aksQUNHTi16F1l zZNpd-21{41;R9Y`N{nk= zsJ+WTOGoF0>OoaqSMxQfgSYCW=YZG-ZtU$D`UA%|S1TXBpdeUw5^47Vq)3EvNvRwb zm}NgGt;JQ3O^Hv`;}>Ji`G!HR5|5nra_7F$`W7iJ(E5 znN94Xgzt3CJVp^F(X?;YP}RCCjXhr$NwbFicf-b)wU0AjdXhUB1=&Mrl#B1JZ*Dv` z&JN1%EmhsT$eCSzU(%mNFa#SdXO>bvosP2N{x96<%*Q5s4TSxM1af8F<`RBH;# zuY7U&6v+=&GXD;H$eZXAETCOOoKhbfrgR$JE#1+1goh=^4Gx8sAy(PrCu-THpnSeX zg7nGrHFiI~yf5M=@^I52B}&7NmHyVm!shwKV?KV*1FJduI6y_ebKsBa#mO{_PF*WD4XYOy@Z!k?Jn%Uh8*F`-VH6OPSs78}ySY$rY$fkcoC9h^r6e~-&mDjRr40|w|7Z!lEA zbQ$<#6qxN*RUH+o1EBhK-5sG(9>)qbVhD=j0!wgaU9nD+((i1Z9Iv^4_M4324_hfe z_kvAR$}P<~u!`n8@pA(ufm%a{+nf*zu7XVWYn0j3W>trdznyT}(YaOR_1wile}6|B z2TAWKdO-=5+ibkoPCBmNa`A>$FXAHKXG}O68+!_2wXBBUyNd~q*FLcc5|`cCXO$&M z>4gz@E>H2zZgKSP^p~zJ!{^PL*V1H?Ms@pK^JldHZ%gSQ(Cw`9I4~sYn2~|YGiJZa zxckkXGDXwd$f!DGRMPdbIe%8%e*e2k_95~GK~Y(L;;biu6TGUvzBD|IQ91k*vw9hA z9oe@2bitl--Th;X#7K zDclh~HP|>M_6VyeHa)kuQa{nhDm89PIqj3**?LFlDbCK&iT(2Dr8#uDHe%h-IvDv% zF)nNW_7QU^eGyWHh$eH=90Ohj2i1h+NPG!I?nxXsDXeR09C(~MXVYhr%dZ<}!QmQJ zbG5fjPg37YNGi(uN?-Qds2}m zTyj-9P|4^}C!2Qd%FJt6^X$#GlD~ntbEi7g?}&^nw@N*hXKm~M%c{5;`ykhHcr<&8 zy47sfL$^O0$n=1>)J$KeYxBwCRaMk+su{6Lr-p=d#}+#lAF06OXFW6bWQ`@aM!r5? zc}iAql0NGP26su_%KTLapvNV_;hwia-|1)PRCA|a{b!{5AUXVz!I?|O<@P*)re3py zoKg?`C-k{$ow=2hyZMk6f4I@aTlHkw>Yl%D)iw&@^R)cxLHlvT#+HTb8SdqDq0`eb zoh+8;c)mGty=8ff%j7pxhd*{yE-i81V6O4Cdr~9`t?R_e5e8p$OzDFeH91(bZIDr4 z25|hgs@Z=Sl=57!^E^=#rfgEJYbF(8}r@_d?%StD9fo+S6KX1L) zg{mfQzr3^atAxMQ@Hl)|Y?)0HPWAG3$a(i9)sKIZgCXl0G}^OEe0+j^bemSi4!6;$ z#YSk~VP&^TriI&~)T>EUfFrTF#a%}HgCqMK_^ZWQx%T_Yi|nRm(#&Lc6~e6M`za?A)7jH zY;haZAG^->+k(2UnlMaGyt5{A_-mKLlM;bG2kz6~eN(S)WB*UHFo5P$>SGx97 zptL$8VT*(0?!=%EK^{=M;pVr-nQIcH_gZ%=)NG9%Z9{rJ^4^%w$;mXuHr4I`8YXCG zbKHKjCOY7cv~ukci(Ds_c5T{RZKsX`50xqN?5PKl*BL&Mc7oy@l#2#B`F8K4ZEftj zp7e_~6@54;n{TbA9lP_py^~kqnJ)u9y18YX>2G^;cbgHcF=mTh)0YpBA!|}Q5+-%p z0(5Yv&GgeE4|*1v{eE6t9)Q~!M`xRyKnQOe8|oV;!?)|~lXCeeyF{Yc`Py3}nTbt? z%+HmO`M_~lp-a4ae){^L#L6MI7p?sgd*_551)G%CuNd2iH7r{gT9kNNiX%>^QEwEa z0He3ej6Kq>$XxRevcJy&8gSYPqkl+xO5?5nbW@=!mU5VU>a8mO2YgF2#IpWr^L@q( z$C6YenhUc&V%yxLN`-uwK7kAlY$xqNy0^KQ!J$9tqBYJXQ${-hmXduQn}h5_*geGN z9PWKDl=gE01JW3=n*&lMnmfzuojQEwm=yTV`>;c)-+y?U)%9vT%a&=4bS?09?(q)mu-o< z^<8jrRUP`)GK1g{W2sBafG&b4D~rDmc)KUyfI@q{l#)8An8V(ZA*Hj6e%mhpJUb|e zLtxXxSA)8UmVg(QQDonpTsuB>TR*!1dy=59<5IX~3Li40+7Y%tDfb`F{UPftF@WVT zHNna@vm4wtO2qY@dOA|aNER#v6lO()?=`yCKt7z?f{#E^+jNpO@mW>`jag2#g*fpq znj&G`cbw%`Juz~)JNMqP$xw0B>Amwbr!FkXuY*~jGh~)R;whRz%Lkkw z@7&d}ua-_k`RX4m^g8u(jOt%=AI6P8KFy4+WU7+U9urbNkvC6%BQ|-B5_tk2jQGVP zODp)auS0N>nGF&bXsatA~oa=Jja3gVY%*UX?p4uL;sTUMOpqe|7hh_K$qHMRFuCfafwtoyL!+Z1q~DvGh{SKG zvI_vwq#VQeDJQ$JZZL51_2KSblGDq_PJKv+w=3GXH9fyOJ-02R7eb9AgfD?oRPT{b zOJ0sOju5nzZbXlaq#|o&Ayr&N`w5>`a02+=DMFf1sIMGboOzoH5b-ttCrj92c}YPZ zsx)JgcuZOkZp5>;B;HYds?uXD*;q%p6W^>U{nJfMwyAVwsL%tx#k`eIc$~xNni3Gz zL=%StT-sdH0ic7z=F;>1Zk4Uj(I8{T@g|E(mjp{Kh>FcmK@atUGjW8?v3trnme= z{(y&ALlQ3k75rPqp&;ii$#^V7?;w#i;^Rm86B!T~BaSFRAFu~#XB?I3J{ZB(-U{^D zhawkkm+Z+Aqj}XM!$pG0&iIdq<7iLqR>BIJR6k;64A~C@X)zcQUB*S^m`mc+h;n1( zP@VIC<27sbtN=qnjOLS3HRe%dE+{zoQ}*5fkP67+HE-)^`VXCbv4!k&Ixabc?zR`$ zIQO%IMBf(-Z>PbphiQvYBs!9~e+b7>THa7fknPdYH%Wz>=7}->yEdv3w!MzgoEGrC z#h;D=x03~CG#Kct6{-BZV2unV1L2&H{&dcdmRt1K_cNu4drl|QGr64FZZ`qu)pvX&oiLelq+65&mR&SlBbhk7m+rl|Ak?qhDfsKnQ&=-@Z44H>9H# zHeDXM^XL1tga@YT_==@JpQn)9IGt2a4u&xi8JVqz^(}U+<#P?$N!3MQ@5Jbs~M~7$hDt2lfH+^x+K>>+~fErp_xfsI1qf|Hfv z?Af8GWshKdoeQ$ZeBjW!p7KKT0`mA_=l!w|a>aj_W?|N0XYqEk&M;Tli?jqJ=cX%k z=<-6U%2pRJT5b5NDk*=J&xB!%B<@->)*)*M?p>?z$-C{0Gm>#y_-4(RLYlgE4j@=H zuLC6)ht2q}+1d($bIHcf0B+1#Y&5t6owPWzT^WJpaX9a~7>Q_OTzhxbV()3;NJ58)ru%)H1;O$7Zl z)c=Jw%DElHtI1e4v?XR0XiqSXN4^s+mGf2I7ws8DR7Yf#pr73IVo-b zkeLK!0ohpPcVJGbUpgpfG?s_J6-4+%QXkai&qY?Bc&R9Uv%vjZkFxX x^lSVUW~@H_Ih39t73$~z``>T<_q$Q6dNhCGsK>2xzEtpQf~}*?N$Xi5{|DR{2~q$6 literal 0 HcmV?d00001 diff --git a/img/impact_by_block_size.png b/img/impact_by_block_size.png new file mode 100644 index 0000000000000000000000000000000000000000..208d63aed1f76dde5c26a9e33499f16812ddb66f GIT binary patch literal 138793 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

^4&)>z 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

5OShB?UTtKUPM2ML_e$da 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 literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp index 8492512a..790b16c7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -149,6 +149,53 @@ int main(int argc, char* argv[]) { //printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); + ////////////////////////////////////////////////////////////// + + // ### Extra Credit Feature Tests ### + + printf("\n"); + printf("*****************************\n"); + printf("** EXTRA CREDIT TESTS **\n"); + printf("*****************************\n"); + + // Radix sort test + srand(time(nullptr)); // Seed random number generator + for (int i = 0; i < SIZE; ++i) { + a[i] = rand() % 100 - 50; // random int including negatives:contentReference[oaicite:24]{index=24} + } + printArray(SIZE, a, true); // Print input array (abridged) for reference + for (int i = 0; i < SIZE; ++i) { + b[i] = a[i]; // Copy input to b for CPU sorting + } + std::sort(b, b + SIZE); // CPU sort (std::sort) for reference output + zeroArray(SIZE, c); // Zero out output array for GPU + printDesc("radix sort"); // ==== radix sort ====:contentReference[oaicite:25]{index=25} + StreamCompaction::Radix::sort(SIZE, c, a); // GPU radix sort on input array + printElapsedTime(StreamCompaction::Radix::timer().getGpuElapsedTimeForPreviousOperation(), + "(CUDA Measured)"); // GPU execution time (ms) + //printArray(SIZE, c, true); // (Optional) Debug: print sorted output array + printCmpResult(SIZE, b, c); // Compare GPU result (c) vs CPU result (b):contentReference[oaicite:26]{index=26} + + // Shared scan test + genArray(SIZE, a, 50); // Generate new random array of length SIZE:contentReference[oaicite:27]{index=27} + printArray(SIZE, a, true); // Print input array (abridged) + zeroArray(SIZE, b); + StreamCompaction::CPU::scan(SIZE, b, a); // CPU exclusive scan on input array + printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), + "(std::chrono Measured)"); // CPU scan time (ms):contentReference[oaicite:28]{index=28} + //printArray(SIZE, b, true); // (Optional) Debug: print CPU scan output + zeroArray(SIZE, c); + printDesc("shared scan"); // ==== shared scan ====:contentReference[oaicite:29]{index=29} + StreamCompaction::Shared::scan(SIZE, c, a); // GPU shared-memory exclusive scan + printElapsedTime(StreamCompaction::Shared::timer().getGpuElapsedTimeForPreviousOperation(), + "(CUDA Measured)"); // GPU execution time (ms) + //printArray(SIZE, c, true); // (Optional) Debug: print GPU scan output + printCmpResult(SIZE, b, c); // Compare GPU result (c) vs CPU result (b) + + // (End of extra credit tests) + + ////////////////////////////////////////////////////////// + system("pause"); // stop Win32 console from closing on exit delete[] a; delete[] b; diff --git a/stream_compaction/CMakeLists.txt b/stream_compaction/CMakeLists.txt index 19511caa..9ff58cf0 100644 --- a/stream_compaction/CMakeLists.txt +++ b/stream_compaction/CMakeLists.txt @@ -4,7 +4,7 @@ set(headers "naive.h" "efficient.h" "thrust.h" - ) + ) set(sources "common.cu" diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 9b82b39c..5f97fbea 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -67,7 +67,7 @@ namespace StreamCompaction { timer().startGpuTimer(); // TODO - const int blockSize = 128; //128 // number of threads per block + const int blockSize = 64; //128 // number of threads per block // Up-sweep (reduce) phase: build sum in place for (int step = 2; step <= pow2; step *= 2) { @@ -206,4 +206,326 @@ namespace StreamCompaction { return count; } } + + /////////////////////////////////////////////////////////////////////////////// + //Extra Credit + + + // Radix Sort + namespace Radix { + using StreamCompaction::Common::PerformanceTimer; + PerformanceTimer& timer() { + static PerformanceTimer timer; + return timer; + } + + // Kernel to flip the sign bit of each integer (convert to "unsigned" key by XOR with 0x80000000) + __global__ void kernFlipBits(int n, int* data) { + int i = threadIdx.x + blockIdx.x * blockDim.x; // global index + if (i < n) { + data[i] ^= 0x80000000; // Flip MSB to handle signed values + } + } + + // Kernel to map each element's specific bit to a boolean (0 or 1). + __global__ void kernMapToBit(int n, int bit, int* bools, const int* idata) { + int i = threadIdx.x + blockIdx.x * blockDim.x; // global index + if (i < n) { + int mask = 1 << bit; + // If the bit is set, mark 1; otherwise 0 + bools[i] = (idata[i] & mask) ? 1 : 0; + } + } + + // Kernel to scatter elements into output array based on computed indices for radix sort. + __global__ void kernScatterRadix(int n, const int* idata, int* odata, + const int* bools, const int* indices, int totalFalse) { + int i = threadIdx.x + blockIdx.x * blockDim.x; + if (i < n) { + if (bools[i] == 0) { + // Element has 0 in current bit, write to index = i - number of 1s before i + int pos = i - indices[i]; + odata[pos] = idata[i]; + } + else { + // Element has 1 in current bit, write to index = totalFalse + (number of 1s before i) + int pos = totalFalse + indices[i]; + odata[pos] = idata[i]; + } + } + } + + /** + * Performs radix sort on idata, storing the sorted result into odata. + * Handles signed integers by using a bit flip (XOR 0x80000000) so that negative numbers are sorted correctly. + */ + void sort(int n, int* odata, const int* idata) { + if (n <= 0) { + return; + } + // Device memory allocation + int* dev_in = nullptr; // input array + int* dev_out = nullptr; // output array + int* dev_bools = nullptr; // boolean array for current bit + int* dev_indices = nullptr; // scanned indices array + + cudaMalloc(&dev_in, n * sizeof(int)); // allocate device memory for input + cudaMalloc(&dev_out, n * sizeof(int)); // allocate device memory for output + cudaMalloc(&dev_bools, n * sizeof(int)); // allocate device memory for boolean array + + int pow2Length = 1 << ilog2ceil(n); // next power of 2 for scan + cudaMalloc(&dev_indices, pow2Length * sizeof(int)); // allocate device memory for indices with padding + checkCUDAError("cudaMalloc failed for radix sort arrays"); + + // Copy input data to device + cudaMemcpy(dev_in, idata, n * sizeof(int), cudaMemcpyHostToDevice); + checkCUDAError("cudaMemcpy H2D for radix sort input"); + + // Transform all numbers by flipping MSB (to handle signed ints) + const int blockSize = 128; + int fullBlocks = (n + blockSize - 1) / blockSize; // number of blocks needed + kernFlipBits <<>> (n, dev_in); // flip sign bits + checkCUDAError("kernFlipBits kernel"); + + timer().startGpuTimer(); + // Loop over each bit (0 to 31) + for (int bit = 0; bit < 32; ++bit) { + + // Map each element to a boolean (is bit == 1?) + fullBlocks = (n + blockSize - 1) / blockSize; + kernMapToBit <<> > (n, bit, dev_bools, dev_in); // map to booleans + checkCUDAError("kernMapToBit kernel"); + + // Copy boolean array to dev_indices (pad to next power of two length) + cudaMemcpy(dev_indices, dev_bools, n * sizeof(int), cudaMemcpyDeviceToDevice); // copy bools to indices + if (pow2Length > n) { + cudaMemset(dev_indices + n, 0, (pow2Length - n) * sizeof(int)); + } + checkCUDAError("cudaMemcpy + cudaMemset for boolean array"); + + // Inclusive scan (prefix sum) on dev_indices (booleans array) using Blelloch scan (upsweep and downsweep) + // Upsweep phase + for (int stride = 2; stride <= pow2Length; stride *= 2) { + int threads = pow2Length / stride; + int blocks = (threads + blockSize - 1) / blockSize; + StreamCompaction::Efficient::kernUpSweep <<>> (pow2Length, stride, dev_indices); + checkCUDAError("kernUpSweep (radix) kernel"); + } + // Set last element to 0 (prepare for exclusive scan) + cudaMemset(dev_indices + (pow2Length - 1), 0, sizeof(int)); + checkCUDAError("cudaMemset root for radix scan"); + // Downsweep phase + for (int stride = pow2Length; stride >= 2; stride /= 2) { + int threads = pow2Length / stride; + int blocks = (threads + blockSize - 1) / blockSize; + StreamCompaction::Efficient::kernDownSweep << > > (pow2Length, stride, dev_indices); + checkCUDAError("kernDownSweep (radix) kernel"); + } + + // Calculate total number of 0s (false) for this bit to determine scatter offsets + int lastBool, lastIndex; + cudaMemcpy(&lastBool, dev_bools + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&lastIndex, dev_indices + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy D2H for radix scan totals"); + int totalOnes = lastIndex + lastBool; + int totalZeros = n - totalOnes; + + // Scatter: stable partition into dev_out based on bit + fullBlocks = (n + blockSize - 1) / blockSize; + kernScatterRadix <<>> (n, dev_in, dev_out, dev_bools, dev_indices, totalZeros); + checkCUDAError("kernScatterRadix kernel"); + + // Swap dev_in and dev_out for next iteration + int* temp = dev_in; + dev_in = dev_out; + dev_out = temp; + } + timer().endGpuTimer(); + + // After 32 iterations, dev_in now holds the fully sorted values (with MSB flipped). + // Flip bits back to restore original sign bits + fullBlocks = (n + blockSize - 1) / blockSize; + kernFlipBits <<>> (n, dev_in); + checkCUDAError("kernFlipBits kernel (restore)"); + + // Copy sorted data back to host + cudaMemcpy(odata, dev_in, n * sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy D2H for radix sort output"); + + // Free allocated memory + cudaFree(dev_in); + cudaFree(dev_out); + cudaFree(dev_bools); + cudaFree(dev_indices); + } + } + + /////////////////////////////////////////////////////////////////////////////// + namespace Shared { + using StreamCompaction::Common::PerformanceTimer; + PerformanceTimer& timer() { + static PerformanceTimer timer; + return timer; + } + + // Macro for conflict-free indexing offset (to avoid shared memory bank conflicts) + #define LOG_NUM_BANKS 5 // 32 banks + #define CONFLICT_FREE_OFFSET(index) ((index) >> LOG_NUM_BANKS) + + // Kernel to perform scan (exclusive prefix sum) on each block using shared memory (Blelloch algorithm). + // Also computes the sum of each block's elements and stores it in blockSums[blockIdx.x]. + __global__ void kernScanBlock(int n, const int* idata, int* odata, int* blockSums) { + extern __shared__ int temp[]; // shared memory array for scanning (with padding for bank conflicts) + int index = threadIdx.x; + int globalIndex = blockIdx.x * blockDim.x + index; + int blockSize = blockDim.x; + // Load data into shared memory (with conflict-free padding) + if (globalIndex < n) { + temp[index + CONFLICT_FREE_OFFSET(index)] = idata[globalIndex]; + } + else { + temp[index + CONFLICT_FREE_OFFSET(index)] = 0; + } + __syncthreads(); + + int offset = 1; + int paddedLength = blockSize; // we treat each block segment length as blockSize (pad with zeros if needed) + // Up-sweep (reduce) phase + for (offset = 1; offset < paddedLength; offset *= 2) { + int idx = (index + 1) * offset * 2 - 1; + if (idx < paddedLength) { + int ai = idx - offset; + int bi = idx; + // Add value from ai to bi with conflict-free indexing + int offAi = ai + CONFLICT_FREE_OFFSET(ai); + int offBi = bi + CONFLICT_FREE_OFFSET(bi); + temp[offBi] += temp[offAi]; + } + __syncthreads(); + } + + // Save total sum of this block and clear the last element for down-sweep + if (index == 0) { + int lastIdx = paddedLength - 1; + int offLast = lastIdx + CONFLICT_FREE_OFFSET(lastIdx); + blockSums[blockIdx.x] = temp[offLast]; // total sum of block + temp[offLast] = 0; // set root to 0 for exclusive scan + } + __syncthreads(); + + // Down-sweep phase + for (offset = blockSize; offset >= 1; offset /= 2) { + int idx = (index + 1) * offset * 2 - 1; + if (idx < blockSize) { + int ai = idx - offset; + int bi = idx; + int offAi = ai + CONFLICT_FREE_OFFSET(ai); + int offBi = bi + CONFLICT_FREE_OFFSET(bi); + int t = temp[offAi]; + temp[offAi] = temp[offBi]; + temp[offBi] += t; + } + __syncthreads(); + } + + // Write the exclusive scan results for this block to global memory + if (globalIndex < n) { + odata[globalIndex] = temp[index + CONFLICT_FREE_OFFSET(index)]; + } + } + + // Kernel to add block offsets to each element of the scanned blocks. + __global__ void kernAddBlockOffsets(int n, const int* blockOffsets, int* odata) { + int i = threadIdx.x + blockIdx.x * blockDim.x; + if (i < n) { + // Determine which block this index belongs to + int blockId = i / blockDim.x; + if (blockId > 0) { + // Add the sum of all preceding blocks to this element + odata[i] += blockOffsets[blockId]; + } + } + } + + /** + * Performs exclusive prefix-sum (scan) on idata, storing the result into odata. + * Uses a work-efficient approach with shared memory for per-block scans and a second pass to add block sums. + */ + void scan(int n, int* odata, const int* idata) { + if (n <= 0) { + return; + } + // Allocate device memory for input and output + int* dev_in = nullptr; + int* dev_out = nullptr; + int* dev_blockSums = nullptr; + int* dev_blockScan = nullptr; + cudaMalloc(&dev_in, n * sizeof(int)); + cudaMalloc(&dev_out, n * sizeof(int)); + checkCUDAError("cudaMalloc dev_in/dev_out for shared scan"); + // Determine number of blocks needed + const int blockSize = 128; + int numBlocks = (n + blockSize - 1) / blockSize; + cudaMalloc(&dev_blockSums, numBlocks * sizeof(int)); + // Allocate array for scanned block sums (pad to next power of two for scanning) + int pow2Blocks = 1 << ilog2ceil(numBlocks); + cudaMalloc(&dev_blockScan, pow2Blocks * sizeof(int)); + checkCUDAError("cudaMalloc blockSums/blockScan for shared scan"); + + // Copy input to device + cudaMemcpy(dev_in, idata, n * sizeof(int), cudaMemcpyHostToDevice); + checkCUDAError("cudaMemcpy H2D for shared scan input"); + + timer().startGpuTimer(); + // Scan each block's data into dev_out, and write block sums + // Use dynamic shared memory: each block gets (blockSize + blockSize/32) * sizeof(int) bytes + size_t sharedMemSize = (blockSize + (blockSize >> 5)) * sizeof(int); + kernScanBlock <<>> (n, dev_in, dev_out, dev_blockSums); + checkCUDAError("kernScanBlock kernel"); + + // Scan the array of block sums to get the offset for each block + // Copy block sums to padded array for scanning + cudaMemcpy(dev_blockScan, dev_blockSums, numBlocks * sizeof(int), cudaMemcpyDeviceToDevice); + if (pow2Blocks > numBlocks) { + cudaMemset(dev_blockScan + numBlocks, 0, (pow2Blocks - numBlocks) * sizeof(int)); + } + checkCUDAError("cudaMemcpy + cudaMemset for block sums"); + // Upsweep on block sums + for (int stride = 2; stride <= pow2Blocks; stride *= 2) { + int threads = pow2Blocks / stride; + int blocks = (threads + blockSize - 1) / blockSize; + StreamCompaction::Efficient::kernUpSweep <<>> (pow2Blocks, stride, dev_blockScan); + checkCUDAError("kernUpSweep (blockSums) kernel"); + } + // Set last element to 0 for exclusive scan + cudaMemset(dev_blockScan + (pow2Blocks - 1), 0, sizeof(int)); + checkCUDAError("cudaMemset root for block sums scan"); + // Downsweep on block sums + for (int stride = pow2Blocks; stride >= 2; stride /= 2) { + int threads = pow2Blocks / stride; + int blocks = (threads + blockSize - 1) / blockSize; + StreamCompaction::Efficient::kernDownSweep <<>> (pow2Blocks, stride, dev_blockScan); + checkCUDAError("kernDownSweep (blockSums) kernel"); + } + + // Add block offsets to every element in dev_out to get the final scanned output + int fullBlocks = (n + blockSize - 1) / blockSize; + kernAddBlockOffsets <<>> (n, dev_blockScan, dev_out); + checkCUDAError("kernAddBlockOffsets kernel"); + timer().endGpuTimer(); + + // Copy the result back to host + cudaMemcpy(odata, dev_out, n * sizeof(int), cudaMemcpyDeviceToHost); + checkCUDAError("cudaMemcpy D2H for shared scan output"); + + // Free device memory + cudaFree(dev_in); + cudaFree(dev_out); + cudaFree(dev_blockSums); + cudaFree(dev_blockScan); + } + } + + + } diff --git a/stream_compaction/efficient.h b/stream_compaction/efficient.h index 803cb4fe..1178b4ea 100644 --- a/stream_compaction/efficient.h +++ b/stream_compaction/efficient.h @@ -7,7 +7,16 @@ namespace StreamCompaction { StreamCompaction::Common::PerformanceTimer& timer(); void scan(int n, int *odata, const int *idata); - int compact(int n, int *odata, const int *idata); } + // Extra credit + + namespace Radix { + StreamCompaction::Common::PerformanceTimer& timer(); //noexcept + void sort(int n, int* odata, const int* idata); // Stable sort from least significant bit to most significant bit + } + namespace Shared { + StreamCompaction::Common::PerformanceTimer& timer(); //noexcept + void scan(int n, int* odata, const int* idata); // Shared memory scan kernel + } } From 758053a12dbf5e67e805225410e2cf9b54825092 Mon Sep 17 00:00:00 2001 From: JeffersonKoumbaMoussadjiLu Date: Tue, 16 Sep 2025 23:04:16 -0400 Subject: [PATCH 7/8] Add final files --- README.md | 52 +++++++++++++++++----------------- stream_compaction/efficient.cu | 2 +- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 0bbe9882..7c2acdf9 100644 --- a/README.md +++ b/README.md @@ -200,66 +200,66 @@ This is the final output running the test cases with: **************** ** SCAN TESTS ** **************** - [ 0 9 35 11 36 9 26 22 38 31 35 0 31 ... 38 0 ] + [ 24 31 8 5 35 2 12 35 24 2 26 42 21 ... 12 0 ] ==== cpu scan, power-of-two ==== - elapsed time: 23.2384ms (std::chrono Measured) - [ 0 0 9 44 55 91 100 126 148 186 217 252 252 ... 410967026 410967064 ] + elapsed time: 24.4372ms (std::chrono Measured) + [ 0 24 55 63 68 103 105 117 152 176 178 204 246 ... 411033596 411033608 ] ==== cpu scan, non-power-of-two ==== - elapsed time: 23.5367ms (std::chrono Measured) - [ 0 0 9 44 55 91 100 126 148 186 217 252 252 ... 410966993 410966997 ] + elapsed time: 24.253ms (std::chrono Measured) + [ 0 24 55 63 68 103 105 117 152 176 178 204 246 ... 411033547 411033572 ] passed ==== naive scan, power-of-two ==== - elapsed time: 8.78406ms (CUDA Measured) + elapsed time: 8.45494ms (CUDA Measured) passed ==== naive scan, non-power-of-two ==== - elapsed time: 8.94765ms (CUDA Measured) + elapsed time: 8.3873ms (CUDA Measured) passed ==== work-efficient scan, power-of-two ==== - elapsed time: 3.02592ms (CUDA Measured) + elapsed time: 3.18029ms (CUDA Measured) passed ==== work-efficient scan, non-power-of-two ==== - elapsed time: 2.80576ms (CUDA Measured) + elapsed time: 2.86925ms (CUDA Measured) passed ==== thrust scan, power-of-two ==== - elapsed time: 0.876ms (CUDA Measured) + elapsed time: 1.13389ms (CUDA Measured) passed ==== thrust scan, non-power-of-two ==== - elapsed time: 0.843424ms (CUDA Measured) + elapsed time: 0.760352ms (CUDA Measured) passed ***************************** ** STREAM COMPACTION TESTS ** ***************************** - [ 3 2 3 2 1 1 1 3 0 1 3 0 0 ... 1 0 ] + [ 2 3 0 1 3 2 0 1 2 0 0 0 1 ... 2 0 ] ==== cpu compact without scan, power-of-two ==== - elapsed time: 56.6298ms (std::chrono Measured) - [ 3 2 3 2 1 1 1 3 1 3 2 2 3 ... 3 1 ] + elapsed time: 27.7898ms (std::chrono Measured) + [ 2 3 1 3 2 1 2 1 2 3 1 1 1 ... 3 2 ] passed ==== cpu compact without scan, non-power-of-two ==== - elapsed time: 33.3305ms (std::chrono Measured) - [ 3 2 3 2 1 1 1 3 1 3 2 2 3 ... 1 2 ] + elapsed time: 27.2077ms (std::chrono Measured) + [ 2 3 1 3 2 1 2 1 2 3 1 1 1 ... 1 1 ] passed ==== cpu compact with scan ==== - elapsed time: 98.6215ms (std::chrono Measured) - [ 3 2 3 2 1 1 1 3 1 3 2 2 3 ... 3 1 ] + elapsed time: 113.672ms (std::chrono Measured) + [ 2 3 1 3 2 1 2 1 2 3 1 1 1 ... 3 2 ] passed ==== work-efficient compact, power-of-two ==== - elapsed time: 22.1919ms (CUDA Measured) + elapsed time: 15.8828ms (CUDA Measured) passed ==== work-efficient compact, non-power-of-two ==== - elapsed time: 23.1942ms (CUDA Measured) + elapsed time: 15.6678ms (CUDA Measured) passed ***************************** -** EXTRA TESTS ** +** EXTRA CREDIT TESTS ** ***************************** - [ -47 8 49 -44 -17 35 39 45 -18 -17 37 -6 2 ... -17 -4 ] + [ 24 -19 -42 -45 -15 -48 -38 35 24 2 26 42 -29 ... 12 36 ] ==== radix sort ==== - elapsed time: 107.549ms (CUDA Measured) + elapsed time: 92.1836ms (CUDA Measured) passed - [ 7 38 45 2 47 44 1 18 43 35 39 38 23 ... 10 24 ] - elapsed time: 24.5372ms (std::chrono Measured) + [ 27 30 4 0 49 28 24 8 36 4 28 36 9 ... 39 14 ] + elapsed time: 42.7475ms (std::chrono Measured) ==== shared scan ==== - elapsed time: 1.05357ms (CUDA Measured) + elapsed time: 0.852576ms (CUDA Measured) passed ``` diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 5f97fbea..23703d4b 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -67,7 +67,7 @@ namespace StreamCompaction { timer().startGpuTimer(); // TODO - const int blockSize = 64; //128 // number of threads per block + const int blockSize = 128; //128 // number of threads per block // Up-sweep (reduce) phase: build sum in place for (int step = 2; step <= pow2; step *= 2) { From 4778210b7907ef38c30e80aedf94d6e190585e27 Mon Sep 17 00:00:00 2001 From: JeffersonKoumbaMoussadjiLu Date: Tue, 16 Sep 2025 23:08:35 -0400 Subject: [PATCH 8/8] Add little modifications to read.me (where to locate radix sort --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 7c2acdf9..ec61675b 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,15 @@ For an additional challenge, we implemented a parallel radix sort on the GPU usi We repeat the above for all 32 bits of the integer. After the final bit, the array is sorted in ascending order. To handle negative numbers correctly, we adopted a common trick: interpret the 32-bit integers in two’s complement form such that all negative values appear “smaller” than positives. In practice, this can be achieved by offsetting values (e.g., adding $2^{31}$ to each number to make them all non-negative, sorting, then subtracting it back) or by modifying the final pass to ensure the sign bit is handled appropriately. Our implementation ensures that all negative numbers end up at the front of the sorted array (still in ascending order among themselves), followed by all positive numbers. The sorting is stable by construction, which means if two elements have equal value, their original order is preserved (important if this sort were to be extended for more complex keys). The complexity is O(32 * N) = O(N), since we perform a fixed 32 passes of scan/scatter regardless of input size. Each pass is parallel and largely memory-bandwidth bound. While 32 passes is a lot of work, this method can outperform a comparison-based sort for large N because it has better parallel scalability. We compared our GPU radix sort against ```std::sort``` on the CPU to evaluate performance. +To call Radix Sort: +- Look into the file efficient.cu +``` +// Example call (device pointers): +// n = number of elements; d_in, d_out are int* on device memory +StreamCompaction::Efficient::Radix::sort(n, d_out, d_in); +// After return, d_out holds the stable, ascending result.s +``` + ## Performance Analysis