From bd4da5d9437a027c7e02d2269326e4359a597659 Mon Sep 17 00:00:00 2001 From: Jason Li Date: Mon, 18 Sep 2023 02:07:23 -0400 Subject: [PATCH 1/3] Parts 1 and 2 finished --- stream_compaction/cpu.cu | 45 +++++++++++++++++--- stream_compaction/naive.cu | 87 +++++++++++++++++++++++++++++++++++++- 2 files changed, 126 insertions(+), 6 deletions(-) diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 719fa11..94bb4d4 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -12,6 +12,15 @@ namespace StreamCompaction { return timer; } + void scan_impl(int n, int* odata, const int* idata) + { + odata[0] = 0; + for (int i = 1; i < n; i++) + { + odata[i] = idata[i - 1] + odata[i - 1]; + } + } + /** * CPU scan (prefix sum). * For performance analysis, this is supposed to be a simple for loop. @@ -19,7 +28,7 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + scan_impl(n, odata, idata); timer().endCpuTimer(); } @@ -30,9 +39,19 @@ namespace StreamCompaction { */ int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + int output_index = 0; + int curr_data; + for (int i = 0; i < n; i++) + { + curr_data = idata[i]; + if (curr_data != 0) + { + odata[output_index] = curr_data; + output_index++; + } + } timer().endCpuTimer(); - return -1; + return output_index; } /** @@ -42,9 +61,25 @@ namespace StreamCompaction { */ int compactWithScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + int *temp = new int[n]; + for (int i = 0; i < n; i++) + { + temp[i] = idata[i] != 0 ? 1 : 0; + } + int* scan_result = new int[n]; + scan_impl(n, scan_result, temp); + + int final_index = 0; + for (int i = 0; i < n; i++) + { + if (temp[i] == 1) + { + final_index = scan_result[i]; + odata[final_index] = idata[i]; + } + } timer().endCpuTimer(); - return -1; + return final_index + 1; } } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 4308876..0afa2e7 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -3,6 +3,8 @@ #include "common.h" #include "naive.h" +#define block_size 128 + namespace StreamCompaction { namespace Naive { using StreamCompaction::Common::PerformanceTimer; @@ -12,14 +14,97 @@ namespace StreamCompaction { return timer; } // TODO: __global__ + __global__ void kern_scan_global(int d, int n, const int* idata, int* odata) + { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + int offset = (1 << (d - 1)); + if (index >= offset) + { + odata[index] = idata[index - offset] + idata[index]; + } + else + { + odata[index] = idata[index]; + } + } + + __global__ void kern_inclusive_to_exclusive(int n, const int* idata, int* odata) + { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + if (index == 0) + { + odata[index] = 0; + } + else + { + odata[index] = idata[index - 1]; + } + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + int *dev_idata; + int* dev_odata; + dim3 full_blocks_per_grid((n + block_size - 1) / block_size); + + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc dev_idata failed!"); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc dev_odata failed!"); + + cudaMemcpy(dev_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + checkCUDAErrorFn("cudaMemcpy dev_idata failed!"); + timer().startGpuTimer(); - // TODO + + for (int i = 0; i < ilog2ceil(n); i++) + { + kern_scan_global <<>> (i + 1, n, dev_idata, dev_odata); + std::swap(dev_idata, dev_odata); + } + kern_inclusive_to_exclusive <<>> (n, dev_idata, dev_odata); + timer().endGpuTimer(); + cudaMemcpy(odata, dev_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); + checkCUDAErrorFn("cudaMemcpy dev_odata failed!"); + + cudaFree(dev_idata); + checkCUDAErrorFn("cudaFree dev_idata failed!"); + cudaFree(dev_odata); + checkCUDAErrorFn("cudaFree dev_odata failed!"); + } + + + + //__global__ void scan(float* g_odata, float* g_idata, int n) { + // extern __shared__ float temp[]; // allocated on invocation + // int thid = threadIdx.x; + // int pout = 0, pin = 1; // Load input into shared memory. // This is exclusive scan, so shift right by one // and set first element to 0 + // temp[pout * n + thid] = (thid > 0) ? g_idata[thid - 1] : 0; + // __syncthreads(); + // for (int offset = 1; offset < n; offset *= 2) + // { + // pout = 1 - pout; // swap double buffer indices + // pin = 1 - pout; + // if (thid >= offset) + // temp[pout * n + thid] += temp[pin * n + thid - offset]; + // else + // temp[pout * n + thid] = temp[pin * n + thid]; + // __syncthreads(); + // } + // g_odata[thid] = temp[pout * n + thid]; // write output + //} } } From 2826a49ec82639aa040247f55ed24f4ff774030c Mon Sep 17 00:00:00 2001 From: Jason Li Date: Tue, 19 Sep 2023 14:36:18 -0400 Subject: [PATCH 2/3] Implementation finished --- src/main.cpp | 2 +- stream_compaction/common.cu | 17 +++- stream_compaction/efficient.cu | 141 ++++++++++++++++++++++++++++++++- stream_compaction/naive.cu | 22 +---- stream_compaction/thrust.cu | 7 +- 5 files changed, 159 insertions(+), 30 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 896ac2b..d4a3150 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 << 25; // 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.cu b/stream_compaction/common.cu index 2ed6d63..9bb4a2d 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -23,7 +23,12 @@ namespace StreamCompaction { * which map to 0 will be removed, and elements which map to 1 will be kept. */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { - // TODO + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= n) + { + return; + } + bools[index] = (idata[index] == 0) ? 0 : 1; } /** @@ -32,7 +37,15 @@ 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] == 1) + { + odata[indices[index]] = idata[index]; + } } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 2db346e..ac22fdb 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -3,22 +3,96 @@ #include "common.h" #include "efficient.h" +#define block_size 512 + namespace StreamCompaction { namespace Efficient { using StreamCompaction::Common::PerformanceTimer; + using StreamCompaction::Common::kernMapToBoolean; + using StreamCompaction::Common::kernScatter; + PerformanceTimer& timer() { static PerformanceTimer timer; return timer; } + __global__ void kern_scan_up_sweep(int d, int n, int *data) + { + /* Memory access errors occur when using int or long on large array sizes + This is most likely due to overflow when converting threadIdx to 1D + And further multiplying by 2^d, this is done to iterate by 2^(d+1) */ + unsigned long long index = threadIdx.x + (blockIdx.x * blockDim.x); + index <<= (d + 1); + if (index >= n) + { + return; + } + data[index + (1 << (d + 1)) - 1] += data[index + (1 << d) - 1]; + } + + __global__ void kern_scan_down_sweep(int d, int n, int* data) + { + unsigned long long index = threadIdx.x + (blockIdx.x * blockDim.x); + index <<= (d + 1); + if (index >= n) + { + return; + } + int temp = data[index + (1 << d) - 1]; + data[index + (1 << d) - 1] = data[index + (1 << (d + 1)) - 1]; + data[index + (1 << (d + 1)) - 1] += temp; + } + + __global__ void kern_add_padding_zeros(int n, int full_data_size, int* data) + { + int index = threadIdx.x + (blockIdx.x * blockDim.x); + if (index >= full_data_size || index < n) + { + return; + } + data[index] = 0; + } + + /** * 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 n_ceil_log_2 = ilog2ceil(n); + int full_data_size = (1 << n_ceil_log_2); + + dim3 full_blocks_per_grid((full_data_size + block_size - 1) / block_size); + + cudaMalloc((void**)&dev_odata, full_data_size * sizeof(int)); + checkCUDAErrorFn("cudaMalloc dev_odata failed!"); + + cudaMemcpy(dev_odata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + checkCUDAErrorFn("cudaMemcpy dev_odata failed!"); + timer().startGpuTimer(); - // TODO + kern_add_padding_zeros <<>> (n, full_data_size, dev_odata); + for (int i = 0; i < n_ceil_log_2; i++) + { + kern_scan_up_sweep <<>> (i, full_data_size, dev_odata); + } + cudaMemset(&dev_odata[full_data_size - 1], 0, sizeof(int)); + checkCUDAErrorFn("cudaMemset odata last ele failed!"); + + for (int i = n_ceil_log_2 - 1; i >= 0; i--) + { + kern_scan_down_sweep <<>> (i, full_data_size, dev_odata); + } timer().endGpuTimer(); + + cudaMemcpy(odata, dev_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); + checkCUDAErrorFn("cudaMemcpy odata failed!"); + + cudaFree(dev_odata); + checkCUDAErrorFn("cudaFree dev_odata failed!"); } /** @@ -31,10 +105,71 @@ namespace StreamCompaction { * @returns The number of elements remaining after compaction. */ int compact(int n, int *odata, const int *idata) { + + int *dev_idata; + int *dev_odata; + int *dev_scan_result; + int *dev_temp_bools; + + int n_ceil_log_2 = ilog2ceil(n); + int full_data_size = (1 << n_ceil_log_2); + + dim3 n_blocks_per_grid((n + block_size - 1) / block_size); + dim3 full_blocks_per_grid((full_data_size + block_size - 1) / block_size); + + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc dev_odata failed!"); + + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc dev_idata failed!"); + + cudaMalloc((void**)&dev_scan_result, full_data_size * sizeof(int)); + checkCUDAErrorFn("cudaMalloc dev_scan_result failed!"); + + cudaMalloc((void**)&dev_temp_bools, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc dev_temp_bools failed!"); + + cudaMemcpy(dev_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + checkCUDAErrorFn("cudaMemcpy dev_odata failed!"); + timer().startGpuTimer(); - // TODO + // map to boolean + kernMapToBoolean<<>>(n, dev_temp_bools, dev_idata); + cudaMemcpy(dev_scan_result, dev_temp_bools, sizeof(int) * n, cudaMemcpyDeviceToDevice); + + // perform scan + kern_add_padding_zeros << > > (n, full_data_size, dev_scan_result); + for (int i = 0; i < n_ceil_log_2; i++) + { + kern_scan_up_sweep << > > (i, full_data_size, dev_scan_result); + } + cudaMemset(&dev_scan_result[full_data_size - 1], 0, sizeof(int)); + for (int i = n_ceil_log_2 - 1; i >= 0; i--) + { + kern_scan_down_sweep << > > (i, full_data_size, dev_scan_result); + } + int odata_size; + cudaMemcpy(&odata_size, &dev_scan_result[full_data_size - 1], sizeof(int), cudaMemcpyDeviceToHost); + + // scatter + kernScatter<<>>(n, dev_odata, dev_idata, dev_temp_bools, dev_scan_result); timer().endGpuTimer(); - return -1; + + cudaMemcpy(odata, dev_odata, sizeof(int) * odata_size, cudaMemcpyDeviceToHost); + + cudaFree(dev_idata); + checkCUDAErrorFn("cudaFree dev_idata failed!"); + + cudaFree(dev_odata); + checkCUDAErrorFn("cudaFree dev_odata failed!"); + + cudaFree(dev_scan_result); + checkCUDAErrorFn("cudaFree dev_scan_result failed!"); + + cudaFree(dev_temp_bools); + checkCUDAErrorFn("cudaFree dev_temp_bools failed!"); + + return odata_size; } } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 0afa2e7..5e12aff 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -3,7 +3,7 @@ #include "common.h" #include "naive.h" -#define block_size 128 +#define block_size 320 namespace StreamCompaction { namespace Naive { @@ -86,25 +86,5 @@ namespace StreamCompaction { } - - - //__global__ void scan(float* g_odata, float* g_idata, int n) { - // extern __shared__ float temp[]; // allocated on invocation - // int thid = threadIdx.x; - // int pout = 0, pin = 1; // Load input into shared memory. // This is exclusive scan, so shift right by one // and set first element to 0 - // temp[pout * n + thid] = (thid > 0) ? g_idata[thid - 1] : 0; - // __syncthreads(); - // for (int offset = 1; offset < n; offset *= 2) - // { - // pout = 1 - pout; // swap double buffer indices - // pin = 1 - pout; - // if (thid >= offset) - // temp[pout * n + thid] += temp[pin * n + thid - offset]; - // else - // temp[pout * n + thid] = temp[pin * n + thid]; - // __syncthreads(); - // } - // g_odata[thid] = temp[pout * n + thid]; // write output - //} } } diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 1def45e..81d4fa9 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -18,11 +18,12 @@ 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 h_idata(idata, idata + n); + thrust::device_vector d_idata = h_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(d_idata.begin(), d_idata.end(), d_idata.begin()); timer().endGpuTimer(); + thrust::copy(d_idata.begin(), d_idata.end(), odata); } } } From aba925269e01c8bc3cc0b17418aad9041e8a3fdf Mon Sep 17 00:00:00 2001 From: Jason Li Date: Tue, 19 Sep 2023 18:36:27 -0400 Subject: [PATCH 3/3] README Updated --- README.md | 113 ++++++++++++++++++- img/compaction_runtime.png | Bin 0 -> 28077 bytes img/efficient_scan_runtime_vs_block_size.png | Bin 0 -> 26794 bytes img/exclusive_scan_runtime.png | Bin 0 -> 27202 bytes img/gpu_exclusive_scan_runtime.png | Bin 0 -> 27284 bytes img/naive_scan_runtime_vs_block_size.png | Bin 0 -> 22311 bytes img/thrust_profiling.png | Bin 0 -> 99897 bytes src/main.cpp | 2 +- 8 files changed, 108 insertions(+), 7 deletions(-) create mode 100644 img/compaction_runtime.png create mode 100644 img/efficient_scan_runtime_vs_block_size.png create mode 100644 img/exclusive_scan_runtime.png create mode 100644 img/gpu_exclusive_scan_runtime.png create mode 100644 img/naive_scan_runtime_vs_block_size.png create mode 100644 img/thrust_profiling.png diff --git a/README.md b/README.md index 0e38ddb..d5d9b62 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,113 @@ 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) +Jason Li ([LinkedIn](https://linkedin.com/in/jeylii)) +* Tested on: Windows 10, Ryzen 5 3600X @ 3.80GHz 32 GB, NVIDIA RTX 4070 -### (TODO: Your README) +## **Implementation and Performance Analysis** -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +Four different implementations of exclusive scan are considered: +- A CPU implementation, which simply loops through the elements of the input array and sums them; +- A Naive GPU implementation, which performs O(nlogn) addition operations in parallel; +- A Work-efficient GPU implementation, which performsn O(n) addition operations in parallel; +- The NVIDIA Thrust library's implementation. + +Futhermore, we are considering three different implementations of stream compaction: +- A CPU implementation without using the CPU implementation of exclusive scan; +- A CPU implementation using the CPU implementation of exclusive scan; +- A GPU work-efficient implementation, using our work-efficient implementation of exclusive scan. + +For extra credit, our work-efficient GPU implementation is sufficiently faster than our naive and CPU implementations, especially for higher array sizes. + +### **Performance for Increasing Array Sizes** +Below we analyze the performance differences between these three implementations. + +First, we roughly optimize the block size for each of our GPU implementations. This is done here by scanning through a range of block sizes, executing the test program, and comparing runtimes throughout the range. + +![naive scan runtime vs block size](img/naive_scan_runtime_vs_block_size.png) +![efficient scan runtime vs block size](img/efficient_scan_runtime_vs_block_size.png) + +As seen in the first graph above, for our naive implementations of exclusive scan, the fastest runtime was observed using a block size of **320**, which we will be using for any further comparisons. +As seen in the second graph above, for both our work-efficient implementation of exclusive scan and stream compaction, the fastest runtimes were seen when using a block size of **512**, whch we will be using in any further comparisons. + +![exclusive scan runtime](img/exclusive_scan_runtime.png) + +From this graph, we can see that while the CPU implementation is much faster for small array sizes on the order of 100K or less, the GPU implementation quickly takes over in terms of speed afterwards and is an order of magnitude faster for large array sizes. +The CPU implementation is likely much faster for small array sizes due to the overhead universal to all GPU implementations, such as memory copying within the GPU, thread scheduling, and kernel calls from the CPU to GPU. +However, once the array sizes become large, the parallelism inherent to the GPU implementations quickly make them much faster than the CPU implementation. + +![gpu exclusive scan runtime](img/gpu_exclusive_scan_runtime.png) + +When we compare within GPU implementations, as in the graph above, we see that for small array sizes (on the order of 1M or less), the differences between the GPU scan implementations is negligible, and the work-efficient scan is in fact generally the slowest implementation. However, after the array sizes become large, the differences between the implementations become clear - with the naive implementation being the slowest, followed by the work-efficient scan, and then followed by the thrust library implementation, which is by far the fastest by an order of magnitude. + +This is expected, as the naive implementation contains several inefficiencies, such as the need to ping-pong between buffers to avoid a race condition, unused threads, and more operations than necessary. The efficient scan eliminates these inefficiencies but runs into additional overhead with memory operations and kernel calls. This is likely why it is slower than the naive implementation on small array sizes. The thrust library's implementation is fastest by a large margin - for the largest array size tested of 230, it was about 15-16 times faster than our work-efficient scan. This is likely due to the use of shared memory as opposed to the global memory used by our GPU implementations. + +![compaction runtime](img/compaction_runtime.png) + +When comparing runtimes of stream compaction implementations, we see that similarly to our scan analysis, the CPU implementations are much faster for small array sizes, while the work-efficient GPU implementation becomes faster one array sizes become large. This is expected due to both the overhead, such as memory operations, and parallelism that come with the GPU implementation. + +Some improvements that could be made to our work-efficient GPU implementations of the exclusive scan and stream compaction are changing the order that we access indices during our passes and removing memory operations. Changing the order of index access could be done such that the active threads in each pass are contained in less warps, which reduces the scheduling work as more warps terminate. In addition, currently we are accessing GPU memory to return our final array size during stream compaction, and to set the last array index to 0 during the "up-sweep" step of the scan operation. These costly memory operations could be optimized out to speed up runtime. + +### Profiling of Thrust Implementation + +![thrust profiling](img/thrust_profiling.png) + +When looking into the Nsight timeline for the Thrust implementation's execution on an array of size 225, we can see that for the two calls to the thrust scan shown in the timeline, over 90% of the time is taken up by memory operations. Here, for the two memory operations which run for >20 ms, the DeviceScanKernel itself only runs for about 63 us. While the thrust library's calculations themselves are extremely optimized, the function is ultimately bottlenecked by I/O operations such as cudaMemcpy. Our other GPU implementations are likely similarly bottlenecked; they require extensive costly global memory access as we are not using shared memory and multiple kernel calls, so computation is likely not the bottleneck here. + +## Test Program Output +This is the test program's output for an array size of 227, with no additional tests added. +``` +**************** +** SCAN TESTS ** +**************** + [ 33 20 46 0 6 2 18 12 18 44 29 43 34 ... 9 0 ] +==== cpu scan, power-of-two ==== + elapsed time: 261.214ms (std::chrono Measured) + [ 0 33 53 99 99 105 107 125 137 155 199 228 271 ... -1007576195 -1007576186 ] +==== cpu scan, non-power-of-two ==== + elapsed time: 257.151ms (std::chrono Measured) + [ 0 33 53 99 99 105 107 125 137 155 199 228 271 ... -1007576245 -1007576214 ] + passed +==== naive scan, power-of-two ==== + elapsed time: 73.2ms (CUDA Measured) + passed +==== naive scan, non-power-of-two ==== + elapsed time: 72.0187ms (CUDA Measured) + passed +==== work-efficient scan, power-of-two ==== + elapsed time: 41.301ms (CUDA Measured) + passed +==== work-efficient scan, non-power-of-two ==== + elapsed time: 41.2993ms (CUDA Measured) + passed +==== thrust scan, power-of-two ==== + elapsed time: 3.54906ms (CUDA Measured) + passed +==== thrust scan, non-power-of-two ==== + elapsed time: 3.20854ms (CUDA Measured) + passed + +***************************** +** STREAM COMPACTION TESTS ** +***************************** + [ 3 0 3 0 1 1 2 2 0 0 1 2 0 ... 1 0 ] +==== cpu compact without scan, power-of-two ==== + elapsed time: 248.794ms (std::chrono Measured) + [ 3 3 1 1 2 2 1 2 1 2 3 3 3 ... 2 1 ] + passed +==== cpu compact without scan, non-power-of-two ==== + elapsed time: 249.189ms (std::chrono Measured) + [ 3 3 1 1 2 2 1 2 1 2 3 3 3 ... 1 1 ] + passed +==== cpu compact with scan ==== + elapsed time: 690.428ms (std::chrono Measured) + [ 3 3 1 1 2 2 1 2 1 2 3 3 3 ... 2 1 ] + passed +==== work-efficient compact, power-of-two ==== + elapsed time: 69.2437ms (CUDA Measured) + passed +==== work-efficient compact, non-power-of-two ==== + elapsed time: 51.8314ms (CUDA Measured) + passed +``` diff --git a/img/compaction_runtime.png b/img/compaction_runtime.png new file mode 100644 index 0000000000000000000000000000000000000000..b2eb345600f862057f6378de7f8c05d464a54c08 GIT binary patch literal 28077 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 literal 0 HcmV?d00001 diff --git a/img/efficient_scan_runtime_vs_block_size.png b/img/efficient_scan_runtime_vs_block_size.png new file mode 100644 index 0000000000000000000000000000000000000000..1c453f0c0e4bb98608a58652f104f6550ada1d76 GIT binary patch literal 26794 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%0DqJaMGQ_$2^JXjqrG05I_VLOdx<7Q+F#pw|PCXlh z8V5aTVSoB=^lfOAC_p_T)DYSG1%#h?HdBOtk+mEOpL|{Ae==h0#k^52PvyKe7pb=D z;?IG)ZsFGo?<$-&IWHd4B=c+kRgKL2lR||hMDk*vm@G8lfAvK8JCaQue{ff8uP|3@ zovHu^*t+I>TDOP z^-|j}{TuC9sIcCuXmy*!xoR-ow}J|$xMG}5(*B< z{h!T@I)>KOj;tTTl8&DquwPI18%Rs{@~b!BkMvvV7o#!a3Yhr_+DH^q-HM=IKNw1y zP7L(*m`9VTrPHD9|Hou>NH#1ksk^$A{c?d}k6uK?Yb9qD5Lt{5z!grqT=DH<{@5U} z8$xigGIdkCyO_FmdFy#~*GX5c1d(cNf*f2cL9kp-q==Fgrz$pEysRTT5+%r67BANv z*R}nB#0>)eQmanCg%A1?h8nF*kb9(d`P!?|Nhb8AoP24iU&IEUE6G#Act3BF@!Mls zmIkDB28I{COph0P>s&g$ZdymA$^<_MEE_QCRkXDWYn^MeASR+ntoGTBnNDP=zJ9s# zZOA1Pu(2BXv?lJEdBvq~X5b8;2n!}E@UIsBd4B{rx=R~g(kaG;oO60kn$vdAd7?s^ zCzc3R^|vzX+9=~m-I^|LaA(aS(6y#>`LcrO6BiE9ijM8-?!9A$H6*X`r*KAWFo)mW z`gDK4di=PS^PR?uK5vBzDLIltknc<?}G3lprpzFlDm%PXW-(X-UtSz2k;`!ex?N_MBrU12_XbUjm^ zxA{Od0K)!PUO{SZ??yG`6g`$wgFuMkA_dRMB=YK^DXFQ19wLEqdS8cC}@(x-AgHiGhY6 zjZ$RSD2|?(##rBYstvfKn|dl_fNkPxQ#-PG~W` z6{)4W{>HPnGNi^&o(3k6Nrk!D{Cd0|BKw}_2{R@VBRGV(0v}?P;*&KEczZ$b71KSB z#5rVGXiH{4O^wSW`-zy?E^qoHxrt->l@p8)6IRwtP)46vOIF-1h(|m=l&4GLwNj41 zPo*nXsF@C4DS=vNVqZ!0_W4~=&em!jbG+HOw6+)|H$*lg>t{jxBC9}N=HWZ*;}OXk z8SY5skh#6%(Yj0X=Kj`#E~YzH;+`|SVOKocaka*DpmPkVD5vHMIal^VDysZEws8?_ z4wlL83F(3!r{6S2YwEH7#`RYI(2PJC8q?n4i3Q`)i4@E;HJGx%hxJ7pEDIx|0l%3# z`{g}eaaGDobmo~dSDtQC$o(7|$B9@)a(>GNb~xnxU<2TZHCBfvoert*Gm`kU{n`iqI!&AY-Z}Q2U zLq90muSlbIu4SvBOv^at()M01j)>97;$g85mHB8?8el?xvV8P~v|uz0_U@!%PoYWJ z`m)Zz*sGCL_lH$O%KY%^2&1Iq+@>6!wz>GVlCBpeE%hSu9MQ!Nu%2!9^VY=BOA9f z=Qs4-6uoOo$rVdvy@J*mQCsCs4PBcnNuO3QZU3rIV<~=#gkmKmaaSo!koL{Qb!O-T zY??xyPc1^!ObypRwsbtD(BtCZ>$-fcN9b_r6ZwlpgrbHOv8Kjzu7=Ru2KlPbPq~n8 z5QHn=fYh(?`l;W^l8qb(ZdVmrErhC)+s#aUFgc1xzJ;_#f1yXp!k^9X*-4XQOd_@C z!eVq3lAl)y^8J2yB}ex9sT6L&!$Cdg0p+%iv2v)!tMHHY_Kg8Gok8V!ok+Nj>TdQW z%T^4D3gP&JeZ6%r>tb&YRjxa8BXg;^WngyaRaH(Bu?=aHqM{Igvj=H z8snfyR=nkX(acnBr`2M_vhh&_+xUC`0{nN1k3XUf?z7%LY9{0UR?4aMp-2^)NMt>S z9;CT9E#IyoWtJnxrNpE0t>i|fKeObB+$p@GEj^!4;gN1!;8FLk#7Sy$OToja@};Fu zf_la&bPvKVlbJ)WID*nLJc&YnfP-W?`-XJ8)3eJyuJbw7`}~F}Y4rCd z{8~MAb)|PGR7%El$ZjCTGfgx{-!_i#x9WbDE>|UvAKnh7KvmID^r(J_7+dnf25J1r zy~y5v6y)SF=Gr-#1BE|Usit`pa!xbmPGct1qc?(XeWxU2a(=06<8PQ0^2Kd#hKbLR zN~+Lu=hv66UaDyep}z|aFQdHuu>%%$w9g$*>zW_vz{9|!1VVwhb>Q^GGO3%Yb+AP4 zCaV8(X?4=Q0cc|e8DuBx+Sup4oBntf9c?xSY3p}`J(H(x-p9KM*)g>`_?;}x&F?-R z$oJ`{>i`XKqyyP*Iv*lMez9L5#7ddzdeYaD=XhxkX0yU`xAh;~pA;%m)~4J=QN@*xl+DI#uJupZu%^>%hTK}t z75*6?dGR%$0M%I1-fvYc?+pc9rt>$iovCXqGFfexu}&r>OJp%`Uxfk6u~Sxgr%g z4~|)r4FJ#xf`*^y0)`{lqqG?NuFA0VPTfsrBbQN|x;@)qHutIXWV|Jj)DMcWbZ}}4 z6=U%xvC7Za1k;e^uHMcId!|!JamTp2m)---;@&NrrVt65adBMntdS{C`b~i6_m|g4MX`C{z+4#E?SbMC6Ds~rzeQLs;YSP#>|t>43?#T2SP<((f^b!kNe z{zqcFc&jS;3av4;%3?gcgB*Dw8wkXHJC7tiB&3W1x*BHXtnztnk$XDBw3kq>yCb24 zd^E~tldzW(F3#RFeAVfu+qtLb$sjLsb;@?Mhn1TBtjgreeByT3*)tf*{7Y+l4+Smj zh5{A(sDCB2q*lJC&i5c%3DL+`f)g21n8w6eLh=%~fa6N& zE=9=Ly8F3+8>zmp)|Fcg_1!b*HM4z3Ys63IMoNt}I1j#3t=}u%WQhi*Q<1v`n0s+~G#oVD*qmWd24*hheCnJ-zC;YQ1xSO zmo)n)0>>P2Q}61#)yJax6oxHO*6(-Mf^`pBKT?m<3qsODe`9x*ahr|fxOjCrY|XSX zFj2tkMYq`4aK_V^iZsxXmUOH0R?zUlQTH-4LiosuXb-d4%`LJC;T93vZ*iD?x@ZI!_$TA-W1NX4DW|`!?Ow$o^qh8r zJc0a5V;pokIDb~CH!6mk*Q&*9KXY==?On$Vnn zx9L@5u9K!PU2OjOUfx=+?oIJNE=l57l^$S!5fO&Qs-Xpkd}{CNe-(>mcUYyAdF&={CXI*AtNFE^3bF!F`8q<-eFFh#747whmYbFYJ+RNjQ>1Mt9c1C1 z*J?@KI$&}SYi)8o^O{8DtC}QSv=DYb<2r{$+QO}CV=iZj+?$SkO_4n)_Bd*nlAIQG zd9VJQO`|b$PM!CP}_rkfz=;h5=MKmCJsc_Us^l! zk2hspM|^rpD2Hs7R1C>^?}UnG!8oltW}m+q@b=E8LpY?XPgOl}u8l+Fu^R9vyjIoa z`ba1yV3Bgq>Q09YkrhNnlGM$;)P#@Mcz6TF>?kn0!UC`7pgLI0w``(DPb=@qE94@Q z=M^zfbr53x0_YIb%{)t8nL+;Ar;fI_32(} zT>mL`a*1q;iS#xzQO3*qT4_fmHjW~Fyenkf?K110iyCG+)G%zhnM2c(w?@AG;rjH} zCe#m7(L2nvz>G>aMU7LJ&>n9D4UL?#<1Kj+m+_8`5nUOS+?TAwawCt7)PIIv;G&-+ zYsAV`U?0BvaPe~ciZhOkaU)|Qo-M)KB{2m8NjK63Mz_6SK4kFY3-Sxd`Uvusfe-3Q zt8FZ9RlqnFZ3DP?9SUJRX>b6Fc^sgp^da1sui@=p)GZSDVIYZvD>b&iJ?!+S_)^ao zx#8X&dz zG4|*Z#~n@vNC?b5)^*=6T!YW=b42^G$gua2d;3wf{^{?rBQ?P32;|9b2{%5#117Ni zjhKT>2oL|Wi-rij`2A6|P3ETZ<2CY&SB=CRcqmlg(c9JyC%o&D8BU14gMpH%IA+h3 zvB#PSwW4eMrgro7Qh$s zF#C^=?i+mI>iIkf&&(~(rTL8~t$1R$oC2PlG!f4lW7Jdgbn8XI&ie&>=5s}~q(|*8 z&(@cYcMyBH3k&kUzc;P{S7WMiQ}Wk~h$D%Gn!w=hs=7&S69pAVy*E&E0$*Z8F$nyq zU9f1xbjBHc?r}xtNgmbJhr_rB0ypyRL>A2EV4(kr6y+HN42G{%^#3p5^WXZaXfpm^ zX*vFcDvdT@;Ik?r^@q_{sn!GVGK$?OFON8S?Q0A(OMN`x<%T}|k*sL&+h-Ga=I}*9 z0Q(ToONQqc|EQ}%{{Q-efq`x@u=WKmbv98dE&rmoX$eE}d^!73DEZbMyKfA2Q=t@s zfYtsN0ipNr&z)8<#hBsY$FuDTK6s#1Ez8wRktzH$l;V1~m8yZeG>Tn5paw>LRkYQl z;B(#C)K}|*kARjY?#&t9|A`aW)f=2=5;C>@PkQ+u)SjT^^To&qZH95wsGjj}sR6)_ z+EbIu;DPRKBd31@@8WI~vT4AH@oeoBJZqy<_9OEkP^VE1=<%_Z2ny^;C@}>b0PS>V zV!}Kb{u_B9Di_c=Kx5DT${q#M!^%G)VZg$;vVG=vzbI(%{f|DP}1DuFndP3?R#tmXPmg6;Z3kMz5hs1r9(3zl8T$J^R`)#05rwcL*G;v?ac0JH6n zMQW3sMXce3(yc>@h3k7_$7-*bwn?7;r9ZszO>Ja5gO4rzsqEz3H~rcfzPFP(c1~RP zbrD>Al>gEfV2gJC%JE;XCB5sL8 z0r8dKmOtAT=e1x>7Q&;MT+@60sU+szU83A3+W8Q5mpAsdO@E)yjv4v(TA*J)PG$BX zVI%+<;j^{VsT1^bEfe&LKvt!=dH#7iQ%gqlZpZb6C-^>{toc8qLj_Ih5U@PiPPv=H zP`hnVA{D(LDQNh$gV3Za8^)lqm{IkzQDHeW?Xh<_Ex^n({GNJ#;zB~_DY2D`1 z%?|ir6ZE;$1cew?5}|nHiF#t8>o+E~+GVtIV%BoYc);&&?dJaIy%~Ob{$YVGphYvI zh$F(zQbat^?Ql0Uh^*Ua7$aEw*M7tGXP#88Jmi$Gn12thDzNMJ&)G2pM3S}v!M@*Q z^NsDb!h6Vo@Iij?(0Lx?jQ@U4j;>PD)RAq0MXp1Oz*D`TBSj4rH-^cXZx>r)W^+V= zy{Ysbs0YHj^qYsPhLtqI5At*}vCw6avZNv9jCBJ=_8dRlXUQW-# zb3PyL@v5*yfB}T{y{dCtHjpOc9~N6`br)_zAHO~jmha(G@)IlMW2;KusF}SyM5QEf z2<|^Xf?~&E#{JaFK*!w@P4_>xst-spo_RsrK4!=LQZSo7(XLC3qSgtUARj)O6YqSLF?-5y%=+~=%e=GRHq4!?PZe72WGH(7PJmP1S5ZLQZpPYrf>*Xj=zeS`XLCe} zIzjFOEUdPF7`~#P;iNI>3#^I+(9>l3Y}*%3O^q&+9nOF0uHsrpYt|u&jVBMaJugm~cGNiQl&Ye5MwF?=}KoUw}UhyTcrWE%D2uQJ~A*X7% z2pVonLS3<)9pJYC&5hk&(g_~5|DLKRaXu`SpvfMWtLGpAT61vehPvsi?o5SAusk!L z+$H7Oz6-Qpdbh##3vNJZjs$9>A9ftj7*Uf%D==|OHgAd^)~FU+X6&vEjWvZ_SOem2 zQuFV^4f~H^mG*H$mJPBl*`{SyN)!S{1Jr`>1#}}#&I&lqhv!`Z`l%-^c7Q3*)+7)A zK@gl5nScuwJX-7k-M&67gc_g0KvUTL7P;yGx$LqwTJ6d~BUS0piv-)<=y17BdRjY0 zKB{52*s=VpG`P~k(L>lgNx-P+KCGNzgGP`!Rhk7(Q&_qi35^qsLMbG-l{oJI+nL~xTY!L`!sNQD5I z`}bI^Hz^7vICUlWF4CQL+IB{Vic^-<@0m(APz3MeXBCd3f+J|mS%B(S#Uv^|8x0Ig zur;|gSthlfb~Udbb-dux<^(HHx5@j8Es(=OR%n?%nQ_K{=D4DR*c~)>V5LkDhXai# zP$TU8;E7<4IL6~pgyk21U`*P#OV|$$V(GP|nj@(>8ZsjmK$#Ia>Y@9)a!v3B4@@5X z*3?n7K#99i0i3AQ=c?Z#iAvG!cz$y8XV5R}z@M54BaHOGg~k$x0B5^VLiWW^V(v?N zRZv%N*b)hUBey>lrhOk9h{H;NT4>&;GR3~`OHd?@%9B|x_}{LI=q-Y$Wz8`kWoRQH zolT*wQVIT?tFnY5)OUvb6NvjMTtgY+&dFm7GONx6nK&VgjB;%9uC%vuZtPEa>@7vl zngLu;vtcYw9P8e9ia#ipjqUQA3c0kmqA`bl{+FQ11a<6e4vVPFtrJk<>w}F1S8F^z zlwA)QTyeIgCkAtORvnOsJ-tqzW P3!PI})mAA{whH|(Lq4hG literal 0 HcmV?d00001 diff --git a/img/exclusive_scan_runtime.png b/img/exclusive_scan_runtime.png new file mode 100644 index 0000000000000000000000000000000000000000..4a502d27d469f9a5bd3294037ead8b157a512d2e GIT binary patch literal 27202 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

w)2Eincq4l@VTH(mc zG`7IcJv=`(iY2iZqrKVkf^Y@!ksq&lr*Ieqi>7jwHLfm418?Cs1=qappMI@p=m^!- zlNyldu6}tLjvP!@;7kgvqf$XrQ89@M{n|RTIdETjqsaJOs@*KpQ>V6mo-L1GG-0$a z#YuJ>J}U{i{O!an_Stn1pY*}b3F z#23SjZot|?9=jB=F8!$ME@&_hh$GTj?%cD>yApa35Kv=0%WOb&udl@1*r!8$ppY#7 zE)y#gU$ubd;IozFI9#@eQch@+djonJn<*Y%cUeP>b-eX9u|kR(vu?C#i^a z(F~iANNM`}N8+rg`D(Xx6HvHQ0Qz=F1|$BagvEECK$c88)D)f|XF*Cmh#UUd#|^Dk zrdjEwTh^5d2XSQNm~QIsV1br#S})mx_2z+G-ua|<(od&UHaf4D^sQ8&J}LBR)cp~L zkZrEJ@IGsHb3xldd~feEd~+QVgnG;6OrjYkE5y*KO}GcDsj)@d(W9~^F&njBtJoio zOG;F3F)=+UV=$rpdFB|eSBYnVPFnM^7epWiUvhhi!LJ4b5Ab8^WG13@WC)2t8f1o0~bGPh6g!@%NbTO|&Ga`h~bFjmFnT<0~&)+fN8x zKMB!8hX@SZZ{R_4w=5~{db{h4k-j<}I0aYY@|FuTkiHdFbA&j|!vF(M7W=Q`%VU+b{cV2%KKn5%2iE z7TXznWWu*6jNmCzKcp2lwby3mOd`kqu+2(9NXp(h$@axp87+_z*XfgQ#d?AHC_4=1 zjbx&EqT`!|C^q%YoD}Kw1MMAkOu@nD5_r)d=x8rxHYo}(^5h^=&8||B8KxPdl>1A= z$3v}z&sSP+RV_nb5^4n-=De-el%T{IoPrHw6a$k8kOM_9?(* z$@`o(rlCVEOLDO_{DMeV9!YEvHi20yeZorbLS3erR-)!V@K4%+2RnRBGRw7?;2t20cB(sxPkef&p;2KfhwnO#{WJOA7o*~{8|on#xG&DP383`2E+ z+cM2|=cH(8cJtR{Gl?-mg~)*sZA2ZB!CO_THw=bEYS_&MxVg+?Vq%sbvBNG}FMnig zc4E;beU$J++R}qD>puK+b?)T9n=7Yi4myf(oi-Ir7O8jqw9zJ!&2 z83~HGT<2J_EeX;l;V*wmURG;EsHX&$xY}~_Ph#exER(iBsbDnptY1ziUxKvB_slL$ zz!ou_`2=oqe+saqSv4fil86l2v#%@d*vc61=Xs;P_R8#sfI=y{Csrp;8U(%>g*eCO zD*I#2^21QJW9Ej^RDQB$ybddP0 zrd&ZFxC)L6;P=`mtli=z7vNfQ3s0X=Mtd{6ESuUM&HP1f^N0pXi#M+A z{OUahEH%#Ma8q!X!Q5YvxvRj2WuPDL=a@+B)9tYMZ-iu8XJG45jv?b_WGv*EDf){d zr{gS*PO>CncvDbye1DAfTNA4}nMP!2mym1Hrd0AEUY01+=Z^8R&Ni>D0#93i@z8HL z3^`wjv@po$sw}##0LEc=71p@qs{#zgOje1|69g`czU$a#77b>3=N9AA;+E!3$cpcD z9LY8Yjaf!tY`y>F>T}#pG`n$&r|uq8{GEKhKtZfel~ATjp`RAN8Xc zBHeYjd@f!+95k9?+R~MP;DB(IM{79WJjlhv<#+^%MGKWsc1nZs}d>l19@U%d|Ak~_X)xRX>lOO&fy>fxtxs;xs zDNNxU*w@4w&ARuGC9}+(@G5{8&YyE%g4MvOrGsbS^psF$H#I(zLqhIpevf8C3zkeT zTiNi0e190F*)(1wjrjunLRzKX`2+k#g)?CGC}zCC;X8^Zu?<9pBAo!H`8ZVa7CJOK zI1gekDfA;=-}#T@cgK`+V$>-L?WjCp5K0uq{HCz00Xt1%5VrZ&yA z32p*y=SHpmcxg6na-TE2h))fJ>;=}0GaZO=ce}AuWf8#cxCKDv^-q&lA

3cQSnh*-@L=M|4QmknYf@cbGjbvnP>&NDR7u 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 Lb=e9T^N{}oJ;p61 literal 0 HcmV?d00001 diff --git a/img/gpu_exclusive_scan_runtime.png b/img/gpu_exclusive_scan_runtime.png new file mode 100644 index 0000000000000000000000000000000000000000..a978cea80446a5e9fda6b2548e83b688137988cd GIT binary patch literal 27284 zcmd42Wmr^i^e#+y42^)m&>$_{okMq*fP~W0DKUUFNJ=wwsYpn-bR&XvgLLQF=<5h+@P;}U zGiD?BSi-3x!z21&pr|9!molY+k|{!my=^!5ieV1lJk#bref>g^E#7AHy}Ze{?1k95 zu1DRl9d#&33Jpy6I&rA&-+u~BC1_yaU#ZZLsJ~yy{9pc{dy|LrQhK#L81dw6QcYPy zBVk9AJad>~IDO`5Tq%&L#-uksyc~(QiWAjMOtg2ufT?7z_mG$+4-6)6R2o$n-2>Xr90bPuQCd~SSN&Rm`oz>{hkovhZQKsNxZ^^D z26{n71#9DWe)RfkG>2};Gzs*u(QRu$OHGts{NbvABH(Iew@I13Q6^S!ll1!ja>@E) zf9@pb@lIYzNolCuK1jdQyYIPYmap*5c0tNg2Cu`Eze`*=%&IT8u5-CD??g#em2Z?G zI0Ogvq`fl?Gi6!MkH&Od!EyeZ3QR4hicCZ5Bdb9^*}D0j>w4Ye!)05U8_8g<|Mk^c zT#@Z)c3GB;@UeQYM&IS(l3Bp*AO7pz@@mLzFXJ^B(M_B#UO_#}OP%LnyUu-ktfM9G zSoFA?K*tK_1v*);G>%|*bCboG#lXnO$0SuD#l|8SY=G+VO5Qrg?gOPmgMM2;%WiN^ z;KTJqy_1>U?w=*GY5&^*pMvf+_kXszP ze7o4(DD3Z-cZgaW(1A?S(6!tMUcja=0io!d<9TAIc$!}e?Nxl)jfo4loG#O0$;l0A z`SWdFdlc{3XMnl5g!>M#e>n<>_-j@c#cA2L%oc~fhVR*S-atU1b;(hPSH>vofqd2s$V423nmICiS6L_X8Y$ElhiNs zrGhxSoSC{y#M`H$LZEHpk9S{Y^CaX|XGh?W1^*mi+?(_#MaTOTb1POrCe^lWa*tD2OWJoaDsvo}e~&rq)KZJ;-`_pU z?{Jkx!pDy5#g6U{TQ0Nh7eKg+tC)5{O&H#!)+D+%>qd9PCw*gi(mJR%9U;gpPT=3> z9<6sLgAN9d9?gMA9jFI8xFve#$e()~W69Tv7D&4Eq2wa`o#D39zl*!V1mJ`|G>J`* zhPzK*qs@YIcDE+miiFK^#jbKQq9a8P-#jFUd(a+TKI3^v{?QZ^hJ75%O^ng+z$DHz znU)C~WUDyN?t&^vJ7m<`P0D?W5W&1l=OD$lULbi$#>PgX-h9lD5eCvi3U3n^`fWVb z5ieaxf5%V9fPmIAYEF2ZD>9|=%da?dE5=wVD;zA}Csl=2bSV3c)l2*R`px@6AQ`4J zXL14OT(WQ(3n{P!Y`P8g3pjMDy6vItAf_hIvQspn#7EjjLN?rYRsWG#f+0uH4OWK6 zxgREIg@$;5S%f=C(Yc2CsvCfqo=!%;L<8k)?&q0JD{TR$*C14oLW#cmTmiV<$?ydR zHVeT}9l~qYU5xkqchC6dYAoKDp@I1Or{FB!Lc!vJ!(IIZ{kA3M8nu=WBoYN781T|5 zKh+x&-lg%^SPv2t#cel&t5-$V;R$WJg*(lMi-qo9OPqsBd))+(bUR5*y(Ghs+oCDi z0uYbGn+sKDvRy*L5wJxh1S%xf4}aAuZ@gLWQ9q@YC@Sp=6$!5~8l(#k7zY`3tvcQ1 zxkyU~fepIhS5dApHqcXQ>Yjk*+eu}Oe@*2Lcc5VO+xsM}zPbE2$Yve8n@fgw;MoLL z8!CMCS;xIbW7kO(Cv70&I-+qL=UVo*eja4i=gNZA#1pFp+hI8XbY9|cL|&o?GE=a< z>cIX)*pOExB^W_f(FaAHGEuN9OsJw-i4{URfO3RVx!~|mF*~*0e~Wstj?OdXWr{|) zfO$@H=f2R6>++#Nk}QuP#8&zqdb^qq&K)a}LR-#;nu$=I&>|79Vvhzp=lLy@TElJa zZAmxa#g!bY^Mjwqw}B#NR=5NAfWCDg*T0D5buP4 zmCV|4jpoD7my8xJ5<*AalrLvyQS^4vtWv$~QHg*7kUCh@|P!&fNc?J}n zpHMt)L(SX_t$W)6>ij z!I)ho8{&}4&r6iF1Z%C4l?1%Pp(A7AqvK=&-w|Vo_z0#^M^J+JMETLf;E8y+(O9vX z7&p+l`B|``5Pj_o>)`TA|4{Mz}T{?}<^r;>Nr&$wlJkSB0H zg3=B=eytdXqKfiBWxIu|j)wr8J)p5P$3(8R-EDB}`h;pdqOg!t&>o1aA+^2d+{Pfp z#*k=QWm7ABQNgQ_3P9}jY}F?rTx+Zp{>~WeRm9o6&vhdjr~D7<7v?7IqVa7B93ZDF z%;V^j2-ol{geJ(Uw^PFk3enqSRGy{=Mlu_oAR)2l6}CfretlX_MoR?cC78F9O5}nMJ$?l09DJo!lVNe z+E30nLU2u0QmtXH-^*gSV2V#ED=>zl>xwk2@sBU(1xwyT1>~FB%YwGL{GJ&{Z%KU$ zu34D_v0v>qNYY08MKvK`_Bc`BANw|N?CMMfH&A+$T;q;L+~8vilj$dOG|aBq~QSTg|GbW`o}e9iNc`{a4#*gwxy-GKUQ;08&DC*|0DFq{a@Xx%E* z$kT@``i5~C35_i4M-pQ>m~Zc5yCANt^L-R5%vi012#u+szx}FQvLLt@xdmn}xl!ti z0Edhm_B>sRY5locswK)Dpu_v!?-bfy>P_ZzH~MDDaB>2cbdftE`@pIl+PHe zHe|rCfZUBIZE@t1B$Q;dSn^tqRQ=c}6;6V(GkmM=fpYc7mkOFsV{o}El2$9&el#<{3hno)+qFAH9fy;iOA5Rj`7{4V_ z?3gPiod)((e|O%#QUN@Ugkv9MRGgal$})U1(g_)+f3mnb^6w?ph)=N9~GKQ=ifu ze39)i@N>>}=#~FLZu>pSor+6yuXeIh(up#0K$&gHbsUrFuw^GIYn9VNON2ZhCU&uzILG@89k z;lPNw9PnBo9;Y?*MFnw5PP}RwiH!mD&el zJ~Z^KIG(S3?h4AI4ISRW-GV1b6<>4wFVZsxp{jhWD#7@UzqdzUhH5gvAH2WYH`qc7 zA+`p+$X=PgM&BT|D;y2W+-hWEEGf9B&lqT6Nc#*w)*<07_si#-O9I1w2nH?+QFJ&a zIhi0NG1LxZRiNIHhY)P@r&M3EaHc3^uT!t%sG?A0{26=C<9*pGl@+{DdGucHPfgp zE@l>T1{XT0E8g(kVYXx)AsEMSdzp3PM}*!PH@leY%siF~o;>l{Z4uY({V!h^9_y`@ z<4C->5gjGJQYmCR;hhl*u_l#vty!Jo_1la#-;)c>1}Af)BMd(-N{DrwUY|PN7(3+# zoPLzQ%c~vyYuKZGG>(OYRPv;wZ;N6<2B1}pXM}6l54yYkS4?o@vEL9nEMHm=5awi7 z*B`ml$9Cc$Y=s@k9HJ87S+LiI$iX|I8p`7L&UOV?QSS~cA9bB}`pl_QS6gtG6aU(d zL1AGD>6mw;eO}daVdxE1+v|YNpm!>)j-Jn0yfk)<68=IxT)k0JVP{3`jB^E5YWO{z zuHqS=2A&V1H({3ysHmiQmt5>C0vMVSGd|yw`E9K)PEQw8AH{t9V&6qxxRu3e-FDr- zFpU3eNxPr4)6RSBYedmUbxFiZ%8}TyJKwh|}Hy)mO2- zz6E@TpPs$|LJ@dR4&<1Q)Y=_DO}(^sedo>RU&XIpFX=cX&y)HT;b+i2JX~pHWsr#Q z(W~q8=)M0CTW`u4frXvNACFGWLhaKW zgJ|^`d=M@7ax6-X1Qd!(&`%3yfE${4t*;)`a$dHKA|8sHVkjN7Bw;Fjx57r@__Kaf zyqkHIO4NJwt90DZ?hLEhN-(FaG4&8sIB*R&$xLG_J++amXqpJQKp73A&qIwvc->*DqO`izeS!t;__M;*Puy+$AXpqljU zXvMgpV-#bTd=wAONyhCN?l;GF+?AfXn@h52C>l%95Nb-464lxi)DL^;ivp9j92p&p z&H0*B3AKv|0aF%rf%G`-o!5)L8zaul)nW2iADeoAagCxrd+tgMzb$a!RuOh=tu;_hMC9p_1SFBhmr6`m5 zYAvYV`fNWVA{rWpl7E;q3igtu4-1FCo*~dyb?&R189?|b;jmFnj;!tDMca#UB0535 zHHCaa+6j*r6%M-9b+8074E*#X~>A7u#_YAHsS^irrz4UIunGvnrTt|t1 zixRA)!^-Wu(7OsRBG86o8?JM@j6ts&YsAqIkuU*!N17%aB5qC^Li7EdhDJMUAX57I?5E5xpvbb*sJ zUfOHWRd0yDc2RSLau5P#hcbx->zct)MvZuN6V2~&a;aa^P_RkMn=7_E_Rfc24%MZ$ zG7Ge^?xs={xt;AVJF#~{_Kt{Id@}prr$Hj+;AZn?qfSLmDftTVWN?tkFnGJkHnAm| zspIk_yT}cG#*4?dUSacK^+yPhSi`ji*X&%$$=diAptuyBzGR_?P}j8<5yy&@oT8tg zgz}QTxTDO*ol!|vOxEC`OCv#-jC8n*6u-X_CPQ>YBR`0_i}4S|J6m!|j>KI-b3wLj!_fuBNnCXU{NgTo=<{nyBd;-ojxW@0 z%YN%xSQ=K?tn0Y$H6Y^VmhhStG81CF2mv|K?ex~*shD69#DhO-K+&~}WE>}iB7Ks* zg9smav`k?lzN0d$)z63)%`Ohb)Hhatn~-xv&Qvb|aJoH?Li$duXwX2>0oq!C$Mod5 zaqmjF@0Au`#p~Kw{$Uq?D|`*fu+Z@oF&a#w=VZt-2nz{l3LrWj?lB@gmlQq1qlxosBuQlR$q@1vJ$|iAA1Xu`+ zBbr0L_GHN1{CPIo93jx-wrsqv^&1@2NbUj^DJDn0Ls_M2!}h#GA>%0&Jc;U`>^naSx})<_)?MUnlc``260o?juYvcc*Ecgycx1UwufUl zN6DIHOD2QrzS*DZ>Uh8jB!gBI{4Q1b53te0>o}7m^9G;2v?)o&;6%kB<{o<438D{I zBtVAXbv7FhG1lRz@i7o;1MM1xc=Jv^nUrkhS#|Sl(oMdVdd@(cy;l}1+E|wz*h?wh zejPG!r)ShmT-}k4CgTWOe@_+~ipKWzYcw!eN>cWz?}JbCce(%nKcHhs7xQmA`!laM zQ)S}N1l?a~)B+^d0mHY8UVt>X-n3Vh)Y&ODNzViNc=2ccJ3j>@0@SuJ_jOwQYzY=U096v+ZWLd?Ul5N@HgkbAjA0@)k+j-y5tk2`LWV3g@{6Fr@7>ox+|M zB+z?!ySnImSV;s6$3O*RBO?<<8a&DV>HJRF-s|Ed#?HYak9VhupFX{5Lc%4Bd=hha zr^~JTVxRAF#1a$*j|>l|)Gq}XiGE*P^uIK*1B3@c5|VN^5F+8!Jc4 zS)vlE+1d8Ew5jhOUXL8-q<%X-?~_-TFFg+zO|pFt1U)nA>?V6fUYtn0{`330UhCt7 zFA?Q>l02n%Xns^TA)$6*hs*jFa`SbU_tq!IrGVSYQ6-XtMW5!Y=^!0gUd zt)@l^E4aZtz8CxNS5ap7=j+vcF7|g0)+N+)0&aH7KG;_r@39@4PhQSk_hpz`Fw2Kd z!6OsdIV+i^vEN2y?_KI1Uvr-hG}%p;r95@*%JSrj9Fd83+aB+o>d)7KU5IZtvzs(2 z*x11Q?$2j;NdsN{06Jb4j+7!oMzVm29bAv`Eaf3f&}|_Gos`!;c^)C$VNBf#=uH_Q ze`GU)b@JIw&=Cc^Vf)$QThD6NYHZR5v<;^l+MTYBR!nm^)U%4j70zw{+%4`enOc}W zqX03FirrRZz58YN)PEer-C;$)>kM8)A5b>)SD#1-U4I6{ZN+D$^tNY0DGF1lLA z;Q&mHp47M9tK44zy{{rN+ZPHi7YbT=x!}4mH(d4TdwmW*UPFwu%*$I}feIu4}bb zRgJ}eM%vqXUlAj#tE*eNLX1^#e(>Aq&zfh!GoH^iLUu3UzDZQP1c?I;MEfgriJ$u9 z##rPtsl>l)Wg(%LA=8l7#PW!sxKENmv|6^!)XnV{ctjeVG9WyxT0t3 zb%z{K2L~S@hT|k)M1QdrlQNK^lxU)5RlqF#p&|dgNQSct`OW+{ot2qxO+lJt06vj+ z>cNXZ8+RZIE;^WKk8YOyZ9|89B{qwpK5@X^vHbP};c@eSU5B^}E<=(Y&6rz#9WJ0t!obC%2M2I|*I@#~QjZHzhCFnj<%Ejy~D| z{m<89b|@j}@;s}1f_Fbsw+q{a(8}pn6>(Q?5W8Pgm?_|*nHD0lYJsM+t&QHRCXJA^ z_?&C%GOMtr(Bf06t0zF?lP4Dr*??+WbQMagOKNs~mlav-VEQIHo%3c=2iZ&;e;-@6Vad6HcwK(>S2Gw}w z;#I}nOmv!AvJGbxTi>?uGUx_75Xq4a^wdzSj*@_kYe1`h*xevj>xOE62kLeYrc)uO z+={->*74n9Px0qRlSA{@tjFLbqu#L8480p%GQ~5?N>OcW7Pq0CBNUcED3|^ha}NpG zsuymeTT*I%)29MF0=ToedDGb84{SUGNAgZoT|}g+6PE_fUbRAc@4W@GXJVbL21Qjg zRp)muKQ63UoeqQ}6C>%DoQd#tbCKymje~lpa=sp=N=yvh_{JpIuuZtVIxhNhw3)!?4jz4H_- zSkc~wL4LvRnF22P!t7&E%YHNt)Yo?^m@hz<4H5PAcYa0B!tcJeonNl94R^v5*IxT?jH%V6QPDN#3n^;D4ST?4@@Td z?4!eM_a!i&h@2D|>h~5oi1n-PiZq0;f5{WwiMF0{$9t>7lfluR86GXyVlg&mdC!-k zR=EGpFGCD1y*%70lka5=4 zR_M6;Ubvgd3rq7+)r{SCyy@lpN674)lheq2%eCL=b0`WnCZ3KybD@R7Mcn;0RIb3F zl0&!lDRJU$^;Ipz?!N`!uduQu+;P<_oyU=zSnmFKRB-){19Q6j-&;bWhaEKipoihu z(Kk+JQ2$O98 z`!4Fc5UwjPn((u5rTD!zN=@T_xWVn7QgAuQu-Yfrq-XxULDBP{^*d3zwI4q5L;dHS z253@lyT1%bZHR-kW}jKwf6D{z@pb66rSLk!B**_*+j;$Y{9W6kHZ2S$TFsDu8wZB9 zlCzJ9R`(^RAyAyqKEbG8AYh5{+SB+DU+Xz8t_Gy27x?bKyF|BOX+O%InszhmW`C^O z=JKnjbtQw0Yx--)ovOb=OY5yvA@KihBvP3FEKYq| zCu(e_xY$bpuDU}N>4d^`%Uz1em*1A-sh;qGAQxFWK3f{O4bo~<8zMBCgiOxj;^1o? zMpa%v17IZi4@L+G1f#z#ceme4LQ8iW@U?=7|3dXj<-9txX!#&>+DA(Xa=-Sh)|!Xc z{~pfL{vPD=@L;+CW&ZD`-62@AJXVn>rzweEgi`lRscS*3yJON2{-LCl#7_>za=<{F zu9Wd2K8slml?he`8Jzmg&gF4}`ag)#WSka%n|xPWANi&5Cq0ZoocY@n1FV`#0^;vq zD}d{#PYZLsNy|Ql|K}OUk@#AdA2cn?6yvm{2(*3}gs1t4A9NGu{`F$0UKwA7XJqMT zZota71i_Ka@?jBahL+IMR+z1yVXwrGO2AQxDrVwimMl&NQvb&g3))rppTDJL za0+^Hr6hg=Sz`Pvpky?zH?}mLmrU5XrUP@8A@s=9L=@JPmb+`AAgv(j0N`GsxkQ$t zUqXNWVdvs~a0*wdNpB5+0&-P&%mS*1t>T0wu~ zm7;obTEH)jpxLGzoZh;yuR?due-1}UOUJhH^-4$BP@Ame@ob)5U$6mPTVIS$6(-62gO3XcWm)hElegD)=lxi_fPWNmMXBIgvwI(Jd(LOPux8-`(AAv%T znVtP(!2Jy~zy3F%AS~}D2Al}LI=Mw~mL7(cfzxLC`7K%H#XaCvU+kkxVe;wOkt#!& zWlu9xz!cuAv0O=5G^T!@`KR59qG+KJU?vNw8i7*mj%L2zN$>4*A$RpaV1TZiRp-|y zVEd8$N?RidtAUTwe{2^847sZtHU8Yj5NpXUsYATMZ)fvDi0px)Z&TyVyFb5r1hoK^ z;G;lG6K#u2{h_6>)JNGrw<;dlVA#mJ$Wn#~&8HtNo^(0?24?%LSGywz?2$WoEW6R3 ziTO2PQHuQZ{{WW2I#)^Klmz%S{d3`W+FjvkTD)(5@px1+g3N_I4|w7LL&pCE+a3!i zo{sz4iytPwC@eWlw_h?#{1i4(x6PpF>6pM`ggH00FIWn(ce?4t{qw6%i&nP-zdi(G z8N2Oiv@ng!YJp&u>zd-Uv|@{0zea*VEt~apYg7**`f1mwQMRf{pS|6t#29kcVp@ZO ztnG)>S6Sy?8^XkhjO1)5lk_9!!Que;EqgGmKXtxxhvN#n);2IO`0RJ>y7BGR5B#0+ z0@NNt;8GjlPm7Y%KF>{sd;&+7e!Zx&5Q}2Y>8{HSvBprQS>N0o_*rYU@q;l(J0IQY z-ondivDw@HISa%zBJ63BG!j)QJ5a7=95v(qT&xbmM?(AFR2fpl#I@n`BibwCMG*l2 zQWu%Ic_)SAugsRpqwy8vR`mYMVX(LyCN7U~0p&o~Xl6z6g)_R=e{p9uG|HMvafNnG zHZhUT^F%ArM^g=ODkfM6L)G8J7%!8zTh6N~uoF;+;B#>$k3gc8;%ncnePcnW1^-X* z=oXl6d!RwaU0}1UFZX~=j0nu19TNaCsvcUZ#tcLF$7dofD11GYJJO7L3``lGrD9?F zjjIC35ZKObl5wRF2kt?5dH%^TA6A)IZ+m!8&hfc^lQ~*@Bsox7bB_-eNA+ZM zSqNJ}8V2ouYr&Ok|8P@_q+?VbS$ZhlRJ{fqh)5VP=q?z>h>rU2sN^+MgSdx*5WmEPJ18 z=Q{kRHVMdz8}|TrQTLQ)R4K}Tmnv0r(`bm?QX^qd#O>7l`>d48c8()FO-Q;j^zER~ z2uLdjTFAriuP80?H}A+i8=25N_ZRESHsLMLy^U0ce6oX<{I1SR;f@<%(VxNBcnr6uo^51$0x{}q#$E9?$o!9D+83! z@@6Uq*o7al=gY>`|oyuG}s5H_-d^wRk)`6|2tA< z8kfBAsDq0JCjzjc;?kr_jt^&d@}3*FKKygbU4p1mx$wWK$_{CNJ|HQ?_Yh=jUBq)g ziT0=`Icr&V$FBwPXPqca*-<3>FHv<0TpT9d`M$-o)yON%acg~L>KVPGg^LG$-Xk= z?V!EQ%~UWm>?o#{jB8^lB!}+vKPzBEehiK(UOz74I1;(j!)~-7J!t=+i--W$u}3Ql z(v|cyg7Inm&*#D5*8D!k$e)RKX2>nBR1w##tiMho8%chLny9k@LD!LQUXpwP9SD*# z@JXYX42v&T-4(vH#a=oQxkF1mfJh0%Es&O1CWlMUR9AWSM_c}(q&i>zH1=`jpGYah zn#vzp@rox690o^6Q-N`6Eqy==Rz#a(*}nWuuW3TBQccFZvt{N8Y=~HkUL4@r`K(%R zR7SfkZGV_HUMHcZc-W`bQelS5ssqx93OX}d@y=v%W)<)H`g;Go zooAsd$mILGlqZH_3!EH$j4I}uCH~gkygXM6(%5m7O{`U;(36;kU_qo!I$%_583xJZ zQ^CN*oIaw8m#jycg8YM;V6E;(J}+R8&^h^a?ANXxddI~kmhZvYXk zx2Vbp!g(ul;L1Bh;t={#in+=N6oZ-((I2Ve^l&f-Yk(ML+u}?SgrHQ2-sjzZEn%bMmKl>Sz8vorm$oo zX2`h>Nt$><33Ug{w(O&yOl3&+ZM7}^Iqo@H$ouZ8zVNi&S3V3lAgxr^CfPrI?*Y3| zolFvpi`D}J*lthtYkb2>uFe=DU^WPSc3Oz6QZ%#Zwa82lAzFDDMhJSB?^Wo3qnavh`wZ#9w5V6Fb6PU>Ip4LW z{JR<1^Xj&#ijaVF?1#uw4@6^t^=F0>X@N9n_^($LA;C2mWwFnNm6lrlpGHAom`~Uc z7q~e17{XN_Wr+M6q?sO``_}@k+&xnhp#)kpqy0fU_f%1Hz_>llJ~0cYRquzA4Cydg zSyU`i^}Wm5I8Lym4_Fg0Wj9G|C&IbnGxApRQ5pdDEnjLrr-TX$oFty-Tna&)qkeE#xf+SW$M z9U9y7qOgS(L&zFH515}@cR`tpqh@Q&lFe(RK zNwqhYK0Y0$j)t%q`mbqG8>9V5()!3mGML?pUx)HKGs83a-XtFU{+`LsUXv(1)>#dB z?0{y`?tO#6E2Tp)c=1swy55w;Rw-(~@%nA){`T#k zW;)wacji`;j9>f;9-3}*$%4`>iF?;bDip`QI<3vkmnPSxj^#oR4!7m&B_Fz`0xHI; zOoVwYiC8W0v};5}0Zsg5Od2oP$AV#H-X}ep4}8 z0xXMXC-2b&S3(J<#uiI73Lvv&oXz1y=*w}ZWJX`jPyB!w@TB%X=P>vz<8!tx$pzFg zGQ+8z&CD)BML<5*gisFz^MS84+0lai}3V#pz{Y!yV zP^(7Cq6D{{C8b2#FFVv@4he8BI$~z;17>;{kXIh{`Y?6h4r;GPGT*C+wVVj{XutWZ z8YPZtSD7*+UoPg&WY`}slqXJ=)$ObW7Z~rGeM*h*@&joUU~wUL0P-2GqVO6=Y4BeH zijFDfZhUolI~{P*La;}yWoG7xr$xn(oCeeemKekUgu^X&%{$pkDwOG#4}p?$DlH-UY3YM~AYh?FuF@Ny%H-CY{GS9C6K$xhR5U9|)VmAdINppQ_zhD6=qS1}s6<8-GCWD{X zC94ttMmlk!ckptaA_bilM!A~lCpkv#biFd~1=1kHx{P`DvRC9u`y)e-kUn|z`J(NA zS$EhY42I3%5^p`=;wwRRer!op`>EbV3^D)-RFPE4)JIpz_EA1DZku)3c1X;tL@lxu z4Cpatbb`u>zJ6JN5K^9Pb?zp?MMPl{IEXvLyytm$HuK%nY3|#bOz*#SwgD%6i~Go_ zrLuA=1=T5RpS+5zNBgCs*!6orBLT8QG&4l3I1MAV#;}AsjdP0s?LtGz6&g1Xp%5s- zkP|(B6WKp#U-$Z#@3PWWqxiu-2TAoO zoA#gi`c&X)y>xkCvkJ6p?q!OAP`0yW>RyxfITh;v$AEZH`!1Rpi12x77%??%8?(SO zROvi+i93KbLwVSXs)sZO>FDYYy^iS4cKuS*1|A`FbwzZS#vehJyNR;(`rT8~en}iy zKG z%N-k^oShR{X{R^&Qf$Tc71>81L+tlFNyAS4YYdW$DHS*q@;Deah;Uf6lAlVshN<&o*60&DbxhQA_FZ9oa^c)(I9t zib`4m$7q|%J76(DK}8W|<6EP$6Chh>6aVX6Oj&0^fbM=jQh}$1Dn@*(x7FCKy_c8h zw;Iwwq*Wtl(!5PvpEluiq5X68-K1WgSriT^VM^r7%v5-lgp8=rRY$F?{|jy(@J$H z715~DUN9>$3mUzd)1@7I%bBM4aSzG#1jdsSG%z(>;*=VU04&y#Zj^Wv(9TLXixag`g~ojbbQ7* z)m%zE+QKsO2{+Peo~OV=IdT0h2efiHXZWQRIa;Y_pvi8wBaV4OetZ-6y}L29Yuc49L42V*PqH)7j#+g^s&(5W!_tRHdDQkb6%QV&e!4!q&L;9zSLk84F#Gw%|Mp^l z>`86pL9%ul(XnJ{^r(7;a}TJFnnp^laYbA&V8%(qTV?eZU(-7Cvz#)V{s6j%IB>>H zA&)Z0#byKGiO{!APi4o7!n;%DbgIw>5O7YJ8` z8eDSkv96ET`kyW{CYyhwe~DeNelxoAhi<|LTDl&PR$@S!x93Kt(s@^b?Nj?-cEA(8`9a=&sjsWiz@z(xXc4eqvLeX0(J0)Aj>hq)c4@{mlx@ zZycfY;ax2l#s@gTmn8betzw`TRYO|*;9UE#NEu3~%U_%pV3BeLIXwUb z9i8;n$*6F7(IU~KM^15|4BzOjxZ**p0-fNb2yIhGu?3~+xjS1lp&oynI1NonLx>RI z`sU8M$;ur+qlg$l@XBKu2iOtEkHBiZJ_BU5>aJ~!nswX+q&WVh@LcO0fd{3IxP8At1t zRAv5%pmr;>pI4T)-$iX9#Wkwk!;rGv?oY_mG87cTrbKGf_Qg_R zaap@5UH{5XKtad2vCmDe@)?Uzg3)lu2>eC`}9~ot6Z?jS}|7)sy?GGT$#V{kYqU zNL+wb4!*=VvQAiyh(EbmQ|*~hSWq2Pm`wu9fg}s4n~yU=Ld?ijC|It1A4c|VOkVROVqJ%CcAeOl2-Ma zpk43sU;RGOn`}EiBGmM9!=;Imin^llAvuGB0J*?p^g4cpuHKF@wi!{AJNk4K zP=muK!57%H-La9tC!!Ub#yE7 zW7{s>nJ!N?TzHxBQ6(siO!%GSlxjxxjm@X^r8RtCeL46+W&qDaYZdsn^?FfmOY=0$ z5lSmx{&cs>)7=8E%14RQ!f;dsd%YiG2K7$wo4;6>-WvJBNnud2!=N+|i8YwMoh)^} zmv04uXTz;Wvqd#-i7m(1BMR@jF6pkJBNMB0j~K)cbfNKSJsJ!bPV7Wm!Ev$^xT&kN zu|V*-RJdt;UpSYBzNv^Ek!>D3J#-$mNd_%>mtOg549|8TSM^>+PwI}=0yzamw+yH- zAMVKVYuD7uh zew!4vMYd^-;c-n!gk$9yISae`h6M@=>guwMxd@iKV!><1a+#jmb;R_cE;3&){&eILI8YpQt4LYUZ_UAojuqYA{ zxtjOuXfAxu@wQpMGfm+TPkobeKaKqP^S1Du6NQmodd3U?jOWD{sC5D=_w?Q5K+_}X z+ne`h3LisQP*}CwTYZbyO@tv?Iy#B>?FEVNdgoxc;7}Q^4WlBTPa0+^_blH&ZYjFf z&(a-UkQd#g=1d!E*&naM9ote8R;U?wWXa%Tl#$|T=K>5^6DSwX1v7{_I6y{nT9XkV zseD}99fn$Ih|WHt(GxRSaAXd+G1I)*G(J~M-yCga`35_mwaP-3wS)&&!PmB|9}M2B z0^MFzCc2D+el)E;LU5moS5Ccw*0(_l(*d=0*I($UZbP&yt{@nUAMg|vQ#RGwsF_V- zxksyFh}DIaFMi~+<)l^ds!JrirdvVQsn9sT_e>1DRiNE)G|r3y;im{h&j2~XBahCb zK`}8lKxzNGr}AP9r<4{G%VJ7Khs(#@g-Qtti#1NlNFCs!lB0^03y%_RyFX^I z4BHN;tbhCS6!#-VMp~Sp_up4~V@(oc)0w}!v1^~^>OOwfY-O3Z$<{&Kl1%V=AHovO zOzQdlDR*e92^hFiZ^MMQ+DJLd6e7i0Wn|)aLqNwPY&DX$cj0!BRNaLO_4NfBLk$T5~kY zVsQ8oNq#^52m6a25JVM?fj$dMTuWr-yRS#>V0NC&RDM*Kb$zW9GV%Xv?kuCC?80}C zw3IZ0NS8w+EsAtWHw+*G^3vT5-ObRAltT?AsnR7#Gn6RO0t!esXY;=Q^X;tj?W}da z&SIWnWvvrnu`05uRQb4Lxbew=(kOG{BkqKeBUYB1!onDrp^eW>eNPKg!6e3p z-|yX=Km)kG;^Mn1xgTM~izhjk&b-9sSKmKyQ4hRJf^)*NIh#@``}9q;h+!!k^Kyapwo-*=dt#QKk72CR^aqT?t`o#G`(_4qiJL z@DY-MN~OSyg)`>(!xGgQrzhta@?QnE$l;pJARZ-t{IsjIP87NJ{e@OV;39{r+BU10 z_Km{_fm{(eQVhHb(R*Z5{8Ep}P*1_w7|f=B95J%|;H%&=@MZAjVnWRD(OgyOF?rbU z_H>iuDN!r`;+R;aloJ&WgHyiPei$$pnZsE4Gb7hwx=m>#z6hVY=*N7$jwkhHc3YKZ zeyYT6++D+gWqqw;9lD>9BpVz8N$4cSGfPP;#6a1s{m#ykOGZPsATqJ$}6X z`R{DB#rm#z#79@R0&Pp^=0)YGoA}op>|h%4N_8~qf%00GtebwHZGT#JA$})v`j?8J zMQ&Q{v|&RM{$>4794rt48Xaqit#W^Q1h4>`5{-$ao2z-YFIs-~+XAU7*B$wJj$E)2 z>%on9npwPYJZ^>9EG(~h@ss&O#Zj%50SDHQaemCCKMeQQ7WC1T{yZ`kSQ4(Z3ptM; zAWD(SyU5|W39b=dGw})+#ltVz(q(2nT*v{BI4KVJJ$qbUchI)@*4}kwK`4X=>@rM6 zvIvaUo5?B%=t#eBS|5P;#*Jt~kj$LcORIGskZSVSwb)jsX?>>N;+W0~bdKh*NI6O<UpIy=4kzHv69Uyq=4)+o{TKaG76#IXJ{L+ z(*HJPdQ~m;!&3qhj}0`Xq4i-(l&uV1ZvL@{9D^YpcIKR~uu zj`soZM9LT88Cfq_7Mw?7edmd_Y7nq^?vEK_yxVxm(=xC0NyjiRG~d+B{n2XOh^0}{ zaY^1Xk3tlGe4?V`dm9X&hFl#JF-Bu!>5@9#pkl1me|gQ<{v6#Jc_pK7U)`BMv!P0$jG9q zoC_w`6=!o14WlV*!VVxcR&04!7{jDdhYXEg8W0zFXH>o4WcH)6r`J%IRV<|d&h}iL zAEsF1Oj)Jl^b3_um6pobq!-F^e+H4hNnI+?x30EA<6cBbEe-i41n$Ikqw0u5NCvO2 z%w={eb6ZQgsOSz<$#J#|G%EyI$aOShnoaFQtMotv5)P+&t9bCvq4d0}6|_#D!W3ne zv#Er>#hGED$Xk9)eB4i0UJ#QgnRHO9(mTVV3OAx#Sukq3VOw>IP1pQv z)Lg^(Jk=pkQn`vPo%d1^^5POP<7^7jc6h+(`4CN-{~SpfC*vK#EGI^2-YCv@;9BQ& zt($G?(`acLn6stajkh6JzW2-AbegKHSo3GSnzJg8)1`HzCwV#jK>PFU%hdH-KNVUZ zoL94LUE_LM!!ydSTf_C;+?L2+CmZRP^N_4NQF|H|5s)<6D>;y$nm(8035^qLVz89D z=})B*Pd?Pp=p$aPH_~;u(mPNvdw-H6d1lyTu$Jyj zfM2Dg4y?Y^2Nd2RZwRck?bjV0{5^cTx?p4MljRy_&Xx>17A1!eukGF=dCq@~G_+jf z`U7k2Tzw9w2yyyrBt;Jnb#nV`Na$;FLK$oLL(GY=sxd^RGvu(S=hk|qHcHxia zqqtg~>f0e=4SMB1Yx>#x{^dhWTeWHGO@x37ZuAR~^X9&;)-y=i?u>d@F*(`>i?f6Z zd_7_e(7eeJtu>uSiU}PS!Ly^P*Uyo1A`hr7Y2UXlDt*?0HOdeD@R6xb3&Y~LSEWe} zTFAKNU4&01teZcErBfR8n>|Yi6p_s|_NE^2xkO<)n^igG@X*txl?!ujrVD1Iz#pXH z*C&efWj^VRgPktQMIrXuU7``{l3L3XouuK358j{BGdxjvYyooUA_}|;j_$wTB;#XF zG-elREEwCy9}x|f~nL#>DyCNPpN8E2nwB1`1>y|%gl{j^O`Ua+xNItfit)nAbZTjy9V)iH9S zzHLKpULesEJS~S*$wvu8@n;IC)1`mWbpJY%0yg49Kv{56Q<+jWR(kHZ>dvmY5-_)M z8!rs4H+etiTQs>Gjlny#oo%RG{xmg~K5e1S2ijb9V1NCfVWrbze8ZzAV;}`p>f@OW z@EAdd9m5x=$xZ*rX&HavF;+RRkkF?5!<*`XC3MJdD}?6fRryX5@HJ~!*U^Z2ys-Ff zbc6ii8||K7+r4Q4bo53e^5@$q~xm3$W3@Ihxt@}huL z3zZ|1g_KV{k&q+YDm|_YYz^w~G~UGgB|tuo6V3g4@NrMv=z##yCJ8A!*ifF0LS&$S z+@mXFzL))6FtJ;*`OQhP!6Cvco@sJIa91LotJ{o(%``nhxw@8VkJdnvSKF^mb0?wM zrqAW=RiAPEEsUTqUjFDpR4h^>s~(S5L88cWuOy)nS8LaZoH}R9@dpPkyrFkyn{>7) zhkKM?`4xOi>gt{EFxwNq9l~;e8#PqDYF*}TJ96WN$EidpYjH9s%26B1Vm)uoC59(~ zt%oead%RoaK6f+jQ>=`?Ue-4G{<^j)Uc=7@+bU@4rrBCwVV7RB%?e#lxbxqCGx(Pw zmx$yeiEyQ^qG9msG%WfeLT)7TK$BGT%d9V$1v_>e}BX1V8;$gHo#v^sh z1=$w4i7@}eB&T0k=v8?XDj6JhnpV;ZR)(=0A3GzOGw$lE5=IfBt zL>fr>oh6Kghg>H*h7swxcFVEnX!2z2y1w6CFf8q}wA!fWU||)^748tL^7|~7&eeW$ zhFGI7f?*OJ5@fDoRzjy`j7ANL$t0r|*~I1d3ECqTxGcHWQBtJTe08*BUx%r9T?18! z=$F-=c_mpwC3Lu@sU6Oq@`6dwRd7fQLLSQrx4rRAf`8r{Tm~{h$hO-y#7--l)T#3UUBx)D5cXIv#QT{+&cBL5=(<^b|#&?FyhmG;9M}$9_8hbHj6)*lN z#Wj{v6x>XAaV$BsbMqe}C@jl&idh}8G zB+F08U~~5$&onxJy1A{*Q_kSs5(rgW0+>pO=T<5RaXa zI_IyToiQ^B=Fiao+-VMJ#QY;#s|!izO^ZqVL3KI9UC+*`YhPY&dr!^3(0hrok;?Y? zLmA4Ny5T}3>>-LNCS~|O;{+NOMR^K*vmkj=-z;^FSzIMHt44MmZ&uHruq!;&yUzco z8{fK92jhA~Qn$#-%L8)-M62f3CK0J|St7+=PgJveJyD7;*=s$ifiLS}N&kd~#7svw zRA?O_KSMzyOL>E^S!s$B3Cb3(V0U-0Cc!!&?P%?yL9KmgNKI0HzRa>N58wsS6}5lq zHlW2~x`W77ct7iy`u~;t@}=CcWHJR9i3|bO+zNEZ%kckVI{B@G;?~~AW^yIm2R_{v zza>*d&E=(W-sf5lJ#M9GZv-h-tHs2~5k61y(IHQINiOu?j}ctio;t_E!V>U3`iENB zKJz7e)Bm9F7jy)@(|~av0mG5$6yFMp+B&%J#A=|3iISie$XK5EoILsR(Wm7%y)Tmd zdeuqm@7BP|T!RXCVDhtLYMZ~4{#G_6nM`3x`y~1y6}7b*z)7<7jwbT%47yhjxP7a} z1IuZIW<6lBeSr0$DwP&hR`IS@0cDr+HbnuKu!)kz>Rhuvw~HpV5`uij@;H<^sn5gjKM?xdMVF$&-S&ueJt^OW_m~EgXU4GEMN-~ z5$?)E>p10LiUjXPl^g+ta476PndMBC;bfhKf=8T~E*OKR06jpaHLAZrX^YtQU#Olm zC-u|yfa zxs&>DmA>FVWohj(pIkYgEe>#~Kn!q%pgOKt(kk^Us%?9GkMBQ}Q?3vcYyVhsa#1X} zg;LNG_wZ=F1Dqf$wu8LSo*CEI*INQV;%)CQaMsCUg$D(1VlWk^IBPWD47I~5Q`=AA zTgvENfRCY|4`h%_e9m&oD{1yQEmBUWawd@Vi^GD_okRrm8;2R4U@T(V1?goO58mJ1 zXdGIq8078Y6njA<&=^3H{BAf=!%a;X(6MKS^sxc8YsyCCj=z&puW@^ z(Y%*^bX8n(EEd1xPa>^I(497^G*15fFCw+$qlT)^7|cInOIZ*ZE+pwjxL$3{I$Fdu zrEpg`$h)ZsZ6 z-Ys${*z|UOvSi@N5FTnR@%oGsfQ!A<?aKKa-{G#dKLFtdg0$c~43BFschVZTKll+@70Hq*aw13MK#XCTa=QLEw z=9ZSOR8?sVlOwJL+&Fpl-8vTs_AB|mb8VW}izWztarmZ^qOImZxJunUk)G~&r_NEb z1pler;kFRE+ci*`v zT~PF|CNrQ+Rsd*y{}D>^n!%^p)B?fs-jd)vWf%{Wu>>=jF(ma@FtLDKvdbdz z&-k{IvMeTQYIy2|j{RJAb|5OI@4P*vm()Bx3rqCppJF@(!#i{0Sibc9f5 z+(w?Z#SR9U zVK>6v8=SX2-@lz-nC2hL$Y|@|9Ozju&%;nIG@H5t0c=!8&po`l}PK^vx??N z@Qal>;7&_(x55*$vwDn1zW*Jc>~N;yC1n4obW z?zH`PbKP2HEP?LDR=4lb?Y_shV!#30&WboMnU*LLa&@>d68lfraX1l1K8A53-E&KT z-VPDo5skoL0l;g{gx!goL85>iSJ#mkZWw#P3A;Gb9D656wum-q58e$=OJiLM+%wY0 z-xBitZNMt*ta^vhEw;GWN=_EKN(D&guAGvTfer5CBRr=qH0STYmDg%Gox3dd)bIJp zoW;;{Qif3wM|Pe*Ce|zI0a~!M9PBNA|FeA~LdFx|a`8uv*&cws{IExqCZoX1-0Jva z{yObnLnyRLc&tUv0#LsMhl5x&DiZiBn5Vu+6AH{T8s5WXgJ$B3`5x&3o@O4j`{}01 zoyK|LEttTuXHz_InR@eU*6QKBPz%lqqt-Ol0B(Wx&4I3&*Y7z^;D^5MIq+G-i~+`U zuUp^jMtmDlym*e!u-Mj~Ctww`2z)el538-P0=yPoBERv%LHQE|tgh31#=S!wzqcuY zc&K9$DP8ZpES;9jDCoW%v~CHq2W1y#(4qt$#Joc_{1eNQh0U!XHmCX2F<#9=-Qpp* z;xcy-DFr5QYd{aDJ+-kPAK&h$T;8@5+{P7|Tq{m|p|$&~wI~?#ZbG`6C}}$S;?my3 z{}`n|45Vu`r9YW?lAZRcI%%*#Fe~m3-Q0hLQ=)o%b8XcdMRKQ_TgU$N9sit1D_#z^ z6@)jPO@!uyYqhcaaZhjdAHc@zhE6s)01>t8wC-q^UCn2M z5j-OP)55zODkw!4huMBWbr9ApUfFJanr50@h!h_-78`iV{OL!&2}WQ^_(?2g*IG?m z{&&3mYw)G@t$0Z>vpdl8Wtty}N{Wc+H#sdK6EyXRJ$sXzk79sPNjw_l8YtQnGk8oE zKQm>DXc9|s;FSl`sAbc@vI(>gD~ z-uaLjVoKvwT4O~l*;Bk`d44}G-aM$V&=&J`TUg)yGy-4RK|zFpCNVI}hE{6yr25R6 zN0t*5aWhY#<1xJ&eTa?WO{t@X7U)vNjlJZ57!N_?`-?PgRy*D=x*vuUKMSDK?-T?O z!=u9Smg0fP?i*mT(&pF5@yo}@$F_qXxad9=@y#5d^Q)S5-`8vPm07X_DEn@{Gt1v} zqK7fHWilq6w&UPDgS4@vrI!|j!$!km2Lwa+s_^D&YYvlnoga5693(Ol^r~8vL<?-xmxt+_5Xk!`_PCoR}$6 zT;&YxLSLU}TY4Q{$Uq)TUQUK-a71M3_ot&tl{|SXr?#`m1zR}cSo=u>^_DoR^sw}#8|SWvVXDcJcuK7x0}hWwS-fY6{B4egG*T=ufq zHmB1v_Ob{KpO@&>JFxR^g>Oa+o;d_=bHz8;hx-*S_SDo(Vop;G{CL>{o-|kaeZH5l&*Hi#yoJs?*Nk5@^cd<*_Hx-K^DU?6gF%B#Gmn zLBQ5;(JfxZUQ7Gt*ZmpNMM+XjvVn_vGvBS!(EP{C3XicX^-AuS-c0_%E5q?_;?M6H zNd`k+=}z}V*;A3#!r(3_v*02c#S_SMzre8VYvKNH+=$F8hck_T;^>kp2%JCXH;>O1 z7Il4#lppJ_@s^t-an!-|rtG~3!O%e_V|Pe`Vn;~uJ-a)Ois&8%K`^+*ez{`MFvn|* z@+b0*V|SCO-z&w^+Z@e9xyX>c%E$eX5KA6BW9aQkQ0MFCX%}e=!l&)rgYy~sWJ)6R zc#EBeVp?x>l8{R|qbuy}4(AtPC6vfEiC>(b5qzN7yX6MUhe4i)5E5RCiP!-;nRrP zppX#sR>0OS4usu}EdgYr{j!A%+M)phAoFkruZRhA4|nq-(?_qp^s6g>7xBEis+9Vf zXBDX?z{eoaP@D(gAdWB=QXoZ0%6tQ4N85Y*%RN?qSNiH5z6pC&am#Mzx+T=pj$}Q3 zKf^EkU=+AsHGgZvv?J?W0=0StEC{y4-+9egc5(8jvX?9f@rdtr5SL+nNqRWm?Do=l zPCI>-Z7s5k(0pQO;ie-h!zocXVj%iPX!FLO6uuM+$ZFAEh2ju ztqWjHasSEIH=1~=4IAX|(?&7T%8;8I0}0&G&aApgO>k655Rgvc^Yg(j+#3yn!CKq} zp}ldlqizw=X{dMG;pj7~q0}csH42GzkXL7_(u(#nKusD=Ezy_IL?o5_kGR*a{cdX~ zf0dN4BGDTha9D_xtD74tpvLs`v=|T;IN}>LJAR)w<7}Zsw*mZ;<8X>D)Cc{ZkmVq; z2T||CUi$8sB@BHtSmT|U*b?ji{(AS`;83y>e3bh7vg+lcLF5P!oW0p?t);UNRl|SR zL-g!bll^?rA~-aL<4)ETqF~&4RGZH(>IIJXP=096LlJTBc_hxg-h!qm!%f{TNW_x- z!+l!Z9-xd@HIr7Xx|2LdQ=5X+%qlG;bK+6N$lX~khXhM6-GQdaaAT~X1{qok7DuhD z24OB{Q2UAS^d9tqxg~`Yu?ewUj))T=${zxl_h5>We}pvyx{^N)7{4;rAzyG|hdUuB z|GhARDotV?J-(92bM;`NoX;lTIoqUUlk~fHmpWu=y2DQWDO|7Tl(#qi)I1mVs0X-2d?{!7f($g!@z}i~4b#J`FWxP*RCCjXkkQz3_?ox%3Tti zqB5;TK&}lq+QNUe?2Ih3|5>d3-|Lz?Wyk-czqp@#i&Iai&ARhz!VsJ!g{CB@CX1AQ H9rC{b^ZhA_ literal 0 HcmV?d00001 diff --git a/img/naive_scan_runtime_vs_block_size.png b/img/naive_scan_runtime_vs_block_size.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d144b3ae0a975f5d21add45cdde7b523a10403 GIT binary patch literal 22311 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 F{sTf^4jTXf literal 0 HcmV?d00001 diff --git a/img/thrust_profiling.png b/img/thrust_profiling.png new file mode 100644 index 0000000000000000000000000000000000000000..5600351494f6ef0d09552868ba3fec5a61e71691 GIT binary patch literal 99897 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 z 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 E0AYMKMgRZ+ literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp index d4a3150..e7ecfd7 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 +const int SIZE = 1 << 27; // 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];