From 635ee31edd14cfb792f1e6064d5577d09382e40e Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Sun, 19 Sep 2021 18:58:52 -0400 Subject: [PATCH 1/9] CPU scan and compaction implemented --- src/main.cpp | 6 +++--- stream_compaction/common.h | 6 ++++++ stream_compaction/cpu.cu | 41 +++++++++++++++++++++++++++++++------- 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 896ac2b..d132bca 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 8; // feel free to change the size of array +const int SIZE = 1 << 10; // feel free to change the size of array const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -51,7 +51,7 @@ int main(int argc, char* argv[]) { printDesc("naive scan, power-of-two"); StreamCompaction::Naive::scan(SIZE, c, a); printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); + printArray(SIZE, c, true); printCmpResult(SIZE, b, c); /* For bug-finding only: Array of 1s to help find bugs in stream compaction or scan @@ -64,7 +64,7 @@ int main(int argc, char* argv[]) { printDesc("naive scan, non-power-of-two"); StreamCompaction::Naive::scan(NPOT, c, a); printElapsedTime(StreamCompaction::Naive::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); + printArray(SIZE, c, true); printCmpResult(NPOT, b, c); zeroArray(SIZE, c); diff --git a/stream_compaction/common.h b/stream_compaction/common.h index d2c1fed..29ebbd8 100644 --- a/stream_compaction/common.h +++ b/stream_compaction/common.h @@ -12,6 +12,7 @@ #define FILENAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #define checkCUDAError(msg) checkCUDAErrorFn(msg, FILENAME, __LINE__) +#define blockSize 128 /** * Check for CUDA errors; print and exit if there was a problem. @@ -108,6 +109,11 @@ namespace StreamCompaction { return prev_elapsed_time_gpu_milliseconds; } + bool getCpuTimerStarted() + { + return cpu_timer_started; + } + // remove copy and move functions PerformanceTimer(const PerformanceTimer&) = delete; PerformanceTimer(PerformanceTimer&&) = delete; diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 719fa11..fc3b3dc 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -1,4 +1,5 @@ #include +#include #include "cpu.h" #include "common.h" @@ -18,9 +19,18 @@ namespace StreamCompaction { * (Optional) For better understanding before starting moving to GPU, you can simulate your GPU scan in this function first. */ void scan(int n, int *odata, const int *idata) { - timer().startCpuTimer(); - // TODO - timer().endCpuTimer(); + bool localStartCall = false; + if (!timer().getCpuTimerStarted()) { + timer().startCpuTimer(); + localStartCall = true; + } + + odata[0] = 0; // identity for exclusive scan + for (int i = 1; i < n; i++) { + odata[i] = odata[i - 1] + idata[i - 1]; + } + + if (localStartCall) timer().endCpuTimer(); } /** @@ -30,9 +40,15 @@ namespace StreamCompaction { */ int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + int numElts = 0; + for (int i = 0; i < n; i++) { + if (idata[i] != 0) { + odata[numElts] = idata[i]; + numElts++; + } + } timer().endCpuTimer(); - return -1; + return numElts; } /** @@ -42,9 +58,20 @@ namespace StreamCompaction { */ int compactWithScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + int *boolArray = new int[n]; + int *scanResult = new int[n]; + int numElts = 0; + + for (int i = 0; i < n; i++) idata[i] != 0 ? boolArray[i] = 1 : boolArray[i] = 0; + scan(n, scanResult, boolArray); + for (int i = 0; i < n; i++) { + if (boolArray[i] == 1) { + odata[scanResult[i]] = idata[i]; + numElts++; + } + } timer().endCpuTimer(); - return -1; + return numElts; } } } From efd45986e26b2dd65b91818fa867d1d96094e87e Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Sun, 19 Sep 2021 18:59:28 -0400 Subject: [PATCH 2/9] Naive GPU approach to scan implemented --- stream_compaction/naive.cu | 39 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 4308876..28efce4 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -1,6 +1,7 @@ #include #include #include "common.h" +#include "device_launch_parameters.h" #include "naive.h" namespace StreamCompaction { @@ -11,15 +12,49 @@ namespace StreamCompaction { static PerformanceTimer timer; return timer; } - // TODO: __global__ + + __global__ void kernScanNaive(int n, int depth, const int *dev_src, int *dev_dest) { + int index = threadIdx.x + (blockDim.x * blockIdx.x); + if (index >= n) return; + + int depthPow = 1 << (depth - 1); + if (index >= depthPow) { // update curr + dev_dest[index] = dev_src[index - depthPow] + dev_src[index]; + } + else { // update from previous + dev_dest[index] = dev_src[index]; + } + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + int* dev_A; + int* dev_B; + cudaMalloc((void**)&dev_A, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc failed on dev_A!"); + cudaMalloc((void**)&dev_B, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc failed on dev_B!"); + + cudaMemcpy(dev_A, idata, n * sizeof(int), cudaMemcpyHostToDevice); + cudaMemcpy(dev_B, idata, n * sizeof(int), cudaMemcpyHostToDevice); + timer().startGpuTimer(); - // TODO + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + int maxDepth = ilog2ceil(n); + for (int d = 1; d <= maxDepth; d++) { + kernScanNaive << > > (n, d, dev_A, dev_B); + std::swap(dev_A, dev_B); + } timer().endGpuTimer(); + + cudaMemcpy(odata + 1, dev_A, (n - 1) * sizeof(int), cudaMemcpyDeviceToHost); // copy over with shift for exclusive scan + odata[0] = 0; // set ident + + cudaFree(dev_A); + cudaFree(dev_B); } } } From f4a5de552607e559dace11f6d5ea0aa38eb29c31 Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Tue, 21 Sep 2021 11:40:00 -0400 Subject: [PATCH 3/9] Add efficient implementation and thrust implementation --- src/main.cpp | 14 ++-- stream_compaction/common.cu | 12 +++- stream_compaction/common.h | 7 +- stream_compaction/efficient.cu | 113 +++++++++++++++++++++++++++++++-- stream_compaction/naive.cu | 2 + stream_compaction/thrust.cu | 25 +++++++- 6 files changed, 154 insertions(+), 19 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index d132bca..b181b38 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 10; // feel free to change the size of array +const int SIZE = 1 << 26; // 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]; @@ -71,28 +71,28 @@ 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); printElapsedTime(StreamCompaction::Efficient::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(NPOT, c, true); + printArray(NPOT, c, true); printCmpResult(NPOT, b, c); zeroArray(SIZE, c); printDesc("thrust scan, power-of-two"); StreamCompaction::Thrust::scan(SIZE, c, a); printElapsedTime(StreamCompaction::Thrust::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(SIZE, c, true); + printArray(SIZE, c, true); printCmpResult(SIZE, b, c); zeroArray(SIZE, c); printDesc("thrust scan, non-power-of-two"); StreamCompaction::Thrust::scan(NPOT, c, a); printElapsedTime(StreamCompaction::Thrust::timer().getGpuElapsedTimeForPreviousOperation(), "(CUDA Measured)"); - //printArray(NPOT, c, true); + printArray(NPOT, c, true); printCmpResult(NPOT, b, c); printf("\n"); @@ -137,14 +137,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 2ed6d63..c6320b9 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -1,4 +1,5 @@ #include "common.h" +#include "device_launch_parameters.h" void checkCUDAErrorFn(const char *msg, const char *file, int line) { cudaError_t err = cudaGetLastError(); @@ -23,7 +24,10 @@ namespace StreamCompaction { * which map to 0 will be removed, and elements which map to 1 will be kept. */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { - // TODO + int index = threadIdx.x + (blockDim.x * blockIdx.x); + if (index >= n) return; + + bools[index] = idata[index] != 0 ? 1 : 0; } /** @@ -32,8 +36,10 @@ namespace StreamCompaction { */ __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { - // TODO - } + int index = threadIdx.x + (blockDim.x * blockIdx.x); + if (index >= n) return; + if (bools[index] == 1) odata[indices[index]] = idata[index]; + } } } diff --git a/stream_compaction/common.h b/stream_compaction/common.h index 29ebbd8..3482860 100644 --- a/stream_compaction/common.h +++ b/stream_compaction/common.h @@ -12,7 +12,7 @@ #define FILENAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #define checkCUDAError(msg) checkCUDAErrorFn(msg, FILENAME, __LINE__) -#define blockSize 128 +#define blockSize 512 /** * Check for CUDA errors; print and exit if there was a problem. @@ -114,6 +114,11 @@ namespace StreamCompaction { return cpu_timer_started; } + bool getGpuTimerStarted() + { + return gpu_timer_started; + } + // remove copy and move functions PerformanceTimer(const PerformanceTimer&) = delete; PerformanceTimer(PerformanceTimer&&) = delete; diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 2db346e..7abed9c 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -1,6 +1,7 @@ #include #include #include "common.h" +#include "device_launch_parameters.h" #include "efficient.h" namespace StreamCompaction { @@ -12,13 +13,68 @@ namespace StreamCompaction { return timer; } + __global__ void kernUpSweep(int pow2, int depth, int *dev_data) { + int index = threadIdx.x + (blockDim.x * blockIdx.x); + if (index >= pow2) return; + + int currSpacing = 1 << (depth + 1); + if (index % currSpacing == 0) { + dev_data[index + currSpacing - 1] += dev_data[index + (currSpacing >> 1) - 1]; + } + } + + __global__ void kernDownSweep(int pow2, int depth, int *dev_data) { + int index = threadIdx.x + (blockDim.x * blockIdx.x); + if (index >= pow2) return; + + int currSpacing = 1 << (depth + 1); + int halfSpacing = 1 << depth; + if (index % currSpacing == 0) { + int temp = dev_data[index + halfSpacing - 1]; + dev_data[index + halfSpacing - 1] = dev_data[index + currSpacing - 1]; + dev_data[index + currSpacing - 1] += temp; + } + } + + + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - // TODO - timer().endGpuTimer(); + int maxDepth = ilog2ceil(n); + int pow2 = 1 << maxDepth; + + int *dev_data; + cudaMalloc((void**)&dev_data, pow2 * sizeof(int)); + checkCUDAErrorFn("cudaMalloc failed on dev_data!"); + + cudaMemcpy(dev_data, idata, n * sizeof(int), cudaMemcpyHostToDevice); + + bool startedLocal = false; + if (!timer().getGpuTimerStarted()) { + timer().startGpuTimer(); + startedLocal = true; + } + + dim3 fullBlocksPerGrid((pow2 + blockSize - 1) / blockSize); + for (int d = 0; d <= maxDepth - 1; d++) { + kernUpSweep << > > (pow2, d, dev_data); + } + + cudaMemset(&dev_data[pow2 - 1], 0, sizeof(int)); + for (int d = maxDepth - 1; d >= 0; d--) { + kernDownSweep << > > (pow2, d, dev_data); + } + + if (startedLocal) { + timer().endGpuTimer(); + } + + cudaMemcpy(odata, dev_data, n * sizeof(int), cudaMemcpyDeviceToHost); + + cudaFree(dev_data); + checkCUDAErrorFn("cudaFree failed on dev_data!"); } /** @@ -31,10 +87,57 @@ namespace StreamCompaction { * @returns The number of elements remaining after compaction. */ int compact(int n, int *odata, const int *idata) { + + int* host_bools = new int[n]; + int out = 0; + + int* dev_odata; + int* dev_idata; + int* dev_bools; + int* dev_indices; + + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc failed on dev_odata!"); + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc failed on dev_idata!"); + cudaMalloc((void**)&dev_bools, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc failed on dev_bools!"); + cudaMalloc((void**)&dev_indices, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc failed on dev_indices!"); + + cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); + timer().startGpuTimer(); - // TODO + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + Common::kernMapToBoolean << > > (n, dev_bools, dev_idata); + + int maxDepth = ilog2ceil(n); + int pow2 = 1 << maxDepth; + + scan(n, dev_indices, dev_bools); + + Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_indices); + timer().endGpuTimer(); - return -1; + + cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(host_bools, dev_bools, n * sizeof(int), cudaMemcpyDeviceToHost); + for (int i = 0; i < n; i++) { + if (host_bools[i] == 1) { + out++; + } + } + + cudaFree(dev_odata); + checkCUDAErrorFn("cudaFree failed on dev_odata!"); + cudaFree(dev_idata); + checkCUDAErrorFn("cudaFree failed on dev_idata!"); + cudaFree(dev_bools); + checkCUDAErrorFn("cudaFree failed on dev_bools!"); + cudaFree(dev_indices); + checkCUDAErrorFn("cudaFree failed on dev_indices!"); + + return out; } } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 28efce4..ebc2ec4 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -54,7 +54,9 @@ namespace StreamCompaction { odata[0] = 0; // set ident cudaFree(dev_A); + checkCUDAErrorFn("cudaFree failed on dev_A!"); cudaFree(dev_B); + checkCUDAErrorFn("cudaFree failed on dev_B!"); } } } diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 1def45e..c07c32c 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -18,11 +18,30 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + int* dev_odata; + int* dev_idata; + + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc failed on dev_odata!"); + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc failed on dev_idata!"); + + thrust::host_vector host_thrust_odata(odata, odata + n); + thrust::device_vector dev_thrust_odata = (thrust::device_vector) host_thrust_odata; + thrust::host_vector host_thrust_idata(idata, idata + n); + thrust::device_vector dev_thrust_idata = (thrust::device_vector) host_thrust_idata; + timer().startGpuTimer(); - // TODO use `thrust::exclusive_scan` - // example: for device_vectors dv_in and dv_out: - // thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + thrust::exclusive_scan(dev_thrust_idata.begin(), dev_thrust_idata.end(), dev_thrust_odata.begin()); timer().endGpuTimer(); + + host_thrust_odata = (thrust::host_vector) dev_thrust_odata; + thrust::copy(host_thrust_odata.begin(), host_thrust_odata.end(), odata); + + cudaFree(dev_odata); + checkCUDAErrorFn("cudaFree failed on dev_odata!"); + cudaFree(dev_idata); + checkCUDAErrorFn("cudaFree failed on dev_idata!"); } } } From 289a176ebbecedd02bb8b73497cae345978bf202 Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Tue, 21 Sep 2021 15:10:41 -0400 Subject: [PATCH 4/9] Collect data in excel file and graph performance --- data.xlsx | Bin 0 -> 31734 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data.xlsx diff --git a/data.xlsx b/data.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9e61dfe6cff09c0da3dde3aa633165cb1d30e15c GIT binary patch literal 31734 zcmeFYQ;;ZKmn~X$?Xqp#wr$(Cwad0$wad0`+qP|2-Ti-mpBsI<`#j%=bMhfGBXULL z%9UeGj5(LQ6fg)f02lxS00001K$E;u%n~2~fIbue01^NMkd~00t+R=(v!1ety@`_! zt-Fmi{vQw^@;m^bzvKV!@qh3N45rM;4$#94--ve#B~w{8z(Nu<#sK@p{08CX7w>G+ z%n)|?eRbu~@QZ-Cxw>l5WNrEV!>8_Iap6LxC=u>fT{E%4fz=Qa-9p6zmBY)YO^!|@ zKmeVjktMEy1-~OFJ4ae?`4@e@c_0UspuJjF0d*c?ng)1C^<-6za9*x&Uv`{S9RM#z zG;M1m>2FAjQkGR~PiUvRY9Ys#KRs-++~&q(Q^&&@$xM4$v_%kyNq*>0kqN9pQG^FP z>Pf$5M!^oaAfJ+Z0A)6biiT6663F%j0!v51^enzDzV4^iO`7$LL#4QKQxTJrZ%|C| zg-!&>sR0Cw8d^=0$)}cIaD6*5JhX>_vC3Z1f@2>U-pKI$bGUZz8vH2#O!`L~say5t zPvD8b#Y682@PNzVaJKsAu7i7%)A3qCcfQT@-9*mW`wU^NEWs*Z5uF>h<)c;he98Y_<5}pjTbIG{8-J;R(xJaURye zcG%%^(XXEvtaB{j3gYYKZ@;qK*;&z8K z%RFr}EIwoaH3d!`c(Z@}rSs1ZFo693*BYqM6FvTgxb)wr(0{Fgo}-Di6CLfp&i~g6 z{2xsH|McmV2{Lkjtw6|)_-E+o%hFaHyr7hufOrRivhQz+O}M7$0%EMK9x`lrWz0Ze zF~2U~&+&~d?&$MTg6Dna%1A_HE}~|)s*u!o2N!TkQpXfghswP{1lOgfrRQ`pNe^<@ zu2{;7*3x{bu^l4Og*)Lo_!(L?Oh}|6>=0C*bbrlZ8I5hj*J{8eL8YszklGfuyz|7F zOuvfq%Ut8 z*{o4TLT1EQ#u>2@lDsEB%|_EbED zv-V+kD{V5IE52^HNC_<1Dk?Uws}!+fLl2m8mXN|#qS4Qbk}gJ>MRXG|BcYo~VK1pM zYU+YW{1}HakhH@R;5F2WZ8W+yjMh)Ng2HkG`%WH8%+_X_(FPa_kmMPgM? zPI{NpYSx?L8$4m*p*0oW=Kaq#v&9liLL53v@h@ra8)-sw;eJK~`mW^ysuBwF<=5&xM+s&-t&eX z^CPc!8^jiCGUOYUs1@x50@qcv8g8nu^>9P#$L#=tQe4y00&#S9coE&`1b?( z2vpMVbN53#M4FT}bz+`NF#izZf3}rE2t0I?4|1nV^Xz2qI6fyI&a)OHLe;P$7Ts&B zjDJSE-dW^-fx4tP)gN?ueLwmB=8g3X-j=NHdm!!#p_aL0I)q75xRmk)k`S0S zN_>Fe=`JRZK_VN4@!Bm8$&4~GLSB#AgNrjMamZS)`v4Bu^G#yf9CxGx2jyAR8T}et zhTVSV8jaA@#J1?v{NNLs>Vf&%hC`{f^nOXQ9#mkrEVIEgSE`+oXN!Xs=)z9zE`Z6j z{qRSv2e}GP@v8k2I#q(qibo?a7++vY-vd=whHp0HT+|B`NOPAp#h``Kx1Wzk*swLl zUx8Lg8@9!c;tV;)iqM$=E#InS(McafnNV9#@+F(yQIWc))m?EfoZd?WDr4X2W>C?c zefqV1>wVkIh4Bb})H64ofME;2E(*Y6 zL2PSjwv8{EQ_ zPTp?B9D*E_f-ur;<$kt$2SzT#Xy;8_(XZ!QI|pj|!rE6KOqzGzqa|jEeNzQ~;ApmL z_N?Q>hN^0o1E%pQD75&0;UnD-@Qg-^#A!Ovmlav2E+myR{ zxJE&$(wjCrEj0dg2QCyQ-`7?m>Id#Ua6B9M`pM(0LmCxbLrV`p5Y0L1O!(^T-t3g? zN5s2S)@YP?DeM;1zWUz1EqK>V4L1w2g9zF|Z*sC72B~jD4Oy3h&kcwdL>vCHoyu74 zgHZj5RTkSP9}hFEA0Z=PYe8?fAVw=X)*|tA6O1}d3w*Vq0{2=*?g>_!v~CvaZNmJm zJ|^2&WX-$$e#GX{Qb5hE$LWLWvdOr$T8%d{T($4ae#Kl z`ICvBfk@=)xY^4_`K>PQ>{z$YM*W7LqEqY8Cf%Lv;_oMyU@3@qFp@{zz$ji(50gR> z9RSWLQ_(SI{brK>)feeOV-Px08HXU_pUUj_2Z1!QjV=#Q@$#yJ7xTiQ=*bk@J;Z|$ zzw#6Wj|!N<+;v~TS;wDBGQZf*!{riKg7*01d#%PB){mtW6?Vh*TI41-NW0~iZyK{S zK}#L`{kuBUL_Vd#Jw1j-H5dJEL=yH7Ejgv@?Un9wHO(!vbOO7iId`8qNoB>Mx#3{T zvc=QGV?yk0KySA@NXjEhday={=$aood_7y94+}Z01+&z(Z7lHiBUs}J`*$+%-NhZ+ zzpTz*IQ;x1soKQs)5CN@?E{eFH77=)7v@(ruJBXOe`nyphNX9Xg^=1PMv5K#B?gx91&;311*lrvYfTnKl{(ctD7gWQf00)n{g&=dkrwoA(-Nz67Gd zimP6rBdd`>tEU=_19?%COn8u@a|S8iuJ-+1$kt(c2T(NZHuE~h5o6Xu!{ln^vLR7f zJ0fzOc!XNth+==x8G??uKEuFYRe3^0I8;ea(xx`>^46NE+S`GIRhd+aatPeDh(tJ~ zxxg1tJ;B}Xpy0S1waDtMT(cQ6TKbTp4ur_wUOkS?Kq#FQ^d6kWn!SV9NrkWoZ79?_ zn%qPtNtf1r8g0}%_ae5VIZ|_m>plSlfJ`5Xjo2G7OzNOYBs^tl6jD3VM2W1(~@ML^_e;ilyZCs7g42*eFZIjHQGYmkd=;w)PmQpU`iw$LF z7>jcQJ~@Tte`VJ44(t;g>gQJJb4FsA_N|o4hjizaEkWfVe6qi4Vw8yN3GCuL?jT>dT?-Kfv9$Hm=SZ{JMjBl`KrsQd#I=1~c#-}Es2a}`0@y?_V; znlH56!bNp7zv9tv-+#?+`R!!U&K?pM9t1?AHmRfF1QfzMQRV*FAegEi@lYi^5a(hB z1#2*k_qjW`aRQ0wc8Xy5MBmWZr94Flb8`RlivODP87oheiTsUYJ9+-M#*6VEiveB-_KR zfB%^r>v6IPp`3;Rk}%4BLYZXUCfx5!Th0_6Luw;}wfu<0cMoi5+xxSYo&3w#HA@R5 zXgSH<%!Un4Xuwrl5veq$tLUuQzde??2nL76 z+psl3cbLzwgcx*TymTFm|Cby`4_yyLWL&-fWA}F?JuxhcA8NIKP3dcUk~nMazM8rt z2{oSnG%e3gWci@q%ES@nRK0tB2F-#*2J%ZHAzgyRBZX#(NS27P#}C{NH6t+5znkQU zpbQzY;z6C~iS&J{j4N?KuwRhT9@DHFD++IFpgkv@jRpR717_4fJvFi_=xL>6|CAQD zt%Ih`Lw-m9Y-f$Janjl{1X{p_^Nx1M_YW-pZ6~!f>^9jEzp4CpWFC-31{mVHv1~d3 zb7usG`z9wY2_a40e!hGY#LLwYH_oP|{=BPmpVKn3@%?!F{WQJ5UtC;G#rl1nEX2;B zo$oKq`1yT(kbS#WZ4Q|Dbk4@r_^tW@4lye0Q^=( z*CvcK-wJd_Iy&_`Nl?QiiBLMdl1a8=ndJaC&D;%mI(%5Oeb|-p!IxjtK-+4x6SN*a zfI|!-d+5_?BF2@$`wNEvW)y<}1_V3Jy2=o>4mV7eyg*LMoC!bh_K@14eCjZ(`5;IU zlk{|p|530aFWgXO?GoHL(naY`LWqnyW+TUGvzhOD4iY(Qcfog~&&PqMx=l36Fk$vK*RGe9OoT=R7CqG5?scA;vp zLge++`6!KDarPpc*-14!#>C>eV1K3=M%m+{W|tYpUCeyRT-E~(utFrvXTc~zIqM60 z{3d&(lF67uTB5Rpp&hbNw_MXu69!T^i;87Tlg&|!#W`LeY@}&-V5@93eUh0u)I2V~ zQc*V@^Bhhx@HZgm8Ea=zl7@yqMG(u*hRNh*p zQ_4LlL`fmbx;ANKdLraevcaNDM3Kj~Hl{{48;V?e2s}X9 z5c6^^t$Z@P!u6qRs3`|z!|tj1o}5!Yy48%uH0;S8zN5X%rTf@xfY?m64vHT2?Gd>* ziVr(*M*J`11B^i;pSVFZTeaC)BaA{N+ZKPg2dw3D@NuRqf$H0 zCkLf4I|cQDcue!GqyekS<}^5>FcZ*+2nPv$#V|3&f1{s+3pSKUnl?!q~kB2{6i z`g0#14e>%bXP`DL?+W7SrKg`CvB^GeLdG z+83cmsCgBP1u};>rgs?)*J9oh-SoUu++0>Tg(aP{F(-@lpmmJj?2ag6{Ji4|qVObC zM@Cy&lPG3=zA_Q;CB2}joyJhTj6D>_nwXINjp3-ffZtG3k?h?S_mV(>31!Pais1z|9clgJag)Pf zugMbf6BQOse^{r4yQZu&^l4rmI;36t%*!Drw_k{6TVSVVR{MV;lm=M>Cw}4NuL)+l zFIcT+iPB0w>6g6*8{Nc@?Uv!!C;HHaP2%c85pspD1c;ZX z^5%6WFKTiKPMpWOaH4v4R;!kIK8q?;m}In1vLDJ>GgXKu{;?U?_HT)YnB`ngHo|7} zV2!>kxaMym`elJyH!4w`OF1)4be}*SDbqPa6-0}|v0a#%33bxUz}#7zenTikUN6e4 zdj+&9roEz19qFYDM(oklC#TpU~M}>f0f|hX~Zs_P*`5PQXY896mOA!ZTzL z_j8m1V+DV!wZF02oI7R>Z<;ej*gub*it_`V4qHDp;CvAw3;n=eW8AERTO4FvNEQ=c zbr&rS);2OmFL@?E=D>0#<8AK9?`BrH)*1P_1%VMU7*w{(c#u>#iBUr+6TU1yF=b6G zDRzJ?$2SiYETD}qWzc#RwoqCn`#2g3I{=5zPmgg$gajg|!5Z%V8pcnhnb9t%nB5U& z6i&$%{o#zMp5oGpJ#JGmpE_6aE7Xqb#$Ysjtb?LD4VSj(Jf_LMm?friD{q+Fa zt;csxTk{3IqKnot>n}A*e}O%{v@{W00;T5N<148>*AXzRT@9&Lkj}!VhQ9alroN+yK4EKdmC7tt(~Q8$)Nm3M~BEmQ4+c;F~@T>vp`>A4Ep zphfg+vAh63qUl@*Zee}+X>-l$dtSFeis+DRqjxX7a7eI88a4oD;DNgGR((xY_J}#Xxiq1u~d6 zCj3l%KWXl|Ct@20%-2W?lC5)~wR3h41v;2jb5;aT_D6yO3(a36q!>31WGkC>*)_oe z5_;!Dh)OVM;PkA>JO?#{RfN+6)sc-UV_rB8t&7ewrD8=g!}+BQgNgUg0-Abg-g1lY z9YF)E+H(d*S7l*|=GjEnOIlB%gS9B;Mhq1lQiH#(OdffyN?h?AmLX0~X+4B2lL7=I z6ly@lvK~bcG_UXLMwVcfAdQHth|{ilr($DRt%60HB(-6sf^tv9#4>~B+-PJ5-Oo7q zI5(&zNet_`9XqH0j;g?SCSF=v@X5r(u~F^Y8U;%&e{l25b~&yHi374wCXEKx;Va%aCYpy|42#VAZsP0QC{Y>! zP4;e3^H5MAV@YJ6D@)0)d-kvI3ZH9+JY4^ivOX_mYR|ouvNAwIbAv*&@3tZMrd3Qh zAw2j%AW}1>4%HOFzL4y^HM|hJw@mcwSm#9}vr%2!M{clNMwlpoW63CjJ?U_^(=)jf z&%xbH#Z4|W?14N8)&}S9mr}ohk4R<^&ah8Li-oY$zQ`sphc>f{6c#%vVH6TukqX|+ z>Vf5O88;_LBg1rN^+Q3T16U=V&7NlWEjJ(MdRepiZJGq&hQ)<(+Z=n75L!FI@|bAP zv>bZ$0_&(xDVb5h&as%-K_fe5?6j+Ft=L&A9LE{S_sB5ECaRUGA2g3QoV}^}RxCJo znE(+j!~qRO6B&!S_oJyWuv2x);RSomg*0{CV$f7aID6!%Zl}T?8!qID{N}2so(Y-* zW>qmilKgSU3r6VgDd>A4V#-S0vUZ705^P~iW*_GMYF@%=^dwCG#d&K5I0ZR3;IEkAkHb*eGHH z-HjsaV?>M=94trs75inpB#jE>I7oIs(O>d5HwUE!ImPX8^Z55?v4qaj4op3!J=Gd{ zrsLsE!K?Zw5=og!-g5GBk~AU887g=f;~4(yf0YO}h^PT#I2;|h?wrW{upJo*VdJXY zV!eX4I)|9AU*Fm4aHL{@^VGVSXo_TsT9`st=-&V_{u23fFav~$FfyXIWXA;Clxqy^ z79ZvqoBhbE)G0Jjh&c?0a1ww9>qFHa^-g;*3!9gGR7iuB`<$mKEEe%%SRlU}+Gs}e z+i0EKQAbYbz7TDLp{%&fCtlG`(M^r+>9r)TXg6MM$;9P_hN&R&=o0}9P6Q?GwZaIF3o6%2PYNFb~5Aw%<%02#nNWJ^e z;JanP0RV>a|J8i)k8bE}Zen9X_s{ts$?#HRDiVtgxd-i?55~#uljR_mWP5kUI&q8G zI6Dcusrgbtm5DK-6AKB5gyTt(ys#)$(2gf*o*x*t>oFFRxbX~cj%;d`sOpF~(^^u~ z6*f}ryQ`$+CCAtE!TD~!E6r0Z4Z1%eMXy`_o+m46HH~;7#m|bJoY`AWJShsn1k&~m zn)*{}BiGjv!Db9%WEJ>L*g8K2Pl98E5_Je7B)+xRl-+-aG-^b=pC}h~1RE!CI}Mep zNU;i?DB)E%z);@HhmnBj5;j@V&#SCcZjT{e5H^Z@N3Fb$B){%ppk6R6_*C&4hhY8Q zAcuhqci(INg&Yyl*Zhs->jbTZ4s}kIRQL!?L&!Gohp|ms-&=jo>He(GavmQdP}8eO z54co&`r#v=zB~RI} zHUtl*eOCm!Mu37>dmuF1w8ZRUB@bCoYhXp{N>{$+(Mn!e!m%}kHn_>st!*8}xc@W; zX&WX`peuo5Mj;Ni;!;sbTAh&XNHgl1kr&`MkRq|f{@4(V+$=^y?ENt)?Ru_Kcu-csHUBk~-!LeZmyzfr2^s^?|E1$eJMKcskz}iOv+y zoiIA+OZtmIB;GAh0?j*ijZ2tE2wT3MVY3CYx&OG< zr>-+9y$cV`IiNPuWSzTtwP`AxiHq~0EP1^HUCB9W7~QLd*GYZWfNA2SZBC6)KN;sz zvXW|aTIDHAAJ8PB+-jM^F%^Q!iOhFPj7>b19yJ(aIr!-&4#HqTWz2!^*M2L5x)^Ax;- zRRFg^2m}-i+Ezdq%D1*~c7>+(byDVPCMz5;vZ!hoQsQCs&`fwe*{9n$t{b2e7-+24 z-A58%&qulGf-Y~3$+T7agXZwl^OJyO zdZ)MlIO)y(X^vcH-4PQ(()9%BP=}zK4@l=+6gYk9hC(}8n&Se zv{0&K@u?=y&34t|h3~1dn?@=a`Pu@yfwU=>f(yEW-Y-F9U9%wFwRH74XZ1Px^VEDz zQHLWadK(lJ_oL@sk*=dqfpvipQ|zP@Bb1WH^vnd=Z0wddHMjfJ!-D0ln;&J_Vmz2M!7b_HY`V`^Jq8(D-lAnR)11b zrP)C)+qWi5h!#pBW~(=(Q}lrqcd$01MJ=>HO0BLK5;?Z7ZU!kBX!W7ONu1h=vg2S3 z@o8R3gEV?He#x-RbJ%}usMLPL^J*Ss@KfPsI>0+~jk+`T5m|(6p)2Ib;`#3>Roj1; z5AEPo60c$Rci~0Hb^&vquptzxtJ6_|$Atfm40Jr7V(`zbMTtLpbKBP+H(%+DnCD1} zA>xdbcm0!QoYT(|UOhP{M}>zjx0cbDe?iNgRu25!CAY0hqW^rs*JVbfE=$v>K z%5?}^aWAx3Pg!L9B}?O2ZAIJm3vtOqvU6|ICla`io+fvaQAVRvb|9jmL1Ckji5db% zZjtrX#zmB!=dPNJZ!~*S(}kb=Es-98hlG~l_m+(pa)(#P%$5&xgyvVU3KECR{PwA5^h&NUP1fU z!o@qFw!y53t3}Po3hnj55zSOELS&@0-XvPn-ur&H_L{fD4FZ1lN7HzohK;LbuxS$y zIY^gm!R+NSXRvOS)(x!ZR_z=%_iYyu?637DTlot%s3yl2EeJ~z6W;=jQt)I+uF@8) zue>jODkJ?P3LoQcfEUY-=6@^f|5f?+$p39!__xzZ5exv}Z{_Y^WjiNl4{H;rf63j2 zDmGRd^zh%jtA6nB*W<1S)R4^+^NaGQ!+AKD6^0YxrMgkXX4AvpAF{5x*qqICzTvVb z3r;gzPKxuHvQUji!;V#q*gC=J3@Yal6*3_`yeNGzL>HyyrLz$x?laWgV>>-kRU6RH zttOKMzvWp6v`#WW37R(my+9k0%)BLtXlQ9o(H@7rgOgBo{{veD!ESghYxrVY2 zueQ>yPjx;qmNoYf1v*?I5P^g|h+OA-kSv5`upa61W|y<7$`UEEO$KK0FSYC2*EqW= zzs>D*3L97Y0KO^(kPDK?NzpV9#1;q7zTk{|)>sLhb1eGcS$j?ujm$~v6& zx*^UPF{rZ-gLW`P@dDZ%Rf?NoD1chc3;b%d!|w`^z|wzj^%J&(*%EVLazqFhTXCLI(G){vAV)8%`HJG!Kx~~ErP)(10JVHhmZAr?^!}y)rnT7 zfwT+OVLM3z2VSqcheO@^QbRT%S z*{R?Tj%=z0!i97qf0o}rSWDfTGtJwXA)m!{${ks_H9`y)aKI7mGnO>#v-Zpe5kVZP zI5YN0MIHI{urdWbyy@3)^~^q`a}g6 zzmrmrt%4+MrKKZ(QS$ZUF%A7D-x%RY^-6CmSh>-G7Q<|X+}?GJ$B&~ET6zua^SQHk ziR|6?K3d-$+XZK+zB&pvMNR9>fn6s2`kOf|FLLMx<$M-)hU7ajMh^%$@WoZMk|tEE zSR_;`pJ2wyhs;IxJ%SlLPHl*Ri@;eER*(><%7d#c>+$ z*`#G=8g~9J!+&r5Ab1oArTWYJ*}oVygD-nrPy0ea z*DMqGDIf@PqR#78-oPF|m2E_zGWrUK8H}l2tmIpQpKlwVY7x(bA^=Xn#4=vfT9xy- z_ikbuoZ75AU=z-Ddj|cYSi_qYpj_wk{FedzFdq+iv^Mf{vdvjds{v{GqZC2`63cV;>BUxS~F#~M6 zITBL>))zB@AwKAWL*FC&_`Jbn`zdY8&|gkkoRa(W?MfcyEoiT^u7!y1dHTJ=w=kRm zt9K(Rw?huXIWcrV&Msg=5NV<&_8W%z0Q2-&^9}D5$ql^~r;M+bM@q1GX9cu3H9i|(kIgOU;JurxWe?5+ z;r{6aZ8J-42%b6ieo4lYJiqroszb5FCJ z2Jf;btRONGo0Tm?>A4Euf3vs$4lumKfo6ig4fWn!|1T4b{xb1zFUUWaeD5LPr@z0N=3nPR})gieY zd_G6cDO~HKANS|S&i3HJD<*@lMjpD=tb}gNLAdXf2LtY}iC0XsQf701r`P5@Y9Vah zHODl1XYgz@WAn^nzNG9^74TCG9AomSi)ZW9XXiR`BkqDb$^i~FWqN6N@Lx$Q77EK< zLn$+tVmzi6ljag=n_(8L%Gpba0n^lWtvO2s^b`WvT0{#=wg~B`#k|PDAV*RvzaRSO zQp@A!RC0ES|4@e>nJ>-k-zC{kI-XMg;Q%kE@-^Xd;1;?xRe|}v2}H^vCozt9*!VQS zHtXgrWGEfnmZ1_gdQT)p{bTuc@!h{&0m`lXR>bCJn+<-5QHQ= ziao>@z*aSWQ9k81S33bSCm9j%zDq%-&bt}eLmgcMx0835MGA)|ZIl!#GCNMlE1@wa zr!Ynb58T$^oDcem{Y?$gm3f*59~X>VD3An*7h=EgGTB+ruXO5FvRJaJa! zJ>P@{4`dD$K~#cYF{2PJL8-hD^dx+ckig6#0U1vx2Y~lwjLNPTUkHtV4 zq8okc&8=XgI<_wzifV^6-|kHh7dvNd5Xgj`Je8pSjBr*PR=cNo$N7&iHUtPTmP3n2z6NzLrED=WZ zVu)hxq-yVw3M1=S@80& zGh)ZPBFzKf{Q7r0@d+y=O5{>pJ$Tlqt=tla4E+}kAr=uQ;XWu=RX`_hD)y9Fusdo( zw3cqY#%|9QE_DSz%OkFy6cLqGxGPeVYH>#!xdwl`vt+5!HLa>dLR3(vE%l^`8PW)l zbYE(|ciXrZvuOTwmY}XcdJjAX77ry>*mxE1g#y0PEy z4b*#kfv;PI-{KJ2dzaWnG%3GU8+_PC?&=mV3Ifqc@7!Z5iuxEWG9tBxn0W0HF8A!l z@0};+Nji^5DcVP@qoVFWi}8=5a9dD;<(%8a9|V~qw*lK71KZs(HNo2K!aVowRtm2A(|{Guz7%I>EP(Z0j4p$DF+%KOUaG zx}B*=W)$^Rn-NU9m|$?h6T#YY+X_gl+#?SP(}kur)C4k6j-IzZc|{>e64`gx5qL%U z(`#`+$r(x$(}OwhPZ&nA)x)r%vlL%TfcG=t@WVi~UFg+}*{Whu*Fwy@4X4pFOV8A2 zpmvFN4`acF+=}k~QeJWgrqSkm%tY;~7KY`S1@fLnEq($TTj#rrj>l-t1>ngsW7l2H z5DP7jWv8ow_pF?O=9&Lx$1nGHT91>u06agu-;(jsN;a?7m#S9^X0e=rA7jxw~nE>-gyYh+}p5 zldFs=g*kpA3iqw6K^brI6pm(3e3@!Q|H(CIxK!tdIvq$2Nt#7(+aIiYzXG7>MtEE< z4@ASVZajEawc;nC&&p#%wqzBB1t?oi(XDy2^@oa^m7efslm-moA$xR#;9SnzM>oJy z67AY;1xucVSCFKG@zKiL?}SlKSm2;IYWrmA;u?}-=XpoF&Z6i~)l+ckmdAlimPaM< z4XHoh?NRX!Ut4x$pGFDA%{)n-otd-bB~#BjYUJ%BWGUp?t`&ZHk|hvF64y6>JD)T- z2wYWzMX_~`sn9PlqJ&fM;-WMH0oRu5!yH%4(;|%{hiYK_-pqduB_2fg2Uf~oo=A)ot@DDZmmDIEb}5*FWWi9tUvnr zo`jLt7qz{H7ln({D*9R^&lTTW>$dm?Dt)*IaJ>cs%i+j>l_6@q)V8Cj@}CRG8tz#1UJz-VMSfj?uJ*(8ydK!-p`7<1z*p zfKR^~R54Jj_l5~gy;RLyN+ z1qBUSvms6q)TOvon;A@LYZV9c>dl5I?}k;N`Wd0Mno8AL_~{8|FY$^rPu+0DS}AvZ z7VH(TXFf@_FM?vdFzI!NZE2_H^2autG$z;1BMI3mG07O%qH28u1h;A@rM1HJukN$q zebd{-O2Siix;s9togwj5pu6bSuT{yfR(A#ikGG(m!u|dqTa5oefXC2&N|iHwTh)td%Pf(7S8HT?&6MKniOp3v?4e%@ zy3zgvRxaSc!}N2~eYnLR6O4)aNzZdE>;;kO7Z8geQ&nRAO@+RwVI{30rg*+^AsrCH z2VsOc|EK&u=#f&-%GvYh5;b`y*or9vkO9 z%IP&~N~m7xyDSTl>)%ibzsjMw~DLr1O_fpIU#KBf%b#yZI6^oU|t& z0~W#8e3Kz-Y_4$Hc=daB%oibUz^fH<(f)+?WvXdg$CJUH!aGgJaGdZ?PEm=jSgF~|81+E@cK1k*K*=xOoJ1rc5E7=#Fn)hh;>zSU64 z=zuj;7zk%Wm_G9-P|DUk_m=4cjOHZpFr^=V1P5F+&ZMA{Qz0~XN0PMLf^}O))unE0 zDu`DdgaMPm@Zi3j!Q$I{qPT<*(7EPXnq$I*q90#IsF|;t>%ykyFZSdqhIH4e2~~V< zXyBHsss6k((_zfmyP)580e;@-L^^C8-gai9mJS!Q3JvHy=rh?D2WPn7t87?y2glMa zt!*TQESHOooBgD=x8&67khs&!>)DCD6l8?jf}Qb#ne1m}#IJ%y^G21AOeyf`9izac z^C6yu_=NbnqDY5RLEcs4lV0%Sdyx02^Y$(8ZZRYRxF3PQ9Xh&CH8pW1S9x5guwbK! zM`VfjNRz;6lq8;XINavwC9JArU)sP5=TTXTJc^>WkNia5s7ZDwvByNeV;IL|5v~}# z8Q}UgXbpBe-JtG717u8V8##wEunAnWA10PM&~pAd%EB)UD}zj_y4b zEz$w_`3l7f?;6-n^-eGn4h=H0stGbt_4)>uqlO)FfC_<{$*2ifw(#srI(D+MT#(LM zuGTDh&+_#8+XH^k=?DfrEivRkvc!NWfx)~hPN^{ReO<39z8~0vnq%z?wOg4SEkD1{7qH*mH5dIiVR}k2t0r#QL@pRpaLq@ z3`W>114*(11`*PYfy;koXKv|0SdIv2SyH3&1@9vUF1|qiJcKWD%APWswWbQBjwQ%mla9UM-blw^Z;>1MBf0FVJzwHPO4L$ zl0mO^mPVg1S3P3zN~+h|q|Dpu&0VG|qY+zqUldj-obB0T@6=ND$Bgq+#Ns2r5h~+7 z>;1YX{rYO~Sx9orZ2_yU9#VDCczSIJs9`|$+zN8hHs`v6F+)$6-CLr~YvC+#zxnLD z8dD1hwot6n^lS*cNjX-~%m%8(!ZzOtfNJ*x#AcyO=g=H79=3ftQK?L^$(1K^1Ivzr zrR&5|^uWUnlzej~J@Em~vpNIXyw5Kq@Fb=v!ucwMP?c@?`up$xn*W|7Vgqpwc*$^{zj3# zSC+iF5CLKz*T+TAn;$XVoSJyXCMkB4_%G3o*IldSklG6NmsKcWUKS`Ej|2h{#;ihR za`%H>tu-3D`p(_e0BD}zFa2G-VAuX(goG^rT_wj2=z&x5F-co~jTCf*^^84)CjD?r z%M>%~rl4{;BHl)+=R7O0u>O#&yHHJrKU1QOZ(+^obK|m+R9k^c@W^YKR%pt8>2j9S zu;bJ@(*r*lAz@lGA43ZT%ZfP)4n7MCa#1~^xG}kM=sjt>9vwTr&rs*#&nu$?&#@WK zhdVb-od2T(knol-P53KX{cG3Z|3r%n4(b>m;6m5-jq58zui(C~3FzY0(#WmUV+ z>KDL7S^x+;W21!1)6NR|0`Zn|mpRqdKsWJ#^mG)D*>v2}TeVd*7imby3xoZ%wSH~R zef^o8;q8T)0a!1(=zMD75l>_v4_2?o{nLb{T7)^5aeo}-J3&G$L+OYElEyN>)pGn^ zl$|0%)912Gj6*{Uk4Ld0h7gGC($2*W1Y;$(M)*P_QL)lphFP5Rn{FJC8kfY= zrL89V3`Q_`^e*8ceH|nQ%$T6~u&d#lfl`_SRb~cva;UWZPJUAY8l*J}#s%zPQ@}0! zP~WKFEW9J)UV*9x-hCT+8q?tbuFEcaQ!HN#BfT#;%jLTildj@H=56n~Z|@T@n+ z9MaZJuQ%%3bG=N%n9SSvFa^RoFZ;)E{gW%HUEYthwhVKApABbZSD5jn>n|i_T`yH5 zI_8NJ%b8yq;wL-t`AEi5n#`_Apw&n={bpubuxm<>kDsLRX^A=&j<;rrPAc+};=|A9 zNR+)L6`A=o&f0dZ#52=?UZ%_lZC``wg`Z=V->-LOMgV714dP}IYC5$yXJN1*a*~79 zMCZuAQ6u?DxTOyw@UA)5!3xGCdg-&u;1l<2wCw}{fA&Sesluvs>w9ns^Z~aTRXFO& z^LSBzxW!xg6bTbNd=-!2?j_YUT7jA8W>QM430#Eph70*&`8iI#J+Z{~O*vkwPW$#J z?)e{ae6~&}NeTl15Tx{91DSv5|8ERyZ`f{#Bl_s+|M*i)4#2pI-1#CH!dkCQgIo}c zUQPmiEdSADTHhMc!Zn}qYcp_BX2l^es5C?=Lf@|^7`@VGgd)BCw6LADF$R3PQ}EUHWZ6VBM^ zC~r2+7Oq?&nqESwzx3KF#Zl-_V9qkuZGRZClLmj{_Xo5_TG52DWXS=uR4sPXy8}IU z6#5h*Gm9)zh%VX#iXF=V!&r4{ByW31FFu(8ay=Kr<@PD)I<8((8r%`iS1k-v2Hqpk zmZpsV(=6odrav2fgv*e=i&a`fN7y*vSw^22S7|p@yS?NebHM;BUbd!jm8B)8@BMe< z+ZGUvJ80DUu!u;lZ#L+_iaF@N7IdNGL3&Ja7)@XdtIue=out{#Z009YxhCd26G9i%(9V$n9bkn+^F+T@t#*QLSVfK_EMYH|J~ji0 zf{&mhW^fh@OC=e`u?4cM+yFTuTNd0I`}pBygO<)>c*@;{Gvx%fmXK3@&&2DMHEHDE zts1{cCsb?gt?+iO6Ui@a1QgV#WcvKV(P$Fr-JjaxvBO;jrg8NTabn*m!G1OSH+L+;3QsgbtkV%}vq{{S2 z?;zPMYxPn8rWTHD(NcgTRLGe90hgpt+hAcsJYzo0<(E={k+FCp1(}R2 zxs_3BHg3{lG&E@#4``9-VKsr}y&-O5(n65-aS&WHCBIcXd42;1?5f7}>ug`xzRY$r z@j4H*1LQYs{VZw_@k$z!A_ebQLQ(4Haaur$IRQ1)r=~Ck7YLgKb%#`HmN9@8ypT~f z@@*!^tuLR&Hm^Eeob%?Rs0kb3)J$OXHZn{3YtQ{6{mZ{RM8V(;xn-Fhz0n_)e zwX=f=1=IKQz#JTBiH<_Vi4oA;kQMbR`t3Lrd_tExJ!o!%BNO^|)bPno@mBqC_3fqS#nOVaNG;S^~u5=Ka%-nQOImpRHuK#E}AiCpaM zqroG$JK|v0kuzofFylj&;NM|IeZQv#9hTBi{T>=me*pMz{ieeAoG4FXji7QF3o8C7 zC^xoKW{8N?RQypW%2 zD?k2dLSrt7wv}|WSDsp)Y}O>9ISsM&w6!uKAwf^E#0qH;36+Yd>siK4H8wbC*Y!DyV^87@AvIH+4{iOo*zE_yroo(s2ll+!*~z13M@9XZ&s`hVK{%BZTg zsBIdgyHjb9?ruc7Q@XpPL%JI&X{5UwN$D;Dkq+q+5Cq;M-h1($>wWJxzMt=q{bP?a z&R7q7&b9X1dp>8*XF84fl@b>lgK%^ip?axJs6qyRQ=vn=%L^*E5WDL;{dimGWXYMA zliXH%L&qXCZbITeC~wP0^>z_g1BL__-ojKqz9y%~MZCu4l*N{0KbuwB0|_gKSF5HI zl9Ird@%GAAZ#Qr;mollyTEimS3X+snjiHt6tY+XAS46GpptL)GX(kR=qaj*Mvqe5D zpuDN6xct)*mrs|f^sMi&_N_**{AaYbT=RKM)2!l1BM%DGEPgr-7@T>5uF0;x#<-4FFD=#r^4uZ~gjR~ZO5I${jCP7l%vCIE zQF*1NCs^}qH6G#6St9k8JTfVUV{*jCP8e>@=_yy1Q6;AkGc#iy%tB+rSA6-3QPab~ z$k)8Wor|Q4;l(sls!B^7o2Z_s*C`a#P-rg;gFm*FfSCLQA`V5f@O!j5>={C4Sfpe} z`~4RR6V8`7iRi%uNp>gVx`9T!tQakm%OJ+4Y^rD6M(416x_whi+bn!MF4n0{-UZ47 zsxp#rgio8|tnR2#h^R4`YL!DprXjDm z7a`DVzR6V*^xrJl)S%D65>kr_Ll&}UL(Zl&6Aw;oCWcT>?`yCC4ku}v2X)fA$?XmOEv-7tjwWsK`wLKZMW9@ZN)o-1Q2}pxL z(w%&n4Lhy1SZV&$S%ZY@T(Uvo-PKEL|AN2+jeDF9X#a40%bdr&{Lmns5tEA=4}nmpaaOyD$C<{~SEY3ib5yw&|mRP7DC zb6M}Cm;AHGL)DW>RK;U?e%dGt{-)cGk3hXK$!8rkx^_8UHeQLhuu!0X>bqrRd00QZl(c>g{!xf%uge%s<_o{#L^yAW zwg2>JZlT&}*g{Z&$Py{i!CrNwMX8k2-V|F;audA4L5DWo%e%h)gL`U{4` z7VAa}8gM?*L!JIFh$nIJcRL%Jvmsn_Wn$<9j5{q~L~{n@n-Y>Y+Hw~2#G%Q~7c}ug zs^4_q@pxyt5bJC?8zb>ieF|+UobT*SfJ^o@+h6;*TpDW&%uV^!(!8DB;?tONYBEuE|5%uTLS_mhoao1 z)}q&q+TLm;+-VLxtqPYfTRminXbN z5wA`)tiUh5GUMQsp(Mv~WF2INRZ=~DeZaa#^?3G;KEygEL!W4B_gN&8Ca)Wm=jaUQ zP|ykNyM=CuL`7DXJ!9CtYnfLE5jU0Ur8Mv}6%=Hxk`>s|S#JP20#~i6{toe^aOm3A zjb_Sa#cZSMUHkpIr5t#baJZ8Yr(v4siQOw#+c+t-C))?Hl%)BVDDhP=qXr5Sa7q)B zBCihNUrT^`KJreGxb-SpB?Z+E_Q6x*91@b@D;RM14K37YTOjsThBP8U?+TZHY-5am zfWRikBJrHdM0krGl7@=z(KSWqpsIlMSJ0w)uCeN6rJiqx#zn@&=2CmlJP;lyZa8@5 zQqQ(Sj6pyIA^E84WTH|qqDd3Xph*w#gyfuZNL(Vs3G+w>CwaPA9C7uNd!~zL5508U zmKkf7(4kAr{t(+^u&rX@sua_ns`$!B?&LXE>bTs!=dDYZ~_wH_d;tYHta?=p0 zY9SThpoE#^+jm#P%9AP@{sQOJayW?Ch?bL(juPt?egnIpGr<={6^Az);j-NmCYCTS zLC+G7P+PQCqqXDX5n%k|>J2^N#Q1_SCU=%H)%H7{=||u^k$4@-#_~>|J)ffk{cV1P znP}{!fp1KEeX~cG8dN5t(qy<5`iEgyhBA;NEQFpqUlFidYvjf^8xo&<_?9`~C(vY8 zx9d*pQbmX<_AlU^pwqs>(yNDUjC({dvfdqc6%)Z{Fw)Zp!ZJf#g)38S!!snR^pW;a z7Jwb14zQ$t#BUYwzQuCv*chal=|M>J^`*iORH~w}>(bGJOGmFFRRociS~|v8euU!| zO^Z7~AX@f9pT2UVBvs}$-N9g{u z^@U+UAx}87wbzeg1(tBoEiP#W*;0ASWd`Z|CSSG&^d^qUKn41+k@hfapS)TWtCS~VHG5Xww zHN{_F9$*+I0LL?GN;w|Uh8fEXFMI0wZaO>BrJp<@7bkFwP3cQr^d9PV%9`3Rcer*D z=`40#xvR0oy4L8+c%|ygcD`7>Byu!br94-eSpv~e8=Ozfx4tw+!n&$g*F#kvo@~|P zBZcm4RbO=3xHzka#*`X+ko*8>GVdY|=~d zye&n&`LGpT%RpJ|XT8 zD+ed*Oqicihw>qyqrc&1GCVM~$Kg{HQoF|CX>)7HM-vWWE z$xOgqf%|$N9yBD&B0=vWRv||`voUaso#3J_dRvb>#cJ-lCVG2iH)WS0=f&;00FtJI zXLA<7%5-Ws?5Hq8tqiBJ9KaPs6$fSZE>xEr`l-FP$Xiq80_g?ixUxdlbp(klrboiB z+uAN&v>7WdC$rs7fyR91zV$Bm6n9s-GdPR0;t=VaL6bCGEoI*^JV4OBdm02pGa-gA zm@=>QbKtaOi$6;5lvI~3F2)kHX>GrGQp*0qFg!v|FqUcCv``F%m0wa+*ki3mC%Nyw zh?zwaLMibeyYAv^f3~5HHd5(FBYBC>zcK(O1C8x^v!Mr(T3ss5pY&L`jP}UubGl8< z`Dv>(E;eX+$n43%nXm6Uyf8SHaw$W|MByiH)e zKWNX&45Kl1fvR&|#q%baXDNhLpO-Guc7MJjrsyq^_$M9+@v<31#ffsm7!GJkPJu_< zo(p$M5J?1?>%)nGs4yA!FQa-)l->!-VlHHKdAqwB%llFvxc;h{fsa)3&xV*i6RFO5#>02;t zVPrpLQiBzS`p{)r25!T}t7LVQo^XB%qZifwNhR;!V^5PF+BLsHx!m=OhW zW@_T-=yK5|)l@t}vy)kb_OWjC!q6NGG4hj3H6YZRTad?jY+9+W2ws`X^hyaiZYA2I|usTy24`EWf`(Dtg!7uZ*wF9|Y26El0u=UVR&cj_XrZFvsafoK~!LbT*P? zh{=i5PUVHc(dgf9*&qc+oHwL`Y@bm=OqedZ_IRDp6omv%+OpB^&U-By=R8ZV_dmHFi&G@E^)}2~3C@!>7s8*qEu4*oOMD=A zJXvc<^v~}-F17-{GiB}QEmLyuRzc|X0DCM^h}=a@D`{0ts!c7^Ix zyQ;+7w$}+8AUAGgr`*^U)i7O}hvb z(yMggSX}atuykXverskJCecrj%$kr--cs)k;-=(NAAN?rrN8b2_a;uM=9YxS!rB%6 zIOW+f$QIBSwCKiJov}-wihuL}L!tb5gZ@pS{H9QTQz*YFl>ZA9%KeV^n?m`ELcu66 z;%Nos;?V#ycb@#n$@{K_{fCb64{_`VHRF3}Z2zcXSU`rJ|Do?8^11bd8*)sZw#X6n z7tjR5YdKXc9T8}7lw$uXnhU{VP|0;_8 zG4nr{#{RX9) zry#%>+Gj$cP+jP&rW?^&48Iz?h)VHh*8RXZ?OM~mbqumom0;Yam%p6spEvLNJSC6n zGQxZ)z367Op-qm|tK6bn%z?+CcDX(+sSE?+rhegD(6tziW*AZNr&ha5fb_vX?*s{h z9sh2C8%qCcEj-)_EzzTZeE>cP;1W6e`ZP3=Zfh)*mI04fV@BS#7LtlRt*wwK=nyvP zLZ~M^N>5DbKEw`GTb6cmgNGskwhP?O$`L`OINAPp zb7f|3!tN$zPv$Pkgpv`3r3B!giXtfRQGBDNNj4PpyimIxed6s}5JiCncp3hM6Ho@+ zNGAVlO*}ZDB)ZbP8_*Z!LTIVO)F#!CGB?#hILp?;-4kSmGK6!1DS?yDM#qF|c)T)) z^!D(2e8mM$`vq0lnrWtmh8+6SD7q1-wvj_w`pmbw_~QMb7mAJ6FE;+S$_vldWKwDnYNfJxXe~L7X1-10z#ffZp(VB5AtH*zI?0=g z9-<2=il@Zg1Te+fACi4z0?~Tha5$kAcakWi-g~8l*e=z{CV4YwE-_5Ijzy1l5l+37 znD*#J95Kculr-QZj>@T~sokwps;TbZc+IwBoTBl3Hp1ye&A<%9QIul5sTjlIa}H!ueX z;@v65DUn1ueeG}7Uo!XW(PV1)rbFkpZWGMK*~ z8{Q-fcR`!K)USX@Fgq6oIMf7?<&FaA$6;t=AZKr53n-emu{ZkeQ9uhS(BEx1KtRG{ z60{w^LAFvb<^4(+0IKbLt092zO|Gf6}Y;AupJ;3hv$6sokpv?jUe83_2IT8FK zUgMk`yiZBCH2YbF9%!nQiFBR;NtI!6NzC4CRGs|n93r^Wldpv7{PI;zytRD0Bw1lu z$g{;-hRBvBS{&%BW_KGqaedKJ1>sSkuy#=B^;b9CwUU*7B8UuY!LI^LgPS7aP4P?- z%G3}`rWk7j8>FFecIVYyg3ogU1nkqc*imI5vV3=n-hlVSH+=r=EnI90&FAqcgBxmQ zr);;SI`A_7>PPXLR4BRGt$kOz`V->4OUtkmBX7sL{0! z&U;Snj<@&Z+QB3Vs5OXuvH~YiDcouKe$qP`n!M? zD;`?{U0RGkl@XvwY z&xn9W-H#XI`$s(RK;Xt`4?~#&GAVyF#rd;M8t~x1cVl`O3eYnGD5(Gj|M!fwiH45rAcq9uUrG?-Blr4}Xpffl+|9a2`;U0fFd4 zp!E=90V4os_B|jJaQ=+&PzVi-09L?Pgb0x$#E8NXZ* zz{O7wD0V`ByO8f{LBB-!cW3m={ETq#j9()ByE9S%C0RdB$h|Xu2?3mH^I*n+(%&Gy zn{gi!0K4Fe&o@_{j7g@UK<(FBA>%6#^3-4}ef+KYQ($vrjpF=<3(SMI@9>#)zgjoXu qNZ>dJc=+F6PJbQ_ZTHjgKVDVkBq0H$4hRS#;6Mfx3y(Q`|MWkX4! literal 0 HcmV?d00001 From a1ddc9c2b20119c6f4267d9e65031847c83d666b Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Tue, 21 Sep 2021 17:50:29 -0400 Subject: [PATCH 5/9] Add screenshots of graphs for README --- img/blocks.PNG | Bin 0 -> 28733 bytes img/compaction.PNG | Bin 0 -> 29496 bytes img/scan.PNG | Bin 0 -> 35317 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/blocks.PNG create mode 100644 img/compaction.PNG create mode 100644 img/scan.PNG diff --git a/img/blocks.PNG b/img/blocks.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ab9f3cf60a647e54a23e6d1028959767659a6836 GIT binary patch literal 28733 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 literal 0 HcmV?d00001 diff --git a/img/compaction.PNG b/img/compaction.PNG new file mode 100644 index 0000000000000000000000000000000000000000..056e6d2e38c657d9229003589cf3b767085a1ba8 GIT binary patch literal 29496 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 literal 0 HcmV?d00001 diff --git a/img/scan.PNG b/img/scan.PNG new file mode 100644 index 0000000000000000000000000000000000000000..688940f4adab95d75469781e7b4fe81a66612a45 GIT binary patch literal 35317 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

    5)lKm3#|{UI}ABoD)AW9VYKemInfk_ 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 a5QvSLG^l%&HzY2AFGX1unG$J(PyY)t_ncM$ literal 0 HcmV?d00001 From 6bf6883e88085e424fc73c1a690d034543eb1063 Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Tue, 21 Sep 2021 17:51:27 -0400 Subject: [PATCH 6/9] update blockSize and number of elements to be processed --- src/main.cpp | 2 +- stream_compaction/common.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b181b38..8029832 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,7 +13,7 @@ #include #include "testing_helpers.hpp" -const int SIZE = 1 << 26; // feel free to change the size of array +const int SIZE = 1 << 17; // 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/common.h b/stream_compaction/common.h index 3482860..3624d0a 100644 --- a/stream_compaction/common.h +++ b/stream_compaction/common.h @@ -12,7 +12,7 @@ #define FILENAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #define checkCUDAError(msg) checkCUDAErrorFn(msg, FILENAME, __LINE__) -#define blockSize 512 +#define blockSize 128 /** * Check for CUDA errors; print and exit if there was a problem. From 59c6594916b4f28385ac13f41cd5a540c217e936 Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Tue, 21 Sep 2021 17:52:02 -0400 Subject: [PATCH 7/9] update README to include overview and performance analysis --- README.md | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 141 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0e38ddb..943b319 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,147 @@ CUDA Stream Compaction **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 2** -* (TODO) YOUR NAME HERE - * (TODO) [LinkedIn](), [personal website](), [twitter](), etc. -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +* Stephen Lee + * [LinkedIn](https://www.linkedin.com/in/stephen-lee-bb5a40163/) +* Tested on: Windows 10, i7-9750H @2.60GHz, RTX 2060 6GB (personal laptop) -### (TODO: Your README) +# Project Overview +The goal of this project was to analyze the performance of some useful algorithms. These `scan`, which computes a prefix sum on an input array. More can be read about prefix sums [here](https://en.wikipedia.org/wiki/Prefix_sum), as well as more information on the algorithms presented in this project. We then iterated on this scan implementation, creating a serial CPU algorithm, a naive parallel GPU algorithm, and a work-efficient parallel GPU algorithm. We then applied `scan` to compute other useful array operations such as `compaction` which is described in more detail [here](https://stackoverflow.com/questions/34059753/cuda-stream-compaction-algorithm). -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +### Features +* CPU `scan` and `copmaction` +* Naive GPU implementation of `scan` +* Work-efficient GPU implementation of `scan` and `compaction` +* Wrapper for testing Thrust's `scan` implementation + +# Performance Analysis +Performance was measured using provided GPU and CPU timing classes, which could accurately time each algorithm's runtime in milliseconds (ms). Performance analysis began by determining the optimal block size for which testing should be done. In all the graphs that will be presented, a few abbreviations were made to make the graphs more readable. These are as follows: + +* WE = work-efficient +* POT = input size that is a power of 2 +* NPOT = input size that is not a power of 2 + + +### Finding an optimal block size +Block size refers to the number of threads defined in a block of threads in the launch paramters for the GPU parallel algorithms implemented. As such, only the GPU algorithms implemented in this project (naive and work-efficient) were tested here. A fixed input size of ~64,000,000 elements was used as a reasonably large input that would be conducive to using a CPU. Performance was measured for blocks whose sizes corresponded powers of 2 to work well with the underlying hardware in the range of 4 threads to 1024 threads in a block. The results are summarized in the graph below: + + + +From this analysis, it was found that a block size of 128 threads per block made the most sense for all of our GPU algorithms on this test setup. + +### Comparing scan algorithms +Once an optimal block size was determined, this was used to collect data on how the naive and work-efficient GPU implementations measured up to both the CPU version and the Thrust library which its own GPU implementation. The results for `scan` are summarized in the graph below: + + + +It was found that input sizes below 1,000,000 elements tended to favor the CPU implementation as opposed to any of the GPU implementations. This is pretty sensible since the benefits of GPU programming are really only seen as input sizes get really large and we can leverage more parallel computations. As such, I have only plotted data for input sizes above 1,000,000 since smaller inputs were not particularly interesting. The naive implementation of `scan` tended to perform better than the work-efficient implementation up until 32,000,000 elements, at which point the work-efficient method took over. In both cases, Thrust's implementation is far superior saving much more time than either of my implementations. + +This difference in performance can likely be attributed to a memory I/O bottleneck since both the naive and work-efficient implementations are doing many reads and writes to global memory, and there aren't really any other computations that are being done to cover up this latency. Regarding the differences observed between the naive implementation and the work-efficient implementation, this is likely due to the asymptotic behavior of the implementations, where the naive implementation has fewer serial operations for smaller input sizes than the work-efficient version. + +### Comparing compaction algorithms +After analyzing the performance of `scan`, the `compaction` algorithm was used as an application of what we had just implemented. In this case, we compare the perfomance of a purely CPU-inspired approach, a CPU approach that uses `scan` as a intermediate computation, and a GPU approach that uses our work-efficient implementation. Like with the scan implementation, we didn't really see the GPU pull ahead of the CPU until 1,000,000 elements were added into the array, so the graph below starts at this point. + + + +Here we see some similar trends, where the difference between the CPU versions and the work-efficient GPU version increased with increasing input size (e.g. the difference between the lines got bigger with larger inputs). Since this algorithm is largely an extension of `scan` with a few extra computations, it makes sense that we see a very similar trend here. + +Here's a sample output with 131072 elements to be processed: +``` +**************** +** SCAN TESTS ** +**************** + [ 8 20 33 38 32 34 23 5 38 7 22 39 15 ... 24 0 ] +==== cpu scan, power-of-two ==== + elapsed time: 0.1906ms (std::chrono Measured) + [ 0 8 28 61 99 131 165 188 193 231 238 260 299 ... 3206154 3206178 ] +==== cpu scan, non-power-of-two ==== + elapsed time: 0.1897ms (std::chrono Measured) + [ 0 8 28 61 99 131 165 188 193 231 238 260 299 ... 3206075 3206103 ] + passed +==== naive scan, power-of-two ==== + elapsed time: 0.346464ms (CUDA Measured) + [ 0 8 28 61 99 131 165 188 193 231 238 260 299 ... 3206154 3206178 ] + passed +==== naive scan, non-power-of-two ==== + elapsed time: 0.249376ms (CUDA Measured) + [ 0 8 28 61 99 131 165 188 193 231 238 260 299 ... 0 0 ] + passed +==== work-efficient scan, power-of-two ==== + elapsed time: 0.535904ms (CUDA Measured) + [ 0 8 28 61 99 131 165 188 193 231 238 260 299 ... 3206154 3206178 ] + passed +==== work-efficient scan, non-power-of-two ==== + elapsed time: 0.49104ms (CUDA Measured) + [ 0 8 28 61 99 131 165 188 193 231 238 260 299 ... 3206075 3206103 ] + passed +==== thrust scan, power-of-two ==== + elapsed time: 0.4896ms (CUDA Measured) + [ 0 8 28 61 99 131 165 188 193 231 238 260 299 ... 3206154 3206178 ] + passed +==== thrust scan, non-power-of-two ==== + elapsed time: 0.416352ms (CUDA Measured) + [ 0 8 28 61 99 131 165 188 193 231 238 260 299 ... 3206075 3206103 ] + passed + +***************************** +** STREAM COMPACTION TESTS ** +***************************** + [ 2 2 1 2 2 0 1 3 0 1 0 3 1 ... 0 0 ] +==== cpu compact without scan, power-of-two ==== + elapsed time: 0.3009ms (std::chrono Measured) + [ 2 2 1 2 2 1 3 1 3 1 2 3 3 ... 2 3 ] + passed +==== cpu compact without scan, non-power-of-two ==== + elapsed time: 0.2984ms (std::chrono Measured) + [ 2 2 1 2 2 1 3 1 3 1 2 3 3 ... 2 3 ] + passed +==== cpu compact with scan ==== + elapsed time: 0.7242ms (std::chrono Measured) + [ 2 2 1 2 2 1 3 1 3 1 2 3 3 ... 2 3 ] + passed +==== work-efficient compact, power-of-two ==== + elapsed time: 0.915008ms (CUDA Measured) + [ 2 2 1 2 2 1 3 1 3 1 2 3 3 ... 2 3 ] + passed +==== work-efficient compact, non-power-of-two ==== + elapsed time: 0.89984ms (CUDA Measured) + [ 2 2 1 2 2 1 3 1 3 1 2 3 3 ... 2 3 ] + passed +``` + +# Bloopers +The greatest issue that I ran into while working on this project was related to the down-sweep on my work-efficient scan. The bounds on my loop controlling the down sweep kernel invocations had been wrong intially: + +``` +cudaMemset(&dev_data[pow2 - 1], 0, sizeof(int)); +for (int d = maxDepth; d >= 0; d--) { // this should be d = maxDepth - 1 instead + kernDownSweep << > > (pow2, d, dev_data); +} +``` +This caused illegal memory accesses in the kernel, which I found surprising since I didn't find out about the error until the kernels had finished and I went to free the memory. I had actually not checked for errors after I freed initially, so the problem would spill over into the next call's malloc. Even weirder, when I ran the code in the NSight debugger, it would set an automatic breakpoint in the kernel and would be able to properly calculate the result. I'm not really sure why this happened, but there's definitely something that I'm missing about this. + +Here's the output: +``` +**************** +** SCAN TESTS ** +**************** + [ 34 24 8 17 15 39 31 25 19 9 26 19 26 ... 8 0 ] +==== cpu scan, power-of-two ==== + elapsed time: 0.7537ms (std::chrono Measured) + [ 0 34 58 66 83 98 137 168 193 212 221 247 266 ... 12833463 12833471 ] +==== cpu scan, non-power-of-two ==== + elapsed time: 0.7565ms (std::chrono Measured) + [ 0 34 58 66 83 98 137 168 193 212 221 247 266 ... 12833421 12833452 ] + passed +==== naive scan, power-of-two ==== + elapsed time: 0.510144ms (CUDA Measured) + [ 0 34 58 66 83 98 137 168 193 212 221 247 266 ... 12833463 12833471 ] + passed +==== naive scan, non-power-of-two ==== + elapsed time: 0.507712ms (CUDA Measured) + [ 0 34 58 66 83 98 137 168 193 212 221 247 266 ... 0 0 ] + passed +==== work-efficient scan, power-of-two ==== +CUDA error: cudaFree failed on dev_data!: an illegal memory access was encountered +``` From d6c3d921729314cd5d9352132fd89eaad7ec0c05 Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Tue, 21 Sep 2021 17:57:29 -0400 Subject: [PATCH 8/9] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 943b319..8ad68f1 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ CUDA Stream Compaction The goal of this project was to analyze the performance of some useful algorithms. These `scan`, which computes a prefix sum on an input array. More can be read about prefix sums [here](https://en.wikipedia.org/wiki/Prefix_sum), as well as more information on the algorithms presented in this project. We then iterated on this scan implementation, creating a serial CPU algorithm, a naive parallel GPU algorithm, and a work-efficient parallel GPU algorithm. We then applied `scan` to compute other useful array operations such as `compaction` which is described in more detail [here](https://stackoverflow.com/questions/34059753/cuda-stream-compaction-algorithm). ### Features -* CPU `scan` and `copmaction` +* CPU `scan` and `compaction` * Naive GPU implementation of `scan` * Work-efficient GPU implementation of `scan` and `compaction` * Wrapper for testing Thrust's `scan` implementation From 84b59fbbb942653d1fa2dd8cbe9acada8bb45e6c Mon Sep 17 00:00:00 2001 From: Stephen Lee Date: Tue, 21 Sep 2021 18:32:18 -0400 Subject: [PATCH 9/9] update data --- data.xlsx | Bin 31734 -> 37017 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data.xlsx b/data.xlsx index 9e61dfe6cff09c0da3dde3aa633165cb1d30e15c..70717522a38106379cc9c9a6110e5ba9b9d2f967 100644 GIT binary patch delta 17559 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 YG_7UwxoRmsB?cu16;1|*_;!#Y0N6GcMgRZ+ delta 14167 zcmZX5WmFx_(k^V=-8Sy-?he5rxVyVcfC&V5*jR809$bS3cXtbJ3GM^}+`Q+z>wf2) z+qKqA|ETWO-Br~yRZrFDLeTvKG@-f@3@k1bJQN}n6ci;?v$|%&A~Y0~8FD=#H3*ni z?dL!px_H+qoyP3Yh=xSjlmG)He1sK|c-Pr%kR{{(@$AgK5uK8!rKWnodUfgPIjH_* zVg5wB1cGs?X8>t*=d(Z}wAZ%B7yJ_nstk*Riu(|eg<}G+6A69h4hgm0}GT?Nn@K$8pGt$0~rw9N#t)d z1Vdc$KoFjI%lVt0JS0ze`>GLODw+t1x72g&DI6!4#YjfkkrYKxBNb{3$zMYVWMCI_ zMCtrJCw>t>16@Ot2<>kKZ~6X0w%6xW?+@Q8^1RA-*9A+X@iTpAQ6IArLOtCexp+U^ zQBFduZ3+oZeU02hbCS;!67r^j6-&Joy*&k!bw~54+--6$++=~8KTYlh3Os`#^+LFf zOt7>tz)s_!b~X$Y)ZkyaWBe7ppA);UtB0e7tE(fMpR?0fZDZGBAWcocw|jdz_BPTbZDn6M78x{v;fy&7LHL=3Z}kpsk45!zUA7na9C9Sr`~j>EJ*5s zvkLed%+8lS?Bm#!8rejhqobb1%-Xf)eJ#uiq3v8y)jzta=v>tm-bJC@bC#_CI!v~ggPtY z>#3e~?~OTRALr%zpdXz=Bfrxf;q-TbmK1JG4-Aa7o#(x$-1@Gk|PH!6xh-^vjsZ@L)CDaJOq@9F64Lu-EnB^)C3MSYkjpu&G$n zdqdL|!J=}-y^orzajFymQjnaogxnyCc9$|F;Lwkte%LOJ$d0qL#9d3+!AP<$bI)0; ze})O&2~OqS81rC9fD>IX9(fsELfgC-9*Hq9AhGW>covtQ{EqsviGf$=5crVlG@v2i zP~l8&r&%|t&Yy%P*+r7kU5uIyxIBm8H^82Sr+=t>kv`T$%1I_*C?1>V{=5UHr-j*K zA+%unNix$<)rN=-+01P&8Ef6ehGH2-BXh`wBu*&ekT}M89Io=mS6<`K19;=QYpKEX zGh5n9=WHg+eqW|`AfO6?t!_?jlbJj8&C9^c7Ga`WgoC!R!lZ?T-iV}XK;1v7x)Z-4 zTe2S)Bvr!;)+=<>`@Bcwg1IIK#cNOF;$XW;q13pdNu)#m`S{JQ*_cuGWm&17g)@UY z;RY}8=6r-}2t>0Q?h4v!wX$T7VntwRx8#Yy4NJ!w?soM1xpD>1pu*)ENK@5k8eBIE zXY;_<+YnAy@awywyaUOFa5ci7hwX~(z44u#Z$y8eo%PE zNZ;xuL{w3KmzGv^?_BBQ?-Pfl!(r3nIp6fw{b~M7+I8JmY_m^0H-h)(!GJpH8j@wn zIf`;WBK54N@p!QD_Qh5uWDV^GAb)>))*%KyaWA>EA@Pgwr=s|J3`@=o!)fQUE9qq% z!mL!-`D0)&_i`~^Y03~2T|O6M+#Fq^mVO-BN+X)sqOR|Jh8FiJq^R$Ai~vVX6$ zPEjZ*LMX^g6d1@!RdLK(HJ_G6k>7#GpB){Mp#NK*M>pC0A<+xG3=GZ5cSG-Fk=aw1X1`HgGQt~o~oFGgxMghWc~F?^K=w81;@ zTbqG@>I4{GtbB3|VZ)YE{cN52F{Jx_jNapvC$wHF0o6@k@LlfscybS$t|P5*hBQ(m zQ)2M*5j}&Dq!*jb0!vm*u9xyCviKLIUTx@w=I3cTVCgG@*L-nGtq`K(?ZSet)Z=Kf z#hnaGewK!`C(@LllJW*xw56B~i34RcaPwp3Yw!~2YJ%U{zaz#bHH6%Dzs7RVpz#9u zH6gX-z+-#rJHEPIT|Ez47IL#GHqouv$^l?`{D5h)!LK2UbzUJ0_W?r1o}zHeXiz4b zBWvaVhOx!M1WoFrO*wgj%|7~vGjI3OW(VQ8bsOP^PA=Ug_%ecfTr$keO8X&v`96VP zCHi7Jgm@+Xz1sOc%xSbl|09m-Cobl^-}Vo!K-@iP)T|wfC%$tWy=Tg|N{vCs zcGpv1@5hNjA6rTY&$~iDe$ks>)`MuD>fx>^-1SPqWYW%rr9!gteR~N`c~_~2z5a7bspv^hvIh+`}bTA4)_!kKQHBNhx%&XEqf33)II`m#j|QBF~Ld&DlmB$DW7xqkC`$E=r|~ zH+Pd9oyvBSBx&|JQ26a=?ZN!6X8$IGGuHS0NX z_cYfwxKJ^lZ%-fo3l8{RDo#qx>4bx#*$t;`B4MA6x?*o|i$2mf-zL(UlMchaY6)z; zF=D?kD+VILneu}H9CLNeXs2iK3xt7kIbUPDJRy37-ypAPCoehL#>S$Om>n09s+3iI z6I0n%W2C)bEcx(W-&NArSayAx0}ab3wZ5lQr$#K9IA_wE$}+^MhRZEdp9a7>SQ>(D z{C@F$HASw<#c=9&wy|_xe=od)B?`(#oKtIU6IT(FX^30}@YDC`hx{@M1B51nOlr7F zSq0KMf=7Cm%6Catp-H&w+~4~*w8!LMyuaDPu#|Wh>*orS{X-VU`lBv4XP8U6Y}39- zq~A$BkAid(maZZg9=zJLVLeP#$mx8tAY(bFx6VKxU1sCrLa@ry2Y!&$NhyrKUyvy^ zc}XHDb7DvVm~{|0u*`%Rv9Di)7~(QIeoYK0fjgzlK%zDUj>^#06|?$+ao`lfL8<|& zV0ke3-ABS-2vUt@%GPNiLfaVbHaOKpIw3;1vQkPk(;u@Zu&9cXt4vq;G;_J~=tfSJ zeW{5V>^0<5hq|XF_F^k#xafTf3|S9GnJ1dGNpTked*5R`vf(vgmF+hVIIiT#u_@k}RdQ%(jj-i5F7i!tPBYWP z{h+q9yhtA1uApdu1hGX;keMJ;2}dr6zN^d-E9gvHFc6d)|CQ)1gdfmZqf-%ZFQ-vu zoz*@eu&?ICUG)x9$yfat7LvH(EAhiTz*#PvhU*tMWF!1xVyg6l0WK%X_Gfe)i+0y zLHdUB8LeTm-|Hks73D^t)~dyrtTfCC_(GqMTzwU<4F7F-ltb~S`lvhanM$CYhlH=~ z*VWG0#~+A9F#};0D_nc2^%F$3R4UO+@5U#cXcXo5aMi@;K;e=`6iVi8XHoOz)vC86 zk!bxG6cQXnXVf^bYWjT9eveTS%m!KQYVUJ9;w+!W4z3&1Gw>FV|62Cmyw{1;p83(B$yLF-J2(g?>1$<*TF zcw!l{Zs7M|MWfk{&>^E5B;DfAyyCiqJI{BX7Gd4mt(_`13rE5!?YgD$?07AY!7nK* zMV}U{F~)eF$bPOD39tqIa13Yd228)xwH(8FSN*VV0arl1YBk?h_u*~TZeiL}1P_MWt6fHpgHARH*D>v3` zP5`3GgIo^Yh%fJk_7i9J4;!Q6WSBSs6DWBS<=HB>um!?%`GQb@dMe*t1duVqoU${h zxfb&sV2qE*wS4+O9u1Z;)tY5_JZ!{hW3g)So{%YyjX)Bv8Ya_ii|S=Gy6crPYecJ} z&pV7Pj};gw#4u1}%{!7mF>k^~C(9K8N?toVqAvIJgMxz!^KIc{zz%n?$t{+}RT|}~^ zsiw(17n@8>;ByR@YgRNuQwqyJl9$g8SMz068SwilC@!?lqDX7eAmY(E^_Q!P!i#2c zaXu)UoYYyT_s0l)M&*q!kn4R|6_u#M+a0i-NXb#>TcRUSeL|o*j@mtR@b)jjJEDDhMQI&0LR1$vDA2k$LMjC<#~ztMuzMkVnsGn0%8f>fJ+D zvb-A*iF77jVM9)GDDO`EV~|>drfpxEit)2;R{U;6*|G2~)9si%*8xlPzAeii-tK2b zLeKo4W4k={>nZBA*KPmccTJ;m1r()dxO`96!Cp-Y<)J75{gZj^O>wb`1GQVeDwBZ8 z&wq9nJ==n`zgCpKHm79cCh{YFxu2Hx0*`gqcU|hYVJX$P%)kw$Z0)2Ta&wHpe45vf zq4~s}C2I6T;|KlhCOxAdwSjIG8R}5MMavk0)cu*xfV56>cRyQgU$w}n8-_46XVNQl z%|7!W*=!(;bSNmR)n3MPS9SwN(1=G{iCBP+Dh`LgM4S9!WzS)#LPQ9*iE}Eu=B60p z4*!+hdB>ppQbb&6t)j*5GE)J1-TuVt+pIvdG(kJ%(x}|`DK*0QdA^aLa(c_+twVYF zy(R&s#3>)uI{BX&7=k}(Ux$YTH}D;802I+c3^%~W?nfemNQERd8{!@-V>3OkUEr;a z42)+@`u>SP?TIo=(n8o|N3=lfh)Ji$4nG;vk^06;fT=ZsJGi=30!RI@yd41X9 z!~)<&d~F4X!+ka&OqBcHC^B8aU2VGm=jpLsX^rFF%=;3OKV080?dp^b%Z+B>`FK?U+Y!yr4D8@N?mEhTIP1fOm6tGx4CZ9W~=V+l;*4lDxflk z*{5`(%V`_-73hdfZ5e3rJ3Bg~sijf&kd*<(*664(_{2oH606F_zt-GRP?5l$*hKD* z{ahY%lr%+Shh^txspv-F4o^8U|4ixwdccaL&s#wpC86WB6{(=xj-&78!j6|3s3bs7 ze6dOvE_9~}5>9jUzWA6QD0kZE5MKf<+nMcA#KU%40y zW)LBW)_GeS$mYn|+n`jLU4XdIWsCNvLD*Qs!={U_+-S}DRxrNFQ67o8w_=)|(*0k+ zLl{^`p#*3_%zbfBYndvT0yU z$B^Cc!p@PmGa0v)ZT{j$7U1?p$|uJfa}tEeK;3!1BKGM!puLF=s^F+{pC+2zCQiGg ze0y~cs*w#yDS;A#hE#~z)M@`pdg`WOC9MN;u3)T%*4#MFN)jzDmO=SmzX~7vDWZb> zF>#k0O0?1}VcP>AQC8tMI5XF$7NTA4w_FMBzY!Y8Z};0_Z5~~%@$++(!rAS8v%j_@ zW9eI@wK3vjd1N$=bFowv!;v>9VV|Y7q2zn8l^hgDDc%o0a7!*2NOPMsVv0ofG!z09 zcRAWM{VQ7u9%p>MVEYxA^~hYJ3Wcs*4QpQxy36Dxu!Fq3;iVBX<*eP-EefILICAD1 zpBU2`d#aAP9!<2(>sPdsb?wJvL#eJ~jGL}2-MTlz6`IkGt|BFi1!xVNOAyZL^R(oy zOocFV&o!^*CK1U4H+e`4=QoZkB$EMG?-t|k+7?fhUWbE82(tfd14EZeh$1^fdUnA( zK3Sqk@q+x?p!JvAmR3T9o{g1?8?XN8kk6FgrWe0q1?0I^3d0_u{u=b>Rzqtjfg;Ma zx?a=58DX^S_O^+}BV&BIV5O3yQsGpnK4_ygT`Ay%C|#S#E5g6xO&%Otn8*r& z>g6ea)o2j$uNsj9I_v)^P>`wp8}#p7(9mJ2gf{3aQ+0dL$_vzZW+oTJ z9EisDiW2wuU*C;8=*HLyTlFO&JyE74a+VLfl_ z7>5&_5SAQuHgwTn&bp_=!|BI>oVnX6VMED^v&zUdPZDke{evPhxIUuhL7ItQk9hg1j6jTtH{Q2HjEu`82eRPw!^N7+*ASZTka`I`q@Qc- zigc(@P+^bef|fH?3e|E{FLABI|-78Rj2!sN>y!d-LA*qdB)4ALCyYEu zbM~1N7y%dTYR@KWqeKd&G>SL@GabeL7e}+EZ`V|W@VWqvB>@VyI$S)>Zw`TDW6l;r zba;O^S<95FpP_Vqd`gX(92+(_y*$+9vwkFKs4AZDMad?!P`^XrEwJeho>%!U${O_v zXZCpXhIq^y2#Del`%(9Gcc|D6QM~B6&zlJ&CDRXo##KmyF{~^P3T850Fe)|TITSSe z%Fi9sJ*0u6PkBqkmwiz*p867y*Jl*{%#v{{#j-sfr8<)4CwC5!IKoM69$r4+E8uyBVaJjSzm0 z81F$dZ^z8Wj;Jx{pIN=~!sXq}?QV)ic2c2^V*Eh!nD*kL=j-m1)nzLz(G?1QLsU$x z;VVDNr>a>LuADFP9XHCO?}rE^M+tiEGY?MV_D^%H3WU3czkTc)%-2s17CD|}0I`M@ zz?&rKziU(zJ+PF+N9g*~pJLTimP8}LX%lCCFqyeya%4%<&tOXsc)V-VtAu|<^yaE) zdocrK|G}v=06%eKbs-OK9Z0f6SGl*0_c_)XrIu_< z8fNgrXqGc^-ZP4grj%s-Im`?#v!i4|{$n7+C=AQ5z|x_Vkz)nrh$(GZgL|1Rcp^9p%JScphQpyT_wQ%z+S7y!{z4BUE)Irpd93Px0U;+>9GKx=6ce&G_>|+zXAuMkhd( zb~ZwMH5>C&5k3|huH4+O#qlBaW3f!SvM?sqtaNv7I z6V5mMQ%fSsYF|72V^m4+$0;fI#Y}wQrs?<%O5zfjjNb8NI!d%e&gUwwD$>wuYG=xl zm94ER($-qYt;zDym_I!&(OmEn>iC&%$}c4RE6vlY^;Rn-T@T*~A0<3(Uo)F!PbKUe zL-IVra8|fd`<9LO++C=oI0F}WqKTH_EsTtv^Ukv~3|!>>7W4iE_Cxi`o)}(c<>7NP z0Z(zfi=u~{*5uMeivca`afCyFi=!niEn&I?aYUnRq*6?s$Re*u+1WF#;A6tCfbKKh z?@MGER_4bXWgBbz%~Qq-q@_pY?atNRl=!WbaXPW6T#QJclvos){Bufy(@IK~pRB`P zs`72`(}|iUwuVZ7+V9mbwkGC6x=ViVz0OA4->Mnyty~(<^9}E9Ir_|es-~#2ffDGq z#tzn-(}j!rqr-;&RvKCBDEBsUv+-Kt<0M#G{JFdOg^fpQ)|N7CT*FO_@yide0U{+B z)zMBPwW)Z}Prk|ThR2N(I4j~+3B({M7By<>gJU3d<9vN`Ge3#=QNoZ}>0;nm!W8T;BK z%8bzE?xW*gcxga_rPNMUaCLy6z4fn3TL&G-W^7UA#W~)xW&+)m_+-sxgKyyB zCt`+qIKl{>CFC@KIdmfW4(TDBRl+4QZe)zlULI%0@8^6Ui864bNHg89<;^0jPk8Y< z=eMD3?D%wVg{|+A#mq()wvKtkMEqQG+JSQIFTmSosr`Jn-OK7o{8Vl1YV z2Onk;gT1_LR7M8{tajc=o7+8RePmRmBrGB+=G8UEN5uZc)_UAZO^hV>1YJmeb-{bm zzgXlc|8fpTt_hQ|rg08SP|r{V`q{=@3uIi0h_-ZjqH>8}hj6zt;{NL->a)9~%*Yaa z6fW%<#q~Hkg@=C{tLHrgNtqhp9ro0<=$cOs&xOS>oA)k4UNrhq@4)J7Kq+*u)b{@S zlebG)dBnLuZU^~g*SDH(G_mwHi}JjkWpv4AL-4_QWJy4{hP6JW)=)x$nYC$>WjERR6ZM4vJLhobnzP+~$#vEFn`_`(N8!Y+6ZQes;RVx+ zpWG3m)^B=a6w^M4sR9--uP&3n&p?cGA3-rxMTXZm&TiLI|0l;rWMDSr|%;J8F$SCUS_U?9rj?+F5`D28&{~+U`oE0ki19^;J^-{$3$L)B*eDFX^ z;TDyEwvQM(WO={Eu2sjKY1a!3L(_U>kM&L{8R~UXR^G$$T&W14{=Qc}!awd8>Q~`a znj?ews=ShcK$mB0FL9Hj`cN3nweZk8+x6i|RxcaXw`O=gSmPblMB{uWW7SOQCljpo zFuP+fBxnGiZrRIVz!afB^AG(bTmSYGuhf2)xw{`B-5Cav2}nSDms|32)SAiqcqqz% z>=~iD3iTzMk_`-Ke7pkXjzR=O`-=ssTK#h#GY0HVvMrms&McZ*y?vaKZ_hFe7V{Zx z$e!yzsIP=nV46nZ;{P_svKepARMcn8o0W3iHt%^W)t7wwQ-dW%tU@)gMc)vo*%}9v zCo@8wG|#o66JUi^liqD2$0E`Z-DAkBA`35~n2TtzLU#a^FMS`@O`uwJrerg**-3SD ze9z7rdSvZ%(K@-6x&I8aAw_=LZ-b+HC$2dcC;HVTY;n4zLT@_Z$})$aTU8`TCt9>3 zNZ4OLFBiVmQ#G}#@)oti_fw^o=OZGoLt`Zk8L7s7@|={YR62RErk@LwsO>VWXwRLT z5dMxF&Z-_Tu-J}pEIf(T#82eY(qA0YAkg&!K6HhYyDi~IFxsd#>?~JG1Eb{=qpXk@^iTIc_@84UFtt@cB*| z_wy*ub+V-wZgj&Yo6MB>59p4|!^l7=*Aa6zcnxmA3x04fzBUw^vt2F)dB6N4`%`8| ztG|@sqvP_|TrP$8qkr<1*7!cVDr4M|IHla}TdZ46I__Jq8=! z&WHUP%>6*_mlJGPMjvy*o;5;h*dm4}S_WMR@w8tj}qN7zUULIp@H~d45oa)kFCsjAewM?|K z`e7*|{hD{^8Nb-&fw%QWH|!b!tMCRCt{0-(;DN2W$XhaKCBoLvtEy3P05`S0%0}L{OFB^fq04;eA1+1bKL@&c{lA~I{;vy%rvU&?P zoB(lGUaVA#YXhQuV~$lFN%fPxfS@V^9g!FBI5)DE?oHY`?;a!7a<&ERK0e2YY|g-K z0*0Yz0DRE&lHf$-HS+iM0oV*pUY=7MkLU3(_4?J!s7rP9v|UPdgh_?jPEC7H zT{&T%sWd3KCXL_hwQH&XzG?mbvr)5Z0pfZT@I35Itl@pez|PY#Q5MVf@p%dZO_>u` zY6If5<@-4ltvMx`j~A$E3eZ7FK)S+faOExyv`JJ5v7X?Bl&VESW5+eszX?Ba6AFt}1UG-$Z$>aKYX$SWqM z3bywqH?(OUQjVqWS*1ZTYv!?GL(qP~GxO-$WYnf@%~6FYOfW2C=05ax3^oKewZsjd z9Bc|k7|Xo0CFnXTr?zR~XNHcvHSvn%$i^8H-8fA~Qdk2lf@EwA1RqJ-_$7Tw?=*Eh zvk&6b2Ig#?5WS&q(=V|*jdqhvQd7|o!yv6zK`3%!QF!yewhHvldf!>Z6HzOq#qjZb zx8N@m=*9g~7H=<`GH)50+|$|-*slj)fUY$k=Zw2DiOf+0bxD9W*b*uOdUe74mVKbG z86vhVfI0`@sO}!O+_dD#P|%+}p!gu<{zhikk3E4K$ii zD#}||B-%(s0ZA<2g#`vw$vrocRh@5v`4qR~^wvOXZ+B+rHJkB%-MD4vSfMPUrzWLL zpud>}0q6H$6UucTY~lcrTisg+PJgMkGG#xQ&-zeZwz1LZ>L!(N2?CK|^y3U`AEEtOp=>)=8 z`eeXPu_@;%w?<#p)r%ne5B%7?!DU`@KJ*ZjanqMjN2O%IO8r%rNo8YPi8i@kLz%6m z&2*ohCmI5S_!{M>Dn9Tv+?nwS2{um5ezwia3b7Sja=MovcWG~3v}#3#_iY&6^(Fpe z2*>e#oRR3K?Jzy{^M)uH9QQo2f4jd&utmPXz5gY`mZV44H;?pUvujQJURIi&G2R@Y zDd`K-Px+MJ)D)w!wJ@}O>1%6UxB-y)9qNgrC0j?IO$oL8Tll8$#y zvQ9XPjbHC2Fbq9|Itu@8Gmj~NFfkS&Gs^dwDgL{J#Hz@G;q}H^t514qj-`9LLQuod z0#DAEW?oPURqPlfEl0=IKU`<3YH8h$vk>s#eK`7Fasxim?u#lEth>Ot=P;y+)5|*Z ziVK(gFt7*(Wtg5U7R69n{WD@wsWS{~ctN?}4UD&iVAnkAkePM1K8cD}97O=wbuUUK z(>s64OpK*6`sSnl&uJttV@P3r4WxbU7wdUKwH4x7_h ztsQPwdww*O9e~_T^qf8eSRAnx{oRiL!ez1vUwtr;=+nC!)m9=i%Okv z_}iswl%q&*hU%EqXI^l74PIGgOA7*mLM^=q` zG=5}&oi7~y8=5_Nq+o#|k*S#wTV_)o5{|p-4}=hxZ^3wmGeETUC-odlGV|4S4I(PL zdJ9dM`Vy{>TA2AmtDatlck7jeS0n9HP_t*&CgGphVZ*&8HXpznNY8WAF`t8X>*w|+WFsWw{JWt;I-(jKNwhW2c4%bZMn|@?^IF)%}io;p-n; z?AJkC)HB9~bJWq_fD&ccx_fjfS}yLj-scY}crvz97V7>+a7^4<6}`m)5zL}fpo+J6 zg~6xO8k|o#EZ8IRBQivLE?5d(?VO zbhjJwT%!GN){@^O0uSp7c^^E8`w-|WNPSGyl0NvJb{gD^Y^9xT`d`V@XLb*_tvO4s z(RNgz-T(pXw=;1HD|BAhduGv!3B^!&oJAj1Xq$oXqTlb1jm;r4RY?qSoe((qEGw!1Zvklopi+i~$ zl2GPexf2xcP(jN(j5j6?UjesaXCgH&M{VS{GOiPXs@!i`YP|!iQ}>%k^YFR146j_bJN^k@OC$bw0LA~RA;Ukeh0t6fLPuO!vUjFCjdBwH?7DB2`(KrBLLN}WG zBEljmSpEtd_?z}v4YBd30J#2v6WKhhojf~}rjh$NP$MrwFVsC+b8%z_TnMl_#{xgj zSOad3N}7XRU2s^qu&#Mh*w-&&4a^sN6fU@JzB>KyZ74>-x(_XjZZ+t!Xov}RjwCs> zXgHjygMlr=vmZH0-IqV$M_cGi6BKVT4VD&T=?kgxIfDu0;wsP-s;}+XR#L_qovQnU zVPY^!1(v{l^;42s5Vg_ot2Ook(jRPVs8=6pr9PueD@&lV%A&m&qyNLg{Mkw}=t1vw zni}vgPoyWn_@B&buRsbAT-vX^18T_XM=k(mB>!Y)$i7fTNmJ%xlVUA7aJ*A6N2F?@ zY}%eh><>6n5U~=S7Ei3nlRvDHqS(}xtRgBKC71YU8!qVgyRyTlN|zri-M21?vTK+{ z1;Oj-wnG-{&!dC=osUT_n@8RrhC(&A_!)~GZ1YA;COvmwM!w7(6 zP7J3;)LGZlSw@OYFdh2={upWM2L^ct4F8I}1`FS#t&{X4sd3N3gKsm}Mt1&eO(Fya zc_^%iX#XGaBK|kwA^tbfBK{{K9srcqjVz&j(4bLNh}9<{Kpt0b zIMqzMnnIqw&dy|G%i2iOgxHU_8GcW(E`**@>D$z7ub>KN%O9we)e+%T0^jE3iQmPm zmXnY4>oBUjelfHHbeWcIa1j9%McnT%p)0;CFG9l(tB1fIu+U-kem6moTN7vZ8XI9$ z@}29R7d+2o^`_e|0%{Sla+%MF~B*J4o>NT;uYqb2l8Mg_Ep;3KDINcZKGy1G94ug3ZjJIM~j30FhF#p1wrG?kd$aTlK;j1|9j?J7RXKv9^_{< zJ4l-y@{t1{!V$v+Di?$p#Ylks#UObx^d$ca_x|_j3h}?AnMnR0*rxf9NB!^3T?#@U zD*+l+h1manWobgHV(Cf#(*gf?_A#x$?zjX9)eO=cM+Zra1%rNALFyCfA*AtO5Sk6d z)t44x63+xevHja6hLptffROAU>+xzJczXy-0w>A;yO93Yu2KK{%usj^5J!JvNNNHP z2MMe+&_FhTJAnk^H0VvVR$D|03R4|G^OJ0^v#$ Z1tGXY+>^lQWKd*Kn19QtW<394`akoWd>8-#