From 5851da6fa8c7c17a9c831de04330c5b97621bd6f Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Tue, 9 Sep 2025 17:05:36 -0400 Subject: [PATCH 01/22] Part 1 CPU implementations --- stream_compaction/cpu.cu | 54 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 719fa115..f71ed67f 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -3,6 +3,8 @@ #include "common.h" +#include + namespace StreamCompaction { namespace CPU { using StreamCompaction::Common::PerformanceTimer; @@ -19,7 +21,12 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + if (n > 0) { + odata[0] = 0; + for (int i = 1; i < n; ++i) { + odata[i] = odata[i - 1] + idata[i - 1]; + } + } timer().endCpuTimer(); } @@ -31,8 +38,15 @@ namespace StreamCompaction { int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + int count = 0; + for (int i = 0; i < n; ++i) { + if (idata[i] != 0) { + odata[count++] = idata[i]; + } + } timer().endCpuTimer(); - return -1; + //return -1; + return count; } /** @@ -41,10 +55,44 @@ namespace StreamCompaction { * @returns the number of elements remaining after compaction. */ int compactWithScan(int n, int *odata, const int *idata) { + if (n == 0) { + return 0; + } + std::vector b(n); + std::vector scanOut(n); + + //int* b = new int[n]; + //int* scanOut = new int[n]; + // TODO should I use something like this instead?: std::vector b(n); + // probably fine either way; I'm swapping to std::vector since that's my preference in my own code writing + timer().startCpuTimer(); // TODO + + // map + for (int i = 0; i < n; ++i) { + b[i] = idata[i] != 0 ? 1 : 0; + } + + // scan + /*scan(n, scanOut.data(), b.data());*/ + scanOut[0] = 0; + for (int i = 1; i < n; ++i) { + scanOut[i] = scanOut[i - 1] + b[i - 1]; + } + + // scatter + for (int i = 0; i < n; ++i) { + if (b[i]) { // or could use (b[i] == 1) but here should be fine + odata[scanOut[i]] = idata[i]; + } + } + + int count = scanOut[n - 1]; timer().endCpuTimer(); - return -1; + //free(b); + //free(scanOut); + return count; } } } From 4a295b8d2d818ae4478e9bfd109b994dd753338b Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Tue, 9 Sep 2025 18:12:41 -0400 Subject: [PATCH 02/22] Part 2 Naive approach for scan --- stream_compaction/cpu.cu | 2 +- stream_compaction/naive.cu | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index f71ed67f..3f26dd39 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -75,7 +75,7 @@ namespace StreamCompaction { } // scan - /*scan(n, scanOut.data(), b.data());*/ + /*scan(n, scanOut.data(), b.data());*/ // <- can't just invoke since conflict with timer, so just copying over scanOut[0] = 0; for (int i = 1; i < n; ++i) { scanOut[i] = scanOut[i - 1] + b[i - 1]; diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 43088769..ede5605c 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -3,6 +3,7 @@ #include "common.h" #include "naive.h" + namespace StreamCompaction { namespace Naive { using StreamCompaction::Common::PerformanceTimer; @@ -13,13 +14,49 @@ namespace StreamCompaction { } // TODO: __global__ + __global__ void kernScanStep(int n, int dExpo, int *odata, const int *idata) { + int k = threadIdx.x + (blockIdx.x * blockDim.x); + if (k < n && k >= dExpo) { + odata[k] = idata[k - dExpo] + idata[k]; + } + else { + 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) { + int blockSize = 128; // TODO optimize + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + int *dev_idata; + int *dev_odata; + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + + cudaMemset(dev_idata, 0, sizeof(int)); + cudaMemcpy(dev_idata + 1, idata, sizeof(int) * (n - 1), cudaMemcpyHostToDevice); // TODO not sure best way to do this, but makes exclusive rather than inclusive + cudaMemset(dev_odata, 0, sizeof(int) * n); + + //this seems to perform worse than CPU but I assume that's expected when doing the naive approach since this obviously is inefficient, and I'm only testing on a small dataset anyway rn so the overhead of this outweighs any parallelism benefit timer().startGpuTimer(); // TODO + int dTarget = ilog2ceil(n); + int dExpo = 1; // = 2^(d-1) + for (int d = 1; d <= dTarget; ++d) { + kernScanStep<<>>(n,dExpo,dev_odata,dev_idata); + + if (d < dTarget) { + dExpo *= 2; + std::swap(dev_idata, dev_odata); + } + } timer().endGpuTimer(); + + cudaMemcpy(odata, dev_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaFree(dev_idata); + cudaFree(dev_odata); } } } From 8830565fb25116b1fdc98a2db3abec9d345c858f Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Wed, 10 Sep 2025 16:56:36 -0400 Subject: [PATCH 03/22] WIP work-efficient implementation --- src/main.cpp | 5 ++- stream_compaction/efficient.cu | 70 ++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3d5c8820..27d22174 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 8; // feel free to change the size of array +const int SIZE = 1 << 8; // feel free to change the size of array (<-- default 1 << 8) const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -71,9 +71,10 @@ int main(int argc, char* argv[]) { printDesc("work-efficient scan, power-of-two"); StreamCompaction::Efficient::scan(SIZE, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); + printArray(SIZE, c, true); printCmpResult(SIZE, b, c); + zeroArray(SIZE, c); printDesc("work-efficient scan, non-power-of-two"); StreamCompaction::Efficient::scan(NPOT, c, a); diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 2db346ee..22dcbaa3 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -12,13 +12,83 @@ namespace StreamCompaction { return timer; } + + __global__ void kernUpSweep(int n, int dExpo, int* data/*, const int* idata*/) { + // TODO I assume should invoke these with only the number of blocks actually used rather than with all the blocks when most don't do any, but will do following structure more literally first? + int d2 = dExpo * 2; + int k = threadIdx.x + (blockIdx.x * blockDim.x) * d2; + if (k >= n) { + return; + } + //if (k < n) { + //odata[k + d2 - 1] = idata[k + dExpo - 1] + idata[k + d2 - 1]; + // does this need a separate idata odata? I think no others operate on it this step + data[k + d2 - 1] += data[k + dExpo - 1]; + //} + } + __global__ void kernDownSweep(int n, int dExpo, int* data) { + int d2 = dExpo * 2; + int k = threadIdx.x + (blockIdx.x * blockDim.x) * d2; + if (k >= n) { + return; + } + int t = data[k + dExpo - 1]; + data[k + dExpo - 1] = data[k + d2 - 1]; + data[k + d2 - 1] += t; + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + // TODO not finished yet, doesn't work yet + int blockSize = 128; // TODO optimize + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + int* dev_idata; + int* dev_odata; + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + //cudaMalloc((void**)&dev_odata, n * sizeof(int)); + + cudaMemcpy(dev_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + //cudaMemset(dev_odata, 0, sizeof(int) * n); + + //cudaMemset(dev_idata, 0, sizeof(int)); + //cudaMemcpy(dev_idata + 1, idata, sizeof(int) * (n - 1), cudaMemcpyHostToDevice); + + // TODO make sure to deal with size not 2^x + timer().startGpuTimer(); + // TODO + int dTarget = ilog2ceil(n); // TODO should these be out of timer? + // up-sweep + int dExpo = 1; // = 2^(d) + for (int d = 0; d < dTarget; ++d) { + kernUpSweep<<>> (n, dExpo, dev_idata); + + if (d < dTarget) { + //fullBlocksPerGrid.x = (fullBlocksPerGrid.x - 1) / 2 + 1; // TODO reduce # of blocks accordingly + fullBlocksPerGrid = dim3((n / dExpo + blockSize - 1) / blockSize); + dExpo *= 2; + //std::swap(dev_idata, dev_odata); + } + } + + // down-sweep + cudaMemset(dev_idata + (n - 1), 0, sizeof(int) * n); // TODO make sure that's right + fullBlocksPerGrid = dim3((n + blockSize - 1) / blockSize); + // TODO make sure dExpo right + for (int d = dTarget - 1; d >= 0; --d) { + kernDownSweep<<>>(n, dExpo, dev_idata); + // TODO make fullBlocksPerGrid right; + dExpo /= 2; + } + + timer().endGpuTimer(); + cudaMemcpy(odata, dev_idata, sizeof(int) * n, cudaMemcpyDeviceToHost); + cudaFree(dev_idata); + //cudaFree(dev_odata); } /** From d0cc1f2b9681976194051aee4f008e8c530052f1 Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Thu, 11 Sep 2025 15:02:41 -0400 Subject: [PATCH 04/22] 3.1 Scan implementation --- src/main.cpp | 2 +- stream_compaction/efficient.cu | 43 ++++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 27d22174..b133c6f4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -79,7 +79,7 @@ int main(int argc, char* argv[]) { printDesc("work-efficient scan, non-power-of-two"); StreamCompaction::Efficient::scan(NPOT, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(NPOT, c, true); + printArray(NPOT, c, true); printCmpResult(NPOT, b, c); zeroArray(SIZE, c); diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 22dcbaa3..7b8739a7 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -15,10 +15,11 @@ namespace StreamCompaction { __global__ void kernUpSweep(int n, int dExpo, int* data/*, const int* idata*/) { // TODO I assume should invoke these with only the number of blocks actually used rather than with all the blocks when most don't do any, but will do following structure more literally first? - int d2 = dExpo * 2; - int k = threadIdx.x + (blockIdx.x * blockDim.x) * d2; + // TODO probably worth trying out shared memory way--I guess would move loop into here w/ syncs then change external loop to just when needing to cross boundaries + int d2 = dExpo << 1; + int k = (threadIdx.x + (blockIdx.x * blockDim.x)) * d2; if (k >= n) { - return; + return; // sounds like this way is generally better (more explicit that thread can stop) } //if (k < n) { //odata[k + d2 - 1] = idata[k + dExpo - 1] + idata[k + d2 - 1]; @@ -27,8 +28,8 @@ namespace StreamCompaction { //} } __global__ void kernDownSweep(int n, int dExpo, int* data) { - int d2 = dExpo * 2; - int k = threadIdx.x + (blockIdx.x * blockDim.x) * d2; + int d2 = dExpo << 1; + int k = (threadIdx.x + (blockIdx.x * blockDim.x)) * d2; if (k >= n) { return; } @@ -43,14 +44,20 @@ namespace StreamCompaction { void scan(int n, int *odata, const int *idata) { // TODO not finished yet, doesn't work yet int blockSize = 128; // TODO optimize - dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + int pow2Size = 1 << ilog2ceil(n); + dim3 fullBlocksPerGrid((pow2Size + blockSize - 1) / blockSize); int* dev_idata; int* dev_odata; - cudaMalloc((void**)&dev_idata, n * sizeof(int)); + + // TODO note this pads to the whole next power of 2, was mentioned but can't recall if they said a way about that? + // TODO I think want to rewrite into using shared memory way but that's extra credit so I think don't need to + + + cudaMalloc((void**)&dev_idata, pow2Size * sizeof(int)); //cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMemset(dev_idata + n, 0, sizeof(int) * (pow2Size - n)); cudaMemcpy(dev_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); - //cudaMemset(dev_odata, 0, sizeof(int) * n); //cudaMemset(dev_idata, 0, sizeof(int)); //cudaMemcpy(dev_idata + 1, idata, sizeof(int) * (n - 1), cudaMemcpyHostToDevice); @@ -64,24 +71,26 @@ namespace StreamCompaction { // up-sweep int dExpo = 1; // = 2^(d) for (int d = 0; d < dTarget; ++d) { - kernUpSweep<<>> (n, dExpo, dev_idata); + kernUpSweep<<>> (pow2Size, dExpo, dev_idata); - if (d < dTarget) { - //fullBlocksPerGrid.x = (fullBlocksPerGrid.x - 1) / 2 + 1; // TODO reduce # of blocks accordingly - fullBlocksPerGrid = dim3((n / dExpo + blockSize - 1) / blockSize); - dExpo *= 2; + if (d < dTarget - 1) { + fullBlocksPerGrid.x = (fullBlocksPerGrid.x - 1) / 2 + 1; // TODO reduce # of blocks accordingly + //fullBlocksPerGrid.x >>= 1; + //fullBlocksPerGrid = dim3((n / dExpo + blockSize - 1) / blockSize); + dExpo <<= 1; //std::swap(dev_idata, dev_odata); } } // down-sweep - cudaMemset(dev_idata + (n - 1), 0, sizeof(int) * n); // TODO make sure that's right - fullBlocksPerGrid = dim3((n + blockSize - 1) / blockSize); + cudaMemset(dev_idata + (pow2Size - 1), 0, sizeof(int)); // TODO make sure that's right + //fullBlocksPerGrid = dim3((pow2Size + blockSize - 1) / blockSize); // TODO make sure dExpo right for (int d = dTarget - 1; d >= 0; --d) { - kernDownSweep<<>>(n, dExpo, dev_idata); + kernDownSweep<<>>(pow2Size, dExpo, dev_idata); // TODO make fullBlocksPerGrid right; - dExpo /= 2; + fullBlocksPerGrid.x = (dExpo + blockSize - 1) / blockSize; // TODO make sure set properly but works on super basic case + dExpo >>= 1; } From 3061d5faa0c1648a83b80e2170ce4d27f12e5540 Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Thu, 11 Sep 2025 15:55:51 -0400 Subject: [PATCH 05/22] Fix to integer overflow issues for large array sizes --- src/main.cpp | 2 +- stream_compaction/efficient.cu | 37 ++++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b133c6f4..e530fcc6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 8; // feel free to change the size of array (<-- default 1 << 8) +const int SIZE = 1 << 24; // feel free to change the size of array (<-- default 1 << 8) 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 7b8739a7..cf88eda3 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -17,10 +17,14 @@ namespace StreamCompaction { // TODO I assume should invoke these with only the number of blocks actually used rather than with all the blocks when most don't do any, but will do following structure more literally first? // TODO probably worth trying out shared memory way--I guess would move loop into here w/ syncs then change external loop to just when needing to cross boundaries int d2 = dExpo << 1; - int k = (threadIdx.x + (blockIdx.x * blockDim.x)) * d2; - if (k >= n) { - return; // sounds like this way is generally better (more explicit that thread can stop) + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) { + return; // TODO pass in that cap? } + int k = (index) * d2; + //if (k >= n) { + //return; // sounds like this way is generally better (more explicit that thread can stop) + //} //if (k < n) { //odata[k + d2 - 1] = idata[k + dExpo - 1] + idata[k + d2 - 1]; // does this need a separate idata odata? I think no others operate on it this step @@ -29,10 +33,14 @@ namespace StreamCompaction { } __global__ void kernDownSweep(int n, int dExpo, int* data) { int d2 = dExpo << 1; - int k = (threadIdx.x + (blockIdx.x * blockDim.x)) * d2; - if (k >= n) { - return; + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) { + return; // TODO pass in that cap? } + int k = (index)*d2; + //if (k >= n) { + //return; + //} int t = data[k + dExpo - 1]; data[k + dExpo - 1] = data[k + d2 - 1]; data[k + d2 - 1] += t; @@ -45,7 +53,8 @@ namespace StreamCompaction { // TODO not finished yet, doesn't work yet int blockSize = 128; // TODO optimize int pow2Size = 1 << ilog2ceil(n); - dim3 fullBlocksPerGrid((pow2Size + blockSize - 1) / blockSize); + dim3 fullBlocksPerGrid((pow2Size >> 1 + blockSize - 1) / blockSize); + // TODO I'm still not sure if getting fullBlocksPerGrid right 100%, might be overshooting int* dev_idata; int* dev_odata; @@ -70,14 +79,18 @@ namespace StreamCompaction { int dTarget = ilog2ceil(n); // TODO should these be out of timer? // up-sweep int dExpo = 1; // = 2^(d) + int nCap = pow2Size >> 1; for (int d = 0; d < dTarget; ++d) { - kernUpSweep<<>> (pow2Size, dExpo, dev_idata); + + kernUpSweep<<>> (nCap, dExpo, dev_idata); if (d < dTarget - 1) { - fullBlocksPerGrid.x = (fullBlocksPerGrid.x - 1) / 2 + 1; // TODO reduce # of blocks accordingly //fullBlocksPerGrid.x >>= 1; //fullBlocksPerGrid = dim3((n / dExpo + blockSize - 1) / blockSize); + //fullBlocksPerGrid.x = (fullBlocksPerGrid.x - 1) / 2 + 1; // TODO reduce # of blocks accordingly dExpo <<= 1; + nCap >>= 1; + fullBlocksPerGrid.x = ((nCap + blockSize - 1) / blockSize); // Not sure this is totally the best way to set this but does massively reduce runtime (e.g. ~6ms to ~2ms) //std::swap(dev_idata, dev_odata); } } @@ -87,10 +100,12 @@ namespace StreamCompaction { //fullBlocksPerGrid = dim3((pow2Size + blockSize - 1) / blockSize); // TODO make sure dExpo right for (int d = dTarget - 1; d >= 0; --d) { - kernDownSweep<<>>(pow2Size, dExpo, dev_idata); + kernDownSweep<<>>(nCap, dExpo, dev_idata); // TODO make fullBlocksPerGrid right; - fullBlocksPerGrid.x = (dExpo + blockSize - 1) / blockSize; // TODO make sure set properly but works on super basic case + //fullBlocksPerGrid.x = (dExpo + blockSize - 1) / blockSize; // TODO make sure set properly but works on super basic case dExpo >>= 1; + nCap <<= 1; + fullBlocksPerGrid.x = ((nCap + blockSize - 1) / blockSize); } From 4a5a8a8c11f251533201cefb8d44ba518926e9f7 Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Thu, 11 Sep 2025 16:57:27 -0400 Subject: [PATCH 06/22] Fixed typo and edge cases --- src/main.cpp | 8 +++++--- stream_compaction/cpu.cu | 5 ++++- stream_compaction/efficient.cu | 13 ++++++++----- stream_compaction/naive.cu | 7 +++++-- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e530fcc6..d4b30dcc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 24; // feel free to change the size of array (<-- default 1 << 8) +const int SIZE = 1 << 25; // feel free to change the size of array (<-- default 1 << 8) const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -29,6 +29,7 @@ int main(int argc, char* argv[]) { genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; + //genArray(SIZE, a, 50); printArray(SIZE, a, true); // initialize b using StreamCompaction::CPU::scan you implement @@ -103,8 +104,9 @@ int main(int argc, char* argv[]) { // Compaction tests - genArray(SIZE - 1, a, 4); // Leave a 0 at the end to test that edge case - a[SIZE - 1] = 0; + genArray(SIZE, a, 4); + //genArray(SIZE - 1, a, 4); // Leave a 0 at the end to test that edge case + //a[SIZE - 1] = 0; printArray(SIZE, a, true); int count, expectedCount, expectedNPOT; diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 3f26dd39..3d957bf3 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -88,7 +88,10 @@ namespace StreamCompaction { } } - int count = scanOut[n - 1]; + int count = scanOut[n - 1] + b[n-1]; + /*if (b[n - 1]) { + ++count; + }*/ timer().endCpuTimer(); //free(b); //free(scanOut); diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index cf88eda3..ad7ae94a 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -53,7 +53,8 @@ namespace StreamCompaction { // TODO not finished yet, doesn't work yet int blockSize = 128; // TODO optimize int pow2Size = 1 << ilog2ceil(n); - dim3 fullBlocksPerGrid((pow2Size >> 1 + blockSize - 1) / blockSize); + int nCap = pow2Size >> 1; + dim3 fullBlocksPerGrid((nCap + blockSize - 1) / blockSize); // TODO I'm still not sure if getting fullBlocksPerGrid right 100%, might be overshooting int* dev_idata; int* dev_odata; @@ -79,7 +80,7 @@ namespace StreamCompaction { int dTarget = ilog2ceil(n); // TODO should these be out of timer? // up-sweep int dExpo = 1; // = 2^(d) - int nCap = pow2Size >> 1; + for (int d = 0; d < dTarget; ++d) { kernUpSweep<<>> (nCap, dExpo, dev_idata); @@ -103,9 +104,11 @@ namespace StreamCompaction { kernDownSweep<<>>(nCap, dExpo, dev_idata); // TODO make fullBlocksPerGrid right; //fullBlocksPerGrid.x = (dExpo + blockSize - 1) / blockSize; // TODO make sure set properly but works on super basic case - dExpo >>= 1; - nCap <<= 1; - fullBlocksPerGrid.x = ((nCap + blockSize - 1) / blockSize); + if (d > 0) { + dExpo >>= 1; + nCap <<= 1; + fullBlocksPerGrid.x = ((nCap + blockSize - 1) / blockSize); + } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index ede5605c..2c4a445a 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -16,7 +16,10 @@ namespace StreamCompaction { __global__ void kernScanStep(int n, int dExpo, int *odata, const int *idata) { int k = threadIdx.x + (blockIdx.x * blockDim.x); - if (k < n && k >= dExpo) { + if (k >= n) { + return; + } + if (k >= dExpo) { odata[k] = idata[k - dExpo] + idata[k]; } else { @@ -37,7 +40,7 @@ namespace StreamCompaction { cudaMemset(dev_idata, 0, sizeof(int)); cudaMemcpy(dev_idata + 1, idata, sizeof(int) * (n - 1), cudaMemcpyHostToDevice); // TODO not sure best way to do this, but makes exclusive rather than inclusive - cudaMemset(dev_odata, 0, sizeof(int) * n); + cudaMemset(dev_odata, 0, sizeof(int) * n); // <- I think unnecessary? //this seems to perform worse than CPU but I assume that's expected when doing the naive approach since this obviously is inefficient, and I'm only testing on a small dataset anyway rn so the overhead of this outweighs any parallelism benefit timer().startGpuTimer(); From eb3015f417dd956c4b1e14bcaefd272d9a1267c9 Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Thu, 11 Sep 2025 17:33:10 -0400 Subject: [PATCH 07/22] 3.2 GPU compaction implementation --- src/main.cpp | 6 +- stream_compaction/common.cu | 13 ++++ stream_compaction/efficient.cu | 106 +++++++++++++++++++++++++++++---- 3 files changed, 110 insertions(+), 15 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index d4b30dcc..1e0b1be5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 25; // feel free to change the size of array (<-- default 1 << 8) +const int SIZE = 1 << 24; // feel free to change the size of array (<-- default 1 << 8) const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -140,14 +140,14 @@ int main(int argc, char* argv[]) { printDesc("work-efficient compact, power-of-two"); count = StreamCompaction::Efficient::compact(SIZE, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(count, c, true); + printArray(count, c, true); printCmpLenResult(count, expectedCount, b, c); zeroArray(SIZE, c); printDesc("work-efficient compact, non-power-of-two"); count = StreamCompaction::Efficient::compact(NPOT, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(count, c, true); + printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); system("pause"); // stop Win32 console from closing on exit diff --git a/stream_compaction/common.cu b/stream_compaction/common.cu index 2ed6d630..c39cca3b 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 index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) { + return; + } + bools[index] = (idata[index] != 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 index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) { + return; + } + if (!bools[index]) { + return; + } + odata[indices[index]] = idata[index]; } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index ad7ae94a..fa10509c 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -16,14 +16,14 @@ namespace StreamCompaction { __global__ void kernUpSweep(int n, int dExpo, int* data/*, const int* idata*/) { // TODO I assume should invoke these with only the number of blocks actually used rather than with all the blocks when most don't do any, but will do following structure more literally first? // TODO probably worth trying out shared memory way--I guess would move loop into here w/ syncs then change external loop to just when needing to cross boundaries - int d2 = dExpo << 1; int index = threadIdx.x + (blockIdx.x * blockDim.x); if (index >= n) { - return; // TODO pass in that cap? + return; // sounds like this way is generally better (more explicit that thread can stop) } + int d2 = dExpo << 1; int k = (index) * d2; //if (k >= n) { - //return; // sounds like this way is generally better (more explicit that thread can stop) + //return; //} //if (k < n) { //odata[k + d2 - 1] = idata[k + dExpo - 1] + idata[k + d2 - 1]; @@ -32,15 +32,13 @@ namespace StreamCompaction { //} } __global__ void kernDownSweep(int n, int dExpo, int* data) { - int d2 = dExpo << 1; int index = threadIdx.x + (blockIdx.x * blockDim.x); if (index >= n) { - return; // TODO pass in that cap? + return; } + int d2 = dExpo << 1; int k = (index)*d2; - //if (k >= n) { - //return; - //} + int t = data[k + dExpo - 1]; data[k + dExpo - 1] = data[k + d2 - 1]; data[k + d2 - 1] += t; @@ -52,7 +50,8 @@ namespace StreamCompaction { void scan(int n, int *odata, const int *idata) { // TODO not finished yet, doesn't work yet int blockSize = 128; // TODO optimize - int pow2Size = 1 << ilog2ceil(n); + int dTarget = ilog2ceil(n); + int pow2Size = 1 << dTarget; int nCap = pow2Size >> 1; dim3 fullBlocksPerGrid((nCap + blockSize - 1) / blockSize); // TODO I'm still not sure if getting fullBlocksPerGrid right 100%, might be overshooting @@ -61,7 +60,8 @@ namespace StreamCompaction { // TODO note this pads to the whole next power of 2, was mentioned but can't recall if they said a way about that? // TODO I think want to rewrite into using shared memory way but that's extra credit so I think don't need to - + // moving on for now but plan to revisit and do that + // also not sure if I've already done what part 5 is referring to? since I don't do modulo and such and decrease # of threads cudaMalloc((void**)&dev_idata, pow2Size * sizeof(int)); //cudaMalloc((void**)&dev_odata, n * sizeof(int)); @@ -77,7 +77,7 @@ namespace StreamCompaction { timer().startGpuTimer(); // TODO - int dTarget = ilog2ceil(n); // TODO should these be out of timer? + // up-sweep int dExpo = 1; // = 2^(d) @@ -128,10 +128,92 @@ namespace StreamCompaction { * @returns The number of elements remaining after compaction. */ int compact(int n, int *odata, const int *idata) { + + + int blockSize = 128; // TODO optimize + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + int* dev_idata; + int* dev_odata; + int* dev_boolArray; + int* dev_indices; + //int* dev_ + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + + int dTarget = ilog2ceil(n); + int pow2Size = 1 << dTarget; + int nCap = pow2Size >> 1; + dim3 fullBlocksPerGridScan((nCap + blockSize - 1) / blockSize); + + cudaMalloc((void**)&dev_boolArray, pow2Size * sizeof(int)); + cudaMalloc((void**)&dev_indices, pow2Size * sizeof(int)); + + //cudaMemset(dev_idata, 0, sizeof(int)); + cudaMemcpy(dev_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + cudaMemset(dev_odata, 0, sizeof(int) * n); + cudaMemset(dev_boolArray + n, 0, sizeof(int) * (pow2Size - n)); + + + + + timer().startGpuTimer(); // TODO + + // map + Common::kernMapToBoolean<<>>(n, dev_boolArray, dev_idata); + + // scan + cudaMemcpy(dev_indices, dev_boolArray, n * sizeof(int), cudaMemcpyDeviceToDevice); + // up-sweep + int dExpo = 1; // = 2^(d) + + for (int d = 0; d < dTarget; ++d) { + + kernUpSweep << > > (nCap, dExpo, dev_indices); + + if (d < dTarget - 1) { + dExpo <<= 1; + nCap >>= 1; + fullBlocksPerGridScan.x = ((nCap + blockSize - 1) / blockSize); // Not sure this is totally the best way to set this but does massively reduce runtime (e.g. ~6ms to ~2ms) + } + } + + // down-sweep + cudaMemset(dev_indices + (pow2Size - 1), 0, sizeof(int)); + for (int d = dTarget - 1; d >= 0; --d) { + kernDownSweep << > > (nCap, dExpo, dev_indices); + if (d > 0) { + dExpo >>= 1; + nCap <<= 1; + fullBlocksPerGridScan.x = ((nCap + blockSize - 1) / blockSize); + } + } + + + + + // scatter + Common::kernScatter<<>>(n, dev_odata, dev_idata, dev_boolArray, dev_indices); + + + + timer().endGpuTimer(); - return -1; + cudaMemcpy(odata, dev_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); + int count; + int countStep; + cudaMemcpy(&count, dev_indices + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&countStep, dev_boolArray + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + + cudaFree(dev_idata); + cudaFree(dev_odata); + cudaFree(dev_boolArray); + cudaFree(dev_indices); + + + //return 10; + return count + countStep; } } } From 2a8898370cf7748f4806e865a2a8138a7c5cd1dd Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Thu, 11 Sep 2025 18:12:40 -0400 Subject: [PATCH 08/22] Part 4 Thrust usage --- README.md | 4 ++++ stream_compaction/CMakeLists.txt | 3 ++- stream_compaction/thrust.cu | 10 ++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e38ddb1..e2586af8 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,7 @@ CUDA Stream Compaction Include analysis, etc. (Remember, this is public, so don't put anything here that you don't want to share with the world.) +## Setup Notes: + +I modified stream_compaction/CMakeLists.txt as [described here](https://edstem.org/us/courses/81464/discussion/6937028?answer=16157632); adding `find_package(CCCL REQUIRED)` and `target_link_libraries(stream_compaction CCCL::Thrust)` to fix the thrust library not properly being included. + diff --git a/stream_compaction/CMakeLists.txt b/stream_compaction/CMakeLists.txt index 19511caa..1646ccb3 100644 --- a/stream_compaction/CMakeLists.txt +++ b/stream_compaction/CMakeLists.txt @@ -19,8 +19,9 @@ list(SORT sources) source_group(Headers FILES ${headers}) source_group(Sources FILES ${sources}) - +find_package(CCCL REQUIRED) add_library(stream_compaction ${sources} ${headers}) +target_link_libraries(stream_compaction CCCL::Thrust) if(CMAKE_VERSION VERSION_LESS "3.23.0") set_target_properties(stream_compaction} PROPERTIES CUDA_ARCHITECTURES OFF) elseif(CMAKE_VERSION VERSION_LESS "3.24.0") diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 1def45e7..a7eb1211 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -18,11 +18,21 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + thrust::host_vector hv_in(idata, idata + n); + thrust::device_vector dv_in = hv_in; + thrust::device_vector dv_out(n); + 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()); + + + // TODO: this gives same result but performs way worse than bespoke kernels; dunno if that's how it's expected to be + thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); timer().endGpuTimer(); + + thrust::copy(dv_out.begin(), dv_out.end(), odata); } } } From 9930c562e9bce1860a0585bbb7b56f7b089ed06f Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Fri, 12 Sep 2025 17:42:20 -0400 Subject: [PATCH 09/22] Setting block sizes; experimenting with a potential performance improvement --- README.md | 64 ++++++++++++++++++++++++++++++++++ src/main.cpp | 23 +++++++----- stream_compaction/common.h | 2 ++ stream_compaction/efficient.cu | 58 +++++++++++++++++++++++------- stream_compaction/naive.cu | 6 ++-- stream_compaction/thrust.cu | 3 +- 6 files changed, 132 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index e2586af8..c5241ba7 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,67 @@ anything here that you don't want to share with the world.) I modified stream_compaction/CMakeLists.txt as [described here](https://edstem.org/us/courses/81464/discussion/6937028?answer=16157632); adding `find_package(CCCL REQUIRED)` and `target_link_libraries(stream_compaction CCCL::Thrust)` to fix the thrust library not properly being included. + +## Questions + +# TODO plot, analysis of phenomena +# TODO Nsight analsis + +## Program Output: +With array size 2^24: +``` +Array Size 2^24 + +**************** +** SCAN TESTS ** +**************** + [ 33 14 48 6 37 31 38 47 49 45 1 8 38 ... 36 0 ] +==== cpu scan, power-of-two ==== + elapsed time: 26.9298ms (std::chrono Measured) + [ 0 33 47 95 101 138 169 207 254 303 348 349 357 ... 410991594 410991630 ] +==== cpu scan, non-power-of-two ==== + elapsed time: 26.3172ms (std::chrono Measured) + [ 0 33 47 95 101 138 169 207 254 303 348 349 357 ... 410991573 410991580 ] + passed +==== naive scan, power-of-two ==== + elapsed time: 4.8169ms (CUDA Measured) + passed +==== naive scan, non-power-of-two ==== + elapsed time: 4.69709ms (CUDA Measured) + passed +==== work-efficient scan, power-of-two ==== + elapsed time: 2.28694ms (CUDA Measured) + passed +==== work-efficient scan, non-power-of-two ==== + elapsed time: 2.09229ms (CUDA Measured) + passed +==== thrust scan, power-of-two ==== + elapsed time: 0.608256ms (CUDA Measured) + passed +==== thrust scan, non-power-of-two ==== + elapsed time: 0.741376ms (CUDA Measured) + passed + +***************************** +** STREAM COMPACTION TESTS ** +***************************** + [ 1 2 0 2 3 0 2 2 2 1 1 2 3 ... 3 0 ] +==== cpu compact without scan, power-of-two ==== + elapsed time: 31.3233ms (std::chrono Measured) + [ 1 2 2 3 2 2 2 1 1 2 3 1 1 ... 1 3 ] + passed +==== cpu compact without scan, non-power-of-two ==== + elapsed time: 32.9821ms (std::chrono Measured) + [ 1 2 2 3 2 2 2 1 1 2 3 1 1 ... 1 2 ] + passed +==== cpu compact with scan ==== + elapsed time: 65.5021ms (std::chrono Measured) + passed +==== work-efficient compact, power-of-two ==== + elapsed time: 2.65523ms (CUDA Measured) + passed +==== work-efficient compact, non-power-of-two ==== + elapsed time: 2.58253ms (CUDA Measured) + passed +Press any key to continue . . . +``` \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 1e0b1be5..e5d9c1a7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,20 +13,25 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 24; // feel free to change the size of array (<-- default 1 << 8) +const int SIZE_POW = 24; +const int SIZE = 1 << SIZE_POW; // feel free to change the size of array (<-- default 1 << 8) const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; int *c = new int[SIZE]; +#define SKIP_CPU 0 + int main(int argc, char* argv[]) { // Scan tests + printf("Array Size 2^%d\n", SIZE_POW); printf("\n"); printf("****************\n"); printf("** SCAN TESTS **\n"); printf("****************\n"); + genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; //genArray(SIZE, a, 50); @@ -36,6 +41,7 @@ int main(int argc, char* argv[]) { // We use b for further comparison. Make sure your StreamCompaction::CPU::scan is correct. // At first all cases passed because b && c are all zeroes. zeroArray(SIZE, b); +#if !SKIP_CPU printDesc("cpu scan, power-of-two"); StreamCompaction::CPU::scan(SIZE, b, a); printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); @@ -54,7 +60,7 @@ int main(int argc, char* argv[]) { printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); //printArray(SIZE, c, true); printCmpResult(SIZE, b, c); - +#endif /* For bug-finding only: Array of 1s to help find bugs in stream compaction or scan onesArray(SIZE, c); printDesc("1s array for finding bugs"); @@ -72,7 +78,7 @@ int main(int argc, char* argv[]) { printDesc("work-efficient scan, power-of-two"); StreamCompaction::Efficient::scan(SIZE, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - printArray(SIZE, c, true); + //printArray(SIZE, c, true); printCmpResult(SIZE, b, c); @@ -80,7 +86,7 @@ int main(int argc, char* argv[]) { printDesc("work-efficient scan, non-power-of-two"); StreamCompaction::Efficient::scan(NPOT, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - printArray(NPOT, c, true); + //printArray(NPOT, c, true); printCmpResult(NPOT, b, c); zeroArray(SIZE, c); @@ -114,6 +120,7 @@ int main(int argc, char* argv[]) { // initialize b using StreamCompaction::CPU::compactWithoutScan you implement // We use b for further comparison. Make sure your StreamCompaction::CPU::compactWithoutScan is correct. zeroArray(SIZE, b); +#if !SKIP_CPU printDesc("cpu compact without scan, power-of-two"); count = StreamCompaction::CPU::compactWithoutScan(SIZE, b, a); printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); @@ -133,21 +140,21 @@ int main(int argc, char* argv[]) { printDesc("cpu compact with scan"); count = StreamCompaction::CPU::compactWithScan(SIZE, c, a); printElapsedTime(StreamCompaction::CPU::timer().getCpuElapsedTimeForPreviousOperation(), "(std::chrono Measured)"); - printArray(count, c, true); + //printArray(count, c, true); printCmpLenResult(count, expectedCount, b, c); - +#endif zeroArray(SIZE, c); printDesc("work-efficient compact, power-of-two"); count = StreamCompaction::Efficient::compact(SIZE, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - printArray(count, c, true); + //printArray(count, c, true); printCmpLenResult(count, expectedCount, b, c); zeroArray(SIZE, c); printDesc("work-efficient compact, non-power-of-two"); count = StreamCompaction::Efficient::compact(NPOT, c, a); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - printArray(count, c, true); + //printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); system("pause"); // stop Win32 console from closing on exit diff --git a/stream_compaction/common.h b/stream_compaction/common.h index d2c1fed9..29cddac0 100644 --- a/stream_compaction/common.h +++ b/stream_compaction/common.h @@ -13,6 +13,8 @@ #define FILENAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #define checkCUDAError(msg) checkCUDAErrorFn(msg, FILENAME, __LINE__) +//const int testBlockSize = 64; + /** * Check for CUDA errors; print and exit if there was a problem. */ diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index fa10509c..4050f0f5 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -3,6 +3,10 @@ #include "common.h" #include "efficient.h" + +#define DYNAMIC_BLOCK_SIZE 0 +// tried out an approach which in addition to reducing the # of blocks when the number of threads needed is small would reduce the size of the one remaining block when the amount of threads is less than that needs, but doesn't seem like it particularly benefits. Leaving in as an option but not using + namespace StreamCompaction { namespace Efficient { using StreamCompaction::Common::PerformanceTimer; @@ -49,7 +53,7 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { // TODO not finished yet, doesn't work yet - int blockSize = 128; // TODO optimize + int blockSize = 32; // Seems to perform best here for 32 or 64 but the change is generally pretty minor int dTarget = ilog2ceil(n); int pow2Size = 1 << dTarget; int nCap = pow2Size >> 1; @@ -73,6 +77,9 @@ namespace StreamCompaction { //cudaMemcpy(dev_idata + 1, idata, sizeof(int) * (n - 1), cudaMemcpyHostToDevice); // TODO make sure to deal with size not 2^x +#if DYNAMIC_BLOCK_SIZE + int blockSize2 = blockSize; +#endif timer().startGpuTimer(); @@ -82,9 +89,11 @@ namespace StreamCompaction { int dExpo = 1; // = 2^(d) for (int d = 0; d < dTarget; ++d) { - - kernUpSweep<<>> (nCap, dExpo, dev_idata); - +#if DYNAMIC_BLOCK_SIZE + kernUpSweep<<>> (nCap, dExpo, dev_idata); +#else + kernUpSweep<<>> (nCap, dExpo, dev_idata); +#endif if (d < dTarget - 1) { //fullBlocksPerGrid.x >>= 1; //fullBlocksPerGrid = dim3((n / dExpo + blockSize - 1) / blockSize); @@ -93,15 +102,36 @@ namespace StreamCompaction { nCap >>= 1; fullBlocksPerGrid.x = ((nCap + blockSize - 1) / blockSize); // Not sure this is totally the best way to set this but does massively reduce runtime (e.g. ~6ms to ~2ms) //std::swap(dev_idata, dev_odata); + +#if DYNAMIC_BLOCK_SIZE + // could reduce blockSize when gets really low but not sure worth the effort + // doesn't seem to really matter, so just turning off but making an option anyway + if (nCap < blockSize) { + blockSize2 = nCap; + //blockSize2 = ((nCap - 1) / 32 + 1) * 32; + } + else { + blockSize2 = blockSize; + } +#endif } } - // down-sweep cudaMemset(dev_idata + (pow2Size - 1), 0, sizeof(int)); // TODO make sure that's right //fullBlocksPerGrid = dim3((pow2Size + blockSize - 1) / blockSize); // TODO make sure dExpo right for (int d = dTarget - 1; d >= 0; --d) { +#if DYNAMIC_BLOCK_SIZE + if (nCap < blockSize) { + blockSize2 = nCap; + } + else { + blockSize2 = blockSize; + } + kernDownSweep<<>>(nCap, dExpo, dev_idata); +#else kernDownSweep<<>>(nCap, dExpo, dev_idata); +#endif // TODO make fullBlocksPerGrid right; //fullBlocksPerGrid.x = (dExpo + blockSize - 1) / blockSize; // TODO make sure set properly but works on super basic case if (d > 0) { @@ -130,8 +160,11 @@ namespace StreamCompaction { int compact(int n, int *odata, const int *idata) { - int blockSize = 128; // TODO optimize + //int blockSize = testBlockSize; // TODO optimize + int blockSize = 512; + //512 seems to give best performance out of the values tested, but then scan on its own seems best at 32, so using 32 for scan and 512 for rest--seems to give better performance than same size for all the steps dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + int* dev_idata; int* dev_odata; int* dev_boolArray; @@ -140,10 +173,11 @@ namespace StreamCompaction { cudaMalloc((void**)&dev_idata, n * sizeof(int)); cudaMalloc((void**)&dev_odata, n * sizeof(int)); + int scanBlockSize = 32; int dTarget = ilog2ceil(n); int pow2Size = 1 << dTarget; int nCap = pow2Size >> 1; - dim3 fullBlocksPerGridScan((nCap + blockSize - 1) / blockSize); + dim3 fullBlocksPerGridScan((nCap + scanBlockSize - 1) / scanBlockSize); cudaMalloc((void**)&dev_boolArray, pow2Size * sizeof(int)); cudaMalloc((void**)&dev_indices, pow2Size * sizeof(int)); @@ -170,23 +204,24 @@ namespace StreamCompaction { for (int d = 0; d < dTarget; ++d) { - kernUpSweep << > > (nCap, dExpo, dev_indices); + kernUpSweep << > > (nCap, dExpo, dev_indices); if (d < dTarget - 1) { dExpo <<= 1; nCap >>= 1; - fullBlocksPerGridScan.x = ((nCap + blockSize - 1) / blockSize); // Not sure this is totally the best way to set this but does massively reduce runtime (e.g. ~6ms to ~2ms) + fullBlocksPerGridScan.x = ((nCap + scanBlockSize - 1) / scanBlockSize); // Not sure this is totally the best way to set this but does massively reduce runtime (e.g. ~6ms to ~2ms) } + } // down-sweep cudaMemset(dev_indices + (pow2Size - 1), 0, sizeof(int)); for (int d = dTarget - 1; d >= 0; --d) { - kernDownSweep << > > (nCap, dExpo, dev_indices); + kernDownSweep << > > (nCap, dExpo, dev_indices); if (d > 0) { dExpo >>= 1; nCap <<= 1; - fullBlocksPerGridScan.x = ((nCap + blockSize - 1) / blockSize); + fullBlocksPerGridScan.x = ((nCap + scanBlockSize - 1) / scanBlockSize); } } @@ -212,7 +247,6 @@ namespace StreamCompaction { cudaFree(dev_indices); - //return 10; return count + countStep; } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 2c4a445a..7aaf2347 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -31,7 +31,7 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - int blockSize = 128; // TODO optimize + int blockSize = 512; dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); int *dev_idata; int *dev_odata; @@ -43,10 +43,10 @@ namespace StreamCompaction { cudaMemset(dev_odata, 0, sizeof(int) * n); // <- I think unnecessary? //this seems to perform worse than CPU but I assume that's expected when doing the naive approach since this obviously is inefficient, and I'm only testing on a small dataset anyway rn so the overhead of this outweighs any parallelism benefit - timer().startGpuTimer(); - // TODO int dTarget = ilog2ceil(n); int dExpo = 1; // = 2^(d-1) + timer().startGpuTimer(); + // TODO for (int d = 1; d <= dTarget; ++d) { kernScanStep<<>>(n,dExpo,dev_odata,dev_idata); diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index a7eb1211..9521b0c3 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -28,7 +28,8 @@ namespace StreamCompaction { // thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); - // TODO: this gives same result but performs way worse than bespoke kernels; dunno if that's how it's expected to be + // earlier comment: this gives same result but performs way worse than bespoke kernels; dunno if that's how it's expected to be + // ^It's just the case on debug; faster on release. I assume just thrust e.g. keeps more info available for debug hence worse performance thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); timer().endGpuTimer(); From 41bc89116f826a0a9e8275c7a83b79c469307337 Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Mon, 15 Sep 2025 13:28:49 -0400 Subject: [PATCH 10/22] Added note on tests to readme --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c5241ba7..29f3c454 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,12 @@ I modified stream_compaction/CMakeLists.txt as [described here](https://edstem.o ## Questions # TODO plot, analysis of phenomena -# TODO Nsight analsis +# TODO Nsight analysis ## Program Output: + +I didn't add any additional tests to the output here, but I did test compact with arrays not ending in 0, whereas the base test always ended them with 0--this was significant as the use of exclusive scan means the final value in the indices array is equal to the total count of non-zero elements if the final element is 0, but otherwise is 1 less than the total count, so I needed to make sure my implementation handled this case correctly (but since it doesn't particularly affect performance, I did not take separate metrics for it for it). + With array size 2^24: ``` Array Size 2^24 @@ -79,4 +82,4 @@ Array Size 2^24 elapsed time: 2.58253ms (CUDA Measured) passed Press any key to continue . . . -``` \ No newline at end of file +``` From c83016fae86864858839f35c55ef37d95b778b8b Mon Sep 17 00:00:00 2001 From: grievans <89889920+grievans@users.noreply.github.com> Date: Mon, 15 Sep 2025 15:04:56 -0400 Subject: [PATCH 11/22] Cleanup of comments and some screenshots for analysis --- img/Overview1.png | Bin 0 -> 102176 bytes img/Overview2.png | Bin 0 -> 91459 bytes img/Screenshot 2025-09-15 134650.png | Bin 0 -> 90328 bytes img/Zoom1.png | Bin 0 -> 92193 bytes img/Zoom2.png | Bin 0 -> 91775 bytes img/Zoom3.png | Bin 0 -> 91756 bytes src/main.cpp | 17 +++++++----- stream_compaction/cpu.cu | 13 +++++---- stream_compaction/efficient.cu | 39 ++++++--------------------- 9 files changed, 25 insertions(+), 44 deletions(-) create mode 100644 img/Overview1.png create mode 100644 img/Overview2.png create mode 100644 img/Screenshot 2025-09-15 134650.png create mode 100644 img/Zoom1.png create mode 100644 img/Zoom2.png create mode 100644 img/Zoom3.png diff --git a/img/Overview1.png b/img/Overview1.png new file mode 100644 index 0000000000000000000000000000000000000000..b54654a96124547cbcbf912294f64362de9d6097 GIT binary patch literal 102176 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
0sP=PS9vgUxaI7z10*VxV`uhR!q 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

&B&2| zMJE>S6EGr2*XfaNVm%@*SU1O91@q2yeE9hbH*DGDdM-?V4_BXO0RR>VsWn-5A+WWIVOEXfWhp{>>G~-QSQ9_23F~-1kCA5nIx*{oe&;c9+;HJd zo)#VKK>itR6W(m}&>gOdS3{+bTow)eu#%$DxhPj!B@^nyd=WI00dJtXuKMxR)7H~l zwVmo&Bh%a~M=N|J1>N$ltr~4Lb@KUEcFe+33}TzxMk2UUc=8E>onoj#yahqvT5wC~!Rw471}k$7J1ijF(y#JY0P zkBUY0x^jm2a#{GFRu6?8;1RIXH3;n8O_bfSG?U&^`J!aDcYMlW3oBJO)i)}TJ06VB z?I>0WHu01Cnqit8UU$drBf*hif}RU2UGzfvEH#nWXw6n!J%&AkVn?9I+S&ZJE^S}qThoG(7(%(1c2j0``frcGVC)}Htx ztAotbx%J?ca-(5b?Xlz2ybYyF(3TgC!9Su5HJ6@@-{4br+Zask?i3zH`f6 zt-V-Jz4|F0UMCd>meDB#gEOnlHRaI8;Yx>*hFwC%b^VHw*PRzMoRnou>oO0xDj)X_Tx6;Br+xXO_FhTrk<7@G-<^q7q^wJH?t9JY~}cMboIGrn|0&HcUgP6 zlT+>^Uz1lbdtvwolT+liop;G>WR-XMTmDIIeO_Ma*!`p6EC%tb#T-1d_bCZu((a3! zRaGB60ZkFKyXMkWo)a~++%Qhy`<*(4;>ou=#QDItn-_IgZLe6t5%*r3%)!innaGE< z#?O&ABGXYh_wS`&-xgcEGue{DS^)xk@kZ=(2^za&@)`KS#%$v)N_rI; z#H>{g5R!FUD3exOv%=|PVgT>sWnlCNukFS(ZyEao_`y-F@P!h4%Jg z>Nl;qbd6_+6#iscEGsQTJ|3l6{=ulU9JCT+|O$|d8-ed!i_P4s?T z3t^ER6Aaz^lfKzWcl3VSwwhER?{+((ekUx}WZHICB|t6FwQ!q=5y%?H2u#TlU9NRo z2fsAQgH_ExGGbQ#IB~x(W6A_sp{$}NgUHrGYN~8Um=0fW7TIIFv{cW&rt>kp6em&d zIWNAe`~!)#0OS8)*e3mAPFhB`Bi>#s-*AD6WXiCb83y7_alR?Xh&`^ zDsihN9C|(2-|4<9jPb=ZRp^I!^7RbC-C49PLDopp?~y`NY-eVDB7`kyBT2&7YnWjK zzJ1#B5%t1fG(Z-P`pX^p@S{7LFmi1tNZPCIU0+GC?(6UFhUv`;o*MQ}lr+1o*1W$U z{GIBmPa<)R(_bz~`YQFj$Cr-RQ2z@_OD)V)3JaxpQ%)&i7W;P$4yuRw3@(sVLK&b- zRXa%xN!M;O4!Jvmt8^wcZv-SK|1+vs)ZN|PN3b+3XINN79EYTZXKf~16M6XgMQb4( zpghpOfFtNS5DU|53km5HtGq}2d+qNeNPw8b zV(Zrzyiv9T-|b{JzK1V+Nb~UW3Rfs=DtHS`*vjmDs3rTZGLtI=U=7myA%a1m^t1{! zx%^<;WQDTjw>7wlj57l7rso$J!#q|M;q?a?L%4o7=L+gu1Gs_Yzhtk?@9y>JE3y7j zvv&6tL2gIN2Qrx7-W$VO<1gig!TjlCotb8>F>3}SAuFhxTTXFt=WZJ97!GMNjIclS$;M`$%u_3^*LV>dZ}bf%XFL28J} zVsn(r`(6^1+lg+2?6P}5JqL~h9VqJ!_P-1)r$i@T+-<_rIdEd_YsKpz-*b-5Vi`zA zgCoGNfbDgIyaYG+zBGV@kuxn<)OS{113Z(pr}SFawxzuM ztIA>gn5ny4{aB+^psHBed*CHdRHe3py3w6FUPDW6jwThCJe_tjlZT6{E%XPCYhLF_`U6PEz+x2 z#+6T)dY#f~2^suQ`qfV2HPQ)9%84~XG*TJnyCx!om%Y8wdDLnUvoFqXTHE(#q77`m zAfvgZ^Q2PZoVwK@e5Pc&e6ni@8pYode*ua~;PuIgBDz&CX5m<45Gt88UV->AsWuN* zk9l=TuUUE-6TM8;HdHPlPeq>aP4f1;8|rzKd)N(e7vB{M{2-h;b!maeb#8hjQg1s? zMIgW15$2uSDob(oT@KH69aTX3?NCZxceY$Om5hvx;-q8gu-4a*O;QV$sUW#*3^{#tI8T8KIC3z$BVl-c5okCN9FK4A~ZhqB4=+_DDW*mqcfmD+?7|H!g{ zkCwfd2o34Pzb78pnu%VRd7r*U*rr6!ymyCXD<;m>9h*FCDYx*wGB^$2cakYZ%O0u3 zIIgO;D7`Q>cv)|Hm9l`}GLh6m%C6lsl_oGHdVSNw&c?UhT9}D7IRK|^B{d5i=yQm> zP;~|qy7F~sDEq|`OY4rbE2@cP`K^(I_?g0bKSwuep40ztkSt&2-R(D@ZtfMof!r3F z74~QMRJHV*&Zw>zONPE(=BLx`>tC69fS<}S^<93UHyu}OtYfg3{YiiCYTVF9^T5b@ zICOlVZ7Q)ga9_x`$-|6umElC!x5ioqmV%!7!4YB-?Zkvrch0DEyznG9O9ev3XAHRs zjqy=4w=HEo8K?6`u5L|unJ3A1y1y^c&>ZcSm`p%CC}z{OpSwBe>z*>?ImuQ8f6@m{Nx#KMK?C-Hp@2ibR|V~Bqj!rKwtej9Q8n9EECpv>A~Il&JK z#5)g4rm(J*Idwv;OdiSO(eEmTDV!9I!NtQmPye>r%Et1r(TVC=oW$&sWVnl zUMG2qEv`>qw}MPw{UmkUvftKM%D<(&`fF5C@}5ekF$bB|o(0kx466nfY58P8|KLn1e6LqdW8hZpf)?u4A$=1HLHjGqE3P(KfN!nXrD_sp?9EZ&z4~_Y`*u0@*rPvM(k>Z7apbmT@M|HUrGiG3%dMK?6n~a=}h) zNi4f#DT&5DOSgW=ihOzUe@B?SxhkDRL3yuSFRED@yfY$n^_oz-F56%;e?eZL)Lj?(9q*8Zt(emfE%^NLUo-T9q5RLH0R$ zZEwg~kJSxIP9_L*C_$mfSR?;34vY(R?52iqY+ze0A=r(H_+2?>Sl?M$pC0PykO!Ep zJ&-%x0IoJ#U{-(LzORH^8?0LDt-pPI5GNrl^*%Yiy|Po}%x;VUTnl(e7r_0jN0yt~ zy0KgRA}P*mgD;#oVSB`OwuX1|0ZwuUI6Au<)A`M68ps=^f1&`p`>qF2t?93g`Pn~< z_1!&>5B=i-?Ec@I^Z$8b?JN)(dtbf&Spb0KcDL7m`I+p4eBt=7A1gyO-r|R--0rca z+7hl)Z~kAApX!;MTx!9sgA8ZC0zsyhe+3bBb#(z+{1+f*J{Xb#-57a(v{~bC;Z||^ z!-VJ@D!2_r#g-ZXY^hciz?Nnk18k`_l8S-r{)vH``E{7re;!seQ}}6y-Laxp6n-D7 zRn%`!ycSy@+r0W1uZs4Jum7AAA2!IAJ74gb)xx`oz#!~^Q?;mgAjVlCqYE%%Qo9GL zRn)o}=3y@P&K1ru7z{i_b5}SNq2iZzFF2Mj6(-|Q2@TI5JPojJ7j<^Qukp=pyKSc8 zVbPdcfa0{fExD)pPk`fp`E-I1^&RWyvg_*tf4GHA_c;84LGA0TykUz+bOgv)7-;Af z;}AtC_iTyL9+|!ZoBX(n3*PjJ)L)+)W=`+`0m(QN4tJU)-QFkEWB~J3k%Rdr%1UqR z6Ng)r~?JW4i6w%Bs9k(CKcBq;2*`MO0#&Otp>*vQ<+T*R4F!^`lpS zpMSB^n$EQcph#Xu;Ub^y4o_>kY#oub3lP5Nmg4ZhFZghA3r$)?6?_Wkoi?6d?>c)w z*TE;hS)?5UwFWM>&B8?t8ONSu_ALbSQ<*ILz%s(ub;reTneCxN7wWNR~?LU zLKp{5%>v)%$L5~`Y<>p#Ud9+8FkgJ$D&sUCR#i{!?eb{>JYPzFaUj&g`K`l)YQrW* z^?UunPaiwJn=aroaf*)`*36nkSac)h@{TwfAjX>Oc4G2 z(s_(CiC0&xYT+hdBR)Sx7d2?c3$G^8>%%;PP75rsAR9y)&Y1h1zt?&qzr{;6tSiIq zK&y8=sgkLZS)V+6wR`x&peF1t{G>`BMtehjAPZ;qVGyJKof|DBzDGEUKU&xPGOul9 zi6Qx0-4R#3W)b%1qe0|D_CKNX7Ol*x)jMsS(fe2DNh5LI7`i0Sr^^iPtDKUVhFK4U z_t_g&^h3oLf<`Vz7wdT3N@8$#JFso+7JvEx#k>upp_OoTwGx58te5k}nz!=0XKPQG z>;0M8!=X-1&V0^^J`o!d?-RL|+d`~OFcXS-L zNck_9hZLVyFZgzKBj=vOcOEgk6+$~0<{Cr^=$xaMl2?fyevkT4FU)OH$mY2k6UyqX zdqk`napbgesfGDv!c4kzzsIln)&KjsJ!e(*ijAdxQW^sm_c>Ka9#yd?$iwZ7QPrx> zVegG9P&m*1EAWuEb4fxE5XEujcS`x9`UtSI#A9Eb3KJDq(OLLwcfIrtNZXaRWBm27 zirTX`!%7yO`|7Wbid}4U_jAW`OiN)auqFn!dbtvxrqIxAQGOqVa+c(;A=FXD%{WD( z5vuw9wgG11q<0*U7OxeUs?XK6jvROKJIL$3d{VVsXpw1LqdZ-sw=b2R&<}n1K+vr} zGHCtK=q1|j+1Oy$CO%)d34*=ZCpDoSXMxT5CcH{a)>|D4Eo-`r7Z415!!d3NyA8$5 z9J_}zTmm8oEvJsI+463>zLog&bAqNGX>_UTD+jk? zKg#mC=O z(moe7%l0eM*N;q2&&%_Xak^J!`@Y-z!??adRC+FZFYhV2_c)eh4L{w*7#0H~xRbe5 zG9Ui|wtcL5Cx@Y_NnhGDb+=Do-f?*Sp^&{#aj*F0XUQ&7Zw5c~zTh#qg4z*ZEc?!m zy<{XPY|wG{l#v7{lSwX@Ds9tvYuEdJMAtVG!0X`Mc~&+mdS969OQ*|}*p?dwA6zbqHnIDw^)x^T=7+CW0T4-s}G%ipu*)|*I~JDPUU&>CQDvm{lF>0 zTQm42AMO4PyQM?IQ8X0k+^o#qbvpI)*SvcJVQA3(#@B?h%3yZ?WR(nh+ZA`WgKb^! z$4j#W79_QTqXatc9tcYkU9enZmAx;(05i%mND%EG-d)6l`!iVpa?8y8 zJaA9m6am+QR&qS;M|9vv=X?WXf%ehHNjns6Z*)*d4O(0=s{Xu_utRY>T3_?1j?}bi z$>v!pO}vEWB=xD@Nc;<3#xaT64dpVaW(4ilp-Q^}$!DvXu56HdVo@asjcptjKKXD# z2c>x*tDXPT9~h)!;&=UlT}sNXKR`9X*;Go(A8rFM^#68PxDK3CcgLfj747+n>JvD` zXEsQ;KHfF;E&bB`x`Pq3tM{RRGc4F2ZsZ>01W?ueE&u8hIQOxl#~yX7HaNg_+{;KP)5vra5QOgp=}(*8&P zlnRJuQGL~_P{9A=O@rXciT@#-R905jL$~iuiT9dAOPoj(9o*|rh;@IdBljM<$3Q%3 z-fdwhe|FYRSo#W=deYf@3$wGYvyOIYgv4J?ASsccO5OPOglOxsiP$LulkHH3N4+X^ z0$PvZFUE!lhxW=1Et!#2bS6l3j}TgUgi!ZQh5A?Burzu+`IC2LgQ)S9C1bsuJFdRR zs}PUjj-k=B+u0uzN-qv=aFb+69^mbuSoeQ1oz}v7q!Yh%`%R^2l%v;T}TEhYV0H4Pl zUoM-GBI$^EiINTdfC%?Y0&E@4X2KJ?Rj+2JaFL-WzKQfAF1~m7Rq^+i?PG1bsy)Wl zn4tK6vXnJ>b}ihKO{=I?_&z9Q-T0Erzdq(?&j)Y)x|ed({zb69SOMZZ`s#99C2{fb z-2(%8KxN*hDT=QT3&ZwO7eoJSw_lW~K(L_Bkfg`rJ4Ds0z7cGT#B=3}_QQuMr}+)D zfCiTu)j_sJR#~v&>h2Kn>?3{ThsTAAN$)?PBYyx4 zzp;kr--t}QphIb1zrLYur0`KvXCsF)WO=K>=dF*di1z91FY8_fz#$xZ*LVRgopfPH z?&tGBYA@LzuK^Q)7qLZbj65>d2HPfjjfIGGD&kd|U?&$19}1N|X|>#pF_g=@4ibZ(xg|Sv{9FSKei{~qO>Da@*A~x8-SlGb8~YR zJtJDAM&11Btb4EUc73V1kIsW9>=yYi={>afHC23^C#sWmr7|B1e>7foh9`KhRKW9! zOTJ+~-M4rS_qVbbuf3QP;?KzoWy0E{IxS|aS9A`#o71>)1umSNhi!wbr86q;K@J~D zp}F>$MBvD)Gd$y$ohMF|Kkq@w(PX5mf;`fPwR|diw;RK~DRMZ^*V=xBbfk)=`ysNp z$(F}4GA_Cm)f}zrKHY=ikG?6jhl+{>u8~@2`;Rf_w^Upoe}T$5 z>HuA_&(U((zI&_1TSPmjM8qV1%eUf^p4k4d`kelg${7wh;f;(Q`zrWV(w9dNO{erT z1~hJ>9^`wjWi>2B!(6Iu^duX4Xmlp{!*%z&b0Gm}n}&Uf;I&#lFsj*R8SJxsS-%06=l$+g6 z+L4BEZURU(i`H(5;FZk@DF6$7lNR9BeHt;{ zk1}+I<4)ov)hD5Hu#-nxqU`S84Uthtdcp&zL7UPDrTo)H?g$)U`k>aXidvGyjw8S>q}#W?kfR6wYBTj z3GU`6uwzQ?LORzDoGIGErLAwZ3)B z<^D&p+px!o0OjuJZYvAlMNk7JsgGvuz%OA=|4X;8?8z%gbIkjW9Q93ei78`eo|}Cm zGCq+lSUKOHiu33@Go!;2wZ5YJV(w$eM+42&3=p`yC_w8FzQTVgx=++v%V2S-?R2$= zv&}JDz2w!ux$Nbzst(2}hw=N_xLJ8rKMbY=D7!tM_QScxuMTZlTW`w-Dr+XyC?|cS zJ&KntZ=1A)6$KS2KBH(?73rQbzl!#fvYRaaoL&P9$Px%Hk3ajXhcpPkr#1atNW?pR zd%-wE!kdWI>LRh*nC0c=<|k<*lOzP4#bsZ5QVt)Tw8ev=*hWX=jP7sA;|BLKj(@gl zY6-sMLk5pSNND@0XT+ht&j0P}!NUh9doXvK^q&)*!#+0Y9&G!jB@cb;tXJ<5;Rq7n zA14P2^qb;%wRMk=ZJvJX@`gHo?G{O#r}eI7Tf6v8z3p4wX8Ox95|{s0cf#xY()XO! zjXZOC@B#o9|3jN4;+~>sqO;5gvqmYyKmE~&0WAc^5H1Z;+AbS#IuJ@nfK=3JINlWA zcCEn}{umy8nFhn(>SXcZ>!ZZLfO3Qd>)Ws@*$EE|);$gS(f7y1=L*T^WnUpu0o#tX z;gqd!i(9oZ4c8DTUf(-|7SfN!JK_#D0kt?;{m&I_XurZy^lH097VZTU4lkEQLxl+z z131|}`fg0Y{CqP>kdSeIF7*^as6@!#S5bP;StRJCGnK^F&QMmV<_tez`b6yeuBpZd zey|hr(CIFDumSzhMliaZ|6p=fneU!z;9Rj!YKdoViGz#Zx!&>Dz4uPsVKDH>#evs! z|B+fesLNm8Vk>JBP(rid3lt^GElL#TtL<$ErcwRg zxmPS#18Y3YIgK}RqOD?aQ%T2_IM=K~qO76MtK?`}4Rlg7MjU3ing|Q|Hit_N4y&ul zNKYUXM7F=I<2ZUMPSj(ycAyuaccfQ@} z_?%pyIH6WD9qnPlZXjno`Bceu5by^-D^}bmSO`(-CHZwJRu2sXibGS(y;&bAmB2FY z;Gq3=SI5A2Y$jbDZbLu&pwtaradmg6w7laG5f!x=s`Rwz>26Jw(lIo&3kX!Owao== zI1ym+i-B5pvvAu~XYzIlf92xM;>$I9`R@lr^992UYHKrR-W#Iw7wfUadfoM|6jLM?&bK-h)?J0iOM5yiR23Hszn9f$ID@a`51*49GdDmgjB)k* zu(p!vT#W*nOidK~36=&}54;%8m!sX2LHj*2wLGaXW~@#>+5<0eZ-NkgiHK<-2*qyM zCpa~4FNH3wu;h@=OqES|#hWPpa1JX8Csf{#QHkwAMY8C!5I|FQFhkhB$D5n6a1V{C zqL&`Mf*PTrLc@Wg6O>NiIZhD%66lBaa(Mf=R4P!UOc+HAjSu#F9bF{}_Es;{VT={? z)>0Y_GoKbEwuvTt;G0%4F(yYX2Cnts8&)x&nkxMiD+!KLeg!mSatwiafgpGvT!1Kf z7fo^t4eoX@Gf)haK;$QbN5QoNR;&H!+@v7ZF@{+BnRN*rZ?|Pu7&3Xsb-)8}okh3m zyYLdlPj!DI0AWiOaRT!>DE?8%WWk^ujkipLF*}jam>1tn2tlcZ-Y1;O9egO2Tnnyo9oZy`u$Km{ zs@>dnaIQnKCSL(d6YuT&^+#8?9{W|rPG0S8H8V>ZejE>Pm|X(`Tvp_j>Bh#!pqKqC zD=S&0rFy^%iW9aB?VaV(=NGeggGenCiPV8=KZwy`5w+8BaVZ8v7xl1~#=f`cmas*0 z0XIzEMrS5l`*k1}_k-s=GUfU>ySk_Cxx95dugih=3MF;x#eX|5#osMX6lu~Z3~>yW zBFsj-O|q{lht|QIL=tz~vS>@Wd58WZH^#blKhDI{fQ;vB` ze41xyEjr&M&*RDjS!z_qujDFTY6x0H62>C?jE{b*N4JLFpA((lCey88R2#g8FG|p0 zs+ZU-SA~anEPP9Z@U+w^Zz+_~5vxG&YB*V@09P-;n!T%!rIB1vFz?%XTtG0FlGT;g z_0B=K*2j+;u?Lo`6(XdDmRg{qu}GDY1?abCk`TVu(6ZQJHTbgxkQ5Re&U|jf?qWnG z3@2n>#t|G4;pL%)bZ%R$yQ2!z!-3gGQzGYJ`tih9-Eu?7U=R8gk{~vzxoi&l3ap&& zFUSYlC(<X&94ZNK!CqTdv1k#;D>#-SkY@YDietHWO6}%X|43m zY;W;J5PPSPKT%w=L+qw-{(x|;y?ADks zw!h9LX2G3UEvbPfy>_osEvyz0A2rInPk2-mVk^{UW=7d)^^vh7JoX-rU$7NU$}*~O zyVcb~NfU;-3@r%_J6a4HvWIVM)tu!%-A}MG5O6VKZQW?5RLyNUu+$%0*c|g^k4LIk zj!88WLE|DrJQM7F?G`KpH!xDoOJ~sw@y~tPKUc`230K?9{E`I;uR>XJ0fRl3U@g^J z$q-mB%LR1viW2L=08P9*0hL&*@TeD=G{>o;-CWqzDm-_D+Z=`JOIaO<>Ra$FqSY61 zo_7J$JY1qW#D37Oo?X(_O2HkH3Ej(d=U{~rqyi{rx?@=;fKJKcZbE!!pNRID#bHZd zOq`Cj4GA*NS@@?IYf@&jcpM^g9QR^oz)u8|0o}BRzP^1WLYp4a*`-{_IVYX%fRCh zF+&qedFm`lo#E!M*SpYlm%S32d^@#aU(Ze1dYn`rkw>J%ftmy`fcF++rZxQ+MmPvp zw7uTHSYq7?a!S9p*F4gD&wP0@>k7gVKX>}yz1AW1@2hse&j0y$2n1xyo+#UDn43TM zu@G0IkBrP=oBHtk&mC%YT>dOPGRq!@%J)z{HX7-fR!rfk^f@cqIUnd0$F-pC%HxAt z7myraNp;DUeye_2L_0U@%SH7bPi33NE_51f7ZUg5im{i?PSkLU{9wYy>!jSwpFV_( z&)G}ct&InMq8#Bp(T&tbkc)_x?;QNt&UxSlL9wd?dIshk5{<Yey*3r%0_1>D741m;qD4Cr?M6-iR8!g(|K}M4;)9TD5szDt#FR!bE>n_FrP2_ z8afE|)XW!llTTMRAfkGQ#fE15+N|a^3|y)$Bx#Kn_C_+|a;neAEDvgDPHe_LO>F+P z{%y3l&?lv}(E{yL_(M_ui^t_e2tO|`Ag#qRqw7v+Wi220Kxaz@ul9Exv*E!%8*$SI zG$Ro`armRvoF7ZOy)YAeO5CDRc`Flj*-O(@s>8zZ`+U5+ z^kXsyG;02B*~uW6Rj$ipz<5Uisd4{;ewcHlUQZtS>*wE5q%Yc_T~R7U_`IV)7RDkQ zeQo871>oj=m-Z_+3lB?mBC0$DMV6K1*)>Q!EjCSdi)vfSOdm^7qfbb z<=SU_q){A~rF#uEGY-3L{$5{R9IZVn*ELk-eKDwQ@5^a|b3w@+i0yv2ZAoeeGtZSz&L!ApX`3$=d(;AoC(zI5 zzpQnOD3tFeTU?5fU16@Np1I)p(S2b;3PwAYn7z4}=HQTY*j6u~CB;#ClK51QhGln= zcO{zWN~oEnW#mCFcy|1390U@e^y#)%bVq-`Et}9K>u?C$)ghkz{wv+%G;E}V3QZo~ zC1sv=8QbOOOBeEW{dyQij(5AR_*yK4iN28C*JFTEizgBy2uoka8gvpxZ4--8VjOy& zFY^1w9>1#6(J$?l&@*MQm9#mze$o_~6DP`xPoRz0GEgX4jN@{B}7-64IUR4cg?c(tc$o_yL0(0L`?^*j#O=j&5{ph z+{gtivS;6SLB_jpMsPOCYvwXl;}k=}89)j7r2uW?pmpok3mzVx5~s1-#on54AZial z@FriQf2N@Ah?<7HdDSvb0v_}$TmTVFs9t;_Fm=Ra{TVavvd*tXuAe|#eNLE+dz9GI!T^$h;l!t zD(O`<%pT9Uu$1u_9ti2jFfbA)5BC$Sy>~vdh#@;?A>!$DaUqey#sh+{+JaN2&X3LtyogX*kjh!em4Ri@e#t zDSsI3XR2CXg9sg4umusx`mrSiKC?OwG4uG6e~_NkQvqz!P)K&4_+=^@^kr1kY2lNd zg=Y2FfE3XW{15ezH`)u8#89rgF{S}#JYWKlS7PLg2H@D5ml9*Ig_||*0yP2<6ui&W!8wRIXd2LoBtbz* zAXoFxc3qSH8aEYv9iNgG9MuHis-~Y5R3LJsF0CJ{;Kded*@oTi+%X3UT7&HiXF=;z zahEd_E?}`cT2o?nJ@2S>PlHeM1-3?b!Yu`Nf^CU=E10Q!G_%ju`92B-+)^D?nSs4RRM*ymG z`*kdYL4CV14B`i(>d;n+N#FtfJX5}rkNeyAtM56VDuElJ)MPilzl@(qlJUMNc2`Ni z?8(Ea1%}dizMqF*FDf7B5Oo+}B2$2J&o!XQqcP|-`iWLJ!WGO20M-4PNqEof0LR*F z@5Q&j?{e`AxC@6rBfsHPT>W3vx6!M_o!BMtmca28RPCMf8uJ13gX?Oq<(d=~@VmR6 ziyd%2&LZaUI&L#E4e(t4xJT*!f{$S}4sg{c6+hT2)Dt-3`M8hm>X$)o7hg52TdA;? z90x*I@py-f3=`Q!ghJrw?318H~I{k+eYzy1N& z@9sD!|HsFM_|x6^4M>JSg#ON~sOSeBKfAE-9;oCcT&pXatgaY(_8zFC)%*87E-5L4 z6I^#Sfb3cCF0p0zlBRE{+`BNy>V^-%wgWjLm1eHjngZC(B48mbnqwY{{(6lNroVw^ zV4Cz^@|U+4F#s73WWz3>1o;{x=LSwP6_r(b_-DHz{^uhi_CL|n)5GpR_u}JN&9AHY ze~XOx6M$y=ol|6w-8>}y_0Vs>#B`mLZ;u@pWNVv`Tz5Hh>SU^qS#YmoLAv}=qu8D@ z)}uz*TGfT=CO%DKYVDCnp86ns!SKrE# zvyjrx`6}2Ok(VY*BbYf&y2j-^l?^V88mx4w^Wzy+EWXH@WhYUlB={2l^GY523;5=} zJrEPJvo84*^gv4aSe-Sfpcm&ISghh6JkR7F$mZ8$9iJEg_d+*N@x&pi5s{hM*;)73TE81lhdh55qSC>zwb15s6JWRt42gHnO~<<=p0=$z zblvCaRrHR|(F$od$;nV}5-QoDOBYc0c69AGr}3@}tWTFH0k4HJnHi^+ zN0to4(9@LRowzH8phlji74Fo?Tmt!cQl_(uoypntfxN5DF? zdaW^#yjW{$y?OgdpnYhN<09b|O|lQY`WKjdp)**(7!RM{TA>MHmy^|SSkGSRW82u= zuHKK-y3ope2S)~yMw4=BdN>vJ0a1godN^KWc%X0R*jGQWRNKI8+sbv<<@;@vI&`UH z-Kr)On`H#6p=uJJF%Mg9`^NfnLXhJPln_GX8n~i5|Di4P^g zS-bMSmv77Ms;JWI#4RG~oMRPwKmVoF<2Bm_9E-q<9|Ow&!1ny=0JZ$qv?G7FT*8f_ zy`hf%k508cxfz`9olAnP(ad)|-q&L>lX^~ckVmdE!b~uJeri*~o|HL$ z`cN0jPW1zOu_T12-16ng)%q2MAul5z^0egEN-)Y;eX6iOv29hP$;Sv*oECqPedp{p zbIq#6#&|NU$^mz_rIGe*w96cQTxvXY%ZDhPiv0B|AWVK#z%1U*=of1mMD1rlX)P^B zM40`km3}1V|8cQHoSb{4AAZ~q5YB;NH4*JbRBkp7 zmqB}iE5>nG+4aYD<-c?e4$hJDhJNb*89-fKr=A~`)c{r%Jb=aMr&n=;51&;UBmcv~ zME&+3fE!r#!;t(Cp4+{+;4;;j{JH%X-0ROj0UP>nkmY|z1pRV{z8w0~0Pbl7edTZ3 z6A|IzW}ynYrfY`KDddGc#es3z>BHUaj7rD;@TW|1Mx!Hk}c_0{Ew~-}Zo_ zR6md1jZXb?CYVsoiMbIU7$JLPWMsT3bEPQQj$hT*YCj-eU#*~{{f+ZB)fPGt4M@%g z)lNZb<;&-xf7h4#q{3bwM?q2t0Z#)Ny}cgC0Enb!>T)WI-s-wd2+^vYZHfgx4b)Kk zdH36#!q&`}!rXjRc0lc`o5dz3LHWQH1Wr>I#uBTx@x8n;N&JRceNtMdnv{HaTM_~% z1M8sXuI0n1Z1;aQrpV^B^x=hQlaBFd69menOy1z8lhR?rSpR#eiO|k6r?G1e^Q>My zlO^`;tYhD&Xz{H&>v>iKavNvJ5y3d>!%JHG zpgG{On^}tNo1`*XaW_M5ue8FkV$y2AV|*Y7D5L(fA%Z-yN=?__maNx%E!*1aoQ{f^ zQ-M%c7W2)QhbcLLc$A~Zh|TbJ@VzfP>5<=kV%ywnV(MNM`Ee31YTUM#B*(DgE2M6# zcYs3vPrK~bGbxn(mKSIgfVs;X+HYS<;sw7TL4uCLI(E|Z8W6&IskZgWIxMYNRzl74 zHG8gbQJu|4ZZ%x?m^vOz+5h?0%uPl+khbi8nkJO#wUw6w1-xZQSm=D#V0s|3EKq@-w73HqghSjISx5-bbA-$-yKU`dDKbT%S7*_QZ+ospOwn-i?mAPPY zt_NR_e`kweMlOxj+iuS8>KE`*Fq_UySyJ}P?S|hK^dPU5 zEjolWPAZR1_@v$*?ySmLAF_S8RXP(NjJI`aImRmCtf08PF4ID*PNtCz=;kwPi%XRl zrkI)1WnS}>m)M#RUjD2^1{4or#CIf6Hn?357N;}9j9w_pIAb?--6(N(T4(KBDJuWl zxI`RETK|QwUPf zN#yg$lM#uD`P2ZmwwoK6RBAp0T2<<;^v{w`B?idN?NUj%Gy{|SW!Hhn{*}eCGJP`1 zTdf|>E(V}de+=X<=fUzbY)$1x@cg(Ft5%a67#E!+oQV%cP0lwdXUjA0gk;@WVb`$j zvB?2MeUiqLgih$vS~_9!pe(QW;1Pd+5H!(=HgtZ4D4#e(b>k)HN;+L@>Ba6yrmPLi zWz6-L9#uNtvpela_Vn~*c@igLAO0LM{v~*@iwa8vM#ka<4OQg<7_eZGHfE*= zb+z{T?ZZ3j$6AMXR!gzdayvvh(zLodUSjewVKi7Eierm_-OkO)$+@|e3Jjh3!9S-3 zFq?fp1!GgsQcnP8~g?^r4|tNoruAmIhQP{Mj<{gxX|+ODHqjU%QJ< zSnbQz4L1bx;4a_L!bXA^LBUdzpo(w7fa7?|1B&TcmC(i-f#d0R&W*!ERjR9_Can(Qw=_+ zfAFqW@IMDJrR5uxQXfSDG<5vf*PrL6RoP=~M-^1*A|DN+?2~&hZ>-8>jK2Epb!8%Z zb-Hl$6~;DRD`ZU^a{c{ppW)3h{!VuT43M(VpO11>8b9Dmi%$t7Lha{-KBpwses;GnUO5_Cym0jt z<8XRK5Vy^vC9}RvYU7L!zdpTAF-lnqdQLk9c077oy%n}ny!?vC&(0*v(dsmX?Z|5h zr}tc^hfkq}#lJ2T)+dyUn-v8!LG1o$^Q(#InOp&xY?Fl}94d|ij-B*;04?p%PH#W{ zRAClfp*<9piJ7lnukBCRK1|w)s?OibO(bi^TlnVQ8Z^Knwpl!2T#>Rlz^z1ejZa&S zyIaRk5CRAJ$n)kMdISs#HH;p%$K;Omca-Yyt@l+SyWP0&d|$3JoScD{G?P@acRRMv zA85q?eD#mZe6fC-0=^`J50AmxXFDG`lRoIZFGN7edu{H>r&2dUATe<}J!P8+>&cID zY(2Vyoux678jgZ)j*O+C2i}{v*mf#Qag=c$! zK0Fb!2Xf=TlK6gTdjHcacE_m=h;tk(Z1Y|?m zKY^o=SaSj{AFQ2-hpc{%3ZQZEzX-$qTMK`8P5{CGALDobKb|<}1w9{MWz>aa&^@|*ogzSO^sDDUVj z5-u$$nxKMsSh_TrSL3cxv)>zimo&{y{G^Sl z;*+5dnp%%mnf-i-oPx=OFpCH})=^LzH4);*an4gdY>lb&I7as~esv0NG1k zD52};Gt_?2>&R%)KhtRHeNRvc_fA z#JAPK$^=Cq1-Kc|*t{j!_NG{yR7?>=ecC{xUSY}t=L_~^{{B<$_b@xfxxkdvzj!cNjr<-Wf99ky42NX(^COf6xaU?r7F(eE>^|LaHE zT-Ij@WV7k>T}qH^BRm`>0Uz)}pL~bV_@>7dvZbE4g9BX%!lOv7H*;Hak_V%`-`M_u z{C7a84%3?lKJ-AAGcQQUrNZ<%k4yArm`fmVad44JsAF?2HZ2v3sv!CmPt>U>(wF^* zX0WSc+-&b#ZNqmt5)ion)W76rQv?g2(qD=@0gaJ1Mx7~f$6b!3sCQGL08cmEBT8+0 zj|)FNYgQeWrr&+}Ng^w_qCs3Pxd{67syu$K86|QJ{}nNl^}6r`Yi_xYC$Hpp$DA;+ zb*~o)_ZKBs#NJ%uy_|c9YyEkH7>V<{WZ!@><-VLRKjuP#spvXVQxHB`R{pE4QSlb5=EzrwC3UqA$gejE92AOF-`S4~H`>X2sJ-ybDAj-PU%^-21)@dzNdubQk?t!n z!#qd0{t^6ClIe1jfo4X~ONI}MWsOP+sLL_$3zw<5{#y?gosh+^QW9b~qh8<-q)WYC%L z=DNF!he*i1yjV8sf#}C^NAr#%u3zLysR2{HPkw z>mqZs{io)Q-Z=v_zIvEr_{_;3Pg{d}e~-55ZOJ$wg{FPXi_Z1=j4f};$8lSnWabTI z%K1KmxpTQ}zqI|*6P)bjMakZw;d_&Rxg8Da+f88lpWHP?Y1prpkb`bP-LLmva3WPvBipIG+`u$kzu=^@2;A#1v|pG)$d{9Gkk_(ge`c((N)=C4mCn8ynyVSdzZEMRZ5-uuL zyF>}fxYz}vYk>{E5b@B1ax*!rt*+jpkytsl?60SoaoM$2a`$ueHm)q3K}Hb&Gnad(FrD(!`vi0S;pL|lS8z{?h0bqq$5i`Q zyy=q^7H@`okAU;9oj2)9ua6&g2z{_pdCAM5C3X&t-FkQ2E*EmnU!Ny1nnEEvqs|ln znio#bOVuKxDj9)+_D$vH>$X@ckgm!?D)EQ;0gkytqnnTA1mPaI57nS4%EY&<0A^N^ z6GfMy(PUT`1;LQgodoE@KIgvJUa;J(bAsOx6Rn4`<6iQ64RRP%lX%Fe2ppJ@X`x$6 zUKH6!?wM70(4)$xi#uXY)z!^)3L>0U>j}(<9uz$fnA21*46{8(1B)!Y4KFfmPY3SU zqJJ$CHGp*-C+K8^W(|@_0k}1*Is>yq#TG326RL@*8W;Ub_<@{ss$I$CE;ce%q&=Fq zJ20oFD^x9<-1CO>*jy$aON8_F|2PqTbYj+emu}o~&%#FcCidtFOn+@SP)PNxmp*xx zaK#`O$C(U@!S~ggp=oq~P##2pR$s|zdtW07_0&;^pQn(;DU2ICanB}0mW=v%hAOkH zbW7)V>KIP}&d zP}{nkx^9Bh{etS{99)a=SB}0yX<7O9w*?sG@Th$M^F7sPv9Wqdf!0oy{xW!r{hPRQ z&_+W=jsf_OXKS(;LUXF#ZntPe4L2=wDOT-;T5^Bn(n1n8u}^q-=`zuplZ z7(9|bQZ*&-zLc(|dqGex_Vj8-9SnTIlV0X-uS7!?MC?*4}Rt@xsG>pL=DiX45RS& zc?Ym;c8E+%t*FEQUhkwU+;ij8sc^ENJ32gwr?YOQ`hb>bc?q|N zOY9?V*x%T3Atphp>w@f_wUyHbkzp*7%F*8@NK}Xyp2t7GSgcA3hHbL9-DOj-)%(of DA;TCl literal 0 HcmV?d00001 diff --git a/img/Overview2.png b/img/Overview2.png new file mode 100644 index 0000000000000000000000000000000000000000..acc7058ded35a9553aa225b056cbf1794e034788 GIT binary patch literal 91459 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