From 814add4db0fd48aa1ee8347cdec879ca73927514 Mon Sep 17 00:00:00 2001 From: HAN YAN Date: Thu, 17 Sep 2020 17:01:31 -0400 Subject: [PATCH 01/11] part 1: cpu --- stream_compaction/cpu.cu | 44 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 719fa11..7eed8d0 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -2,6 +2,7 @@ #include "cpu.h" #include "common.h" +#include namespace StreamCompaction { namespace CPU { @@ -19,7 +20,13 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + // TODO (exclusive) + if (n > 0) { + odata[0] = 0; + for (int i = 1; i < n; i++) { + odata[i] = odata[i - 1] + idata[i - 1]; + } + } timer().endCpuTimer(); } @@ -31,8 +38,15 @@ namespace StreamCompaction { int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + int idx = 0; + for (int i = 0; i < n; i++) { + if (idata[i] != 0) { + odata[idx] = idata[i]; + idx++; + } + } timer().endCpuTimer(); - return -1; + return idx; } /** @@ -43,8 +57,32 @@ namespace StreamCompaction { int compactWithScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); // TODO + std::vector tmp(n, 0); + std::vector scan_result(n); + int count = 0; + // build tmp binary array + for (int i = 0; i < n; i++) { + if (idata[i] != 0) { + tmp[i] = 1; + count++; + } + } + // scan + if (n > 0) { + scan_result[0] = 0; + for (int k = 1; k < n; k++) { + scan_result[k] = scan_result[k - 1] + tmp[k - 1]; + } + } + // scatter + for (int i = 0; i < n; i++) { + if (tmp[i] == 1) { + int idx = scan_result[i]; + odata[idx] = idata[i]; + } + } timer().endCpuTimer(); - return -1; + return count; } } } From 06c48616f8a1cbeb346108e05b02d719f33ede2e Mon Sep 17 00:00:00 2001 From: HAN YAN Date: Thu, 17 Sep 2020 20:44:51 -0400 Subject: [PATCH 02/11] part 2: naive --- stream_compaction/naive.cu | 72 +++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 4308876..9089f83 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -12,14 +12,84 @@ namespace StreamCompaction { return timer; } // TODO: __global__ + __global__ void kernelScan(int *g_odata, int *g_idata, int *A_data, int *B_data, int k) { + /* + 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 + */ - /** + int index = threadIdx.x; + A_data[index] = (index > 0) ? g_idata[index - 1] : 0; + __syncthreads(); + int offset = 1; + for (int d = 1; d <= k; d++) { + if (index >= offset) { + B_data[index] = A_data[index] + A_data[index - offset]; + } + else { + B_data[index] = A_data[index]; + } + offset *= 2; + __syncthreads(); + // swap pointers + int *tmp = A_data; + A_data = B_data; + B_data = tmp; + } + // point odata to A_data + g_odata[index] = A_data[index]; + } + + + /*** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + // allocate device arrays + int *A_data; + int *B_data; + cudaMalloc((void**)&A_data, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc A_data failed!"); + cudaMalloc((void**)&B_data, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc B_data failed!"); + + int *g_odata; + int *g_idata; + cudaMalloc((void**)&g_idata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc g_idata failed!"); + cudaMalloc((void**)&g_odata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc g_odata failed!"); + // cudaMemcpy(g_odata, odata, sizeof(int) * n, cudaMemcpyHostToDevice); + cudaMemcpy(g_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + + int k = ilog2ceil(n); + timer().startGpuTimer(); // TODO + kernelScan<<<1, n>>>(g_odata, g_idata, A_data, B_data, k); + timer().endGpuTimer(); + + // copy output + cudaMemcpy(odata, g_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); + checkCUDAErrorFn("cudaMemcpy odata failed!"); + // free device arrays + cudaFree(A_data); + cudaFree(B_data); } } } From 786acb7ffe3dd6fccaa6602a89dadc40b28e7341 Mon Sep 17 00:00:00 2001 From: HAN YAN Date: Thu, 17 Sep 2020 23:06:41 -0400 Subject: [PATCH 03/11] efficient prelim --- stream_compaction/efficient.cu | 87 ++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 2db346e..5e82022 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -12,13 +12,100 @@ namespace StreamCompaction { return timer; } + // GPU Gems 3 example + __global__ void prescan(float *g_odata, float *g_idata, int n) { + extern __shared__ float temp[]; // allocated on invocation + int thid = threadIdx.x; + int offset = 1; + temp[2 * thid] = g_idata[2 * thid]; // load input into shared memory + temp[2 * thid + 1] = g_idata[2 * thid + 1]; + for (int d = n >> 1; d > 0; d >>= 1) // build sum in place up the tree + { + __syncthreads(); + if (thid < d) { + int ai = offset * (2 * thid + 1) - 1; + int bi = offset * (2 * thid + 2) - 1; + temp[bi] += temp[ai]; + } + offset *= 2; + } + if (thid == 0) { temp[n - 1] = 0; } // clear the last element + for (int d = 1; d < n; d *= 2) // traverse down tree & build scan + { + offset >>= 1; + __syncthreads(); + if (thid < d) { + int ai = offset * (2 * thid + 1) - 1; + int bi = offset * (2 * thid + 2) - 1; + float t = temp[ai]; + temp[ai] = temp[bi]; + temp[bi] += t; + } + } + __syncthreads(); + g_odata[2 * thid] = temp[2 * thid]; // write results to device memory + g_odata[2 * thid + 1] = temp[2 * thid + 1]; + } + + __global__ void kernelEfficientScan(int *g_odata, int *g_idata, int n, int N) { + int index = threadIdx.x; + int offset = 2; + g_odata[index] = g_idata[index]; + // up-sweep + for (int d = N / 2; d >= 1; d >>= 1) { + __syncthreads(); + if (index < d) { + int a = n - 1 - (index * offset); + int b = a - offset / 2; + if (a >= 0 && b >= 0) { + g_odata[a] += g_odata[b]; + } + } + offset *= 2; + } + // down-sweep + if (index == n - 1 && n > 0) { + g_odata[index] = 0; + } + for (int d = 1; d <= N / 2; d *= 2) { + __syncthreads(); + if (index < d) { + int a = n - 1 - (index * offset); + int b = a - offset / 2; + if (a >= 0 && b >= 0) { + int tmp = g_odata[b]; + g_odata[b] = g_odata[a]; + g_odata[a] += tmp; + } + } + offset /= 2; + } + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + int k = ilog2ceil(n); + int N = (int) pow(2, k); + + int *g_odata; + int *g_idata; + cudaMalloc((void**)&g_idata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc g_idata failed!"); + cudaMalloc((void**)&g_odata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc g_odata failed!"); + cudaMemcpy(g_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + timer().startGpuTimer(); // TODO + kernelEfficientScan<<<1, n >>>(g_odata, g_idata, n, N); + timer().endGpuTimer(); + + // copy back ouput + cudaMemcpy(odata, g_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); + checkCUDAErrorFn("cudaMemcpy odata failed!"); } /** From 7dc1aff053ce5d121aa879fd55567af876c5425f Mon Sep 17 00:00:00 2001 From: HAN YAN Date: Fri, 18 Sep 2020 00:09:19 -0400 Subject: [PATCH 04/11] efficient scan --- stream_compaction/efficient.cu | 8 ++++++-- stream_compaction/naive.cu | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 5e82022..b9fcd45 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -64,9 +64,10 @@ namespace StreamCompaction { offset *= 2; } // down-sweep - if (index == n - 1 && n > 0) { - g_odata[index] = 0; + if (index == 0 && n > 0) { + g_odata[n - 1] = 0; } + offset /= 2; for (int d = 1; d <= N / 2; d *= 2) { __syncthreads(); if (index < d) { @@ -106,6 +107,9 @@ namespace StreamCompaction { // copy back ouput cudaMemcpy(odata, g_odata, sizeof(int) * n, cudaMemcpyDeviceToHost); checkCUDAErrorFn("cudaMemcpy odata failed!"); + + cudaFree(g_odata); + cudaFree(g_idata); } /** diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 9089f83..b0fb55a 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -90,6 +90,8 @@ namespace StreamCompaction { // free device arrays cudaFree(A_data); cudaFree(B_data); + cudaFree(g_odata); + cudaFree(g_idata); } } } From 65b8cc22aab3eb5f43c67e064ba2fe2b026b1849 Mon Sep 17 00:00:00 2001 From: HAN YAN Date: Sat, 19 Sep 2020 13:42:39 -0400 Subject: [PATCH 05/11] efficient compact --- stream_compaction/efficient.cu | 87 +++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index b9fcd45..84d147a 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -83,6 +83,58 @@ namespace StreamCompaction { } } + __global__ void kernelEfficientCompact(int *g_odata, int *g_idata, int *g_sdata, int *g_bdata, int n, int N) { + int index = threadIdx.x; + // Build binary array + if (g_idata[index] == 0) { + g_bdata[index] = 0; + } + else { + g_bdata[index] = 1; + } + // Efficient scan + __syncthreads(); + int offset = 2; + g_sdata[index] = g_bdata[index]; + // up-sweep + for (int d = N / 2; d >= 1; d >>= 1) { + __syncthreads(); + if (index < d) { + int a = n - 1 - (index * offset); + int b = a - offset / 2; + if (a >= 0 && b >= 0) { + g_sdata[a] += g_sdata[b]; + } + } + offset *= 2; + } + // down-sweep + if (index == 0 && n > 0) { + g_sdata[n - 1] = 0; + } + offset /= 2; + for (int d = 1; d <= N / 2; d *= 2) { + __syncthreads(); + if (index < d) { + int a = n - 1 - (index * offset); + int b = a - offset / 2; + if (a >= 0 && b >= 0) { + int tmp = g_sdata[b]; + g_sdata[b] = g_sdata[a]; + g_sdata[a] += tmp; + } + } + offset /= 2; + } + // Scatter + __syncthreads(); + if (g_bdata[index] == 1) { + int idx = g_sdata[index]; + g_odata[idx] = g_idata[index]; + } + } + + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ @@ -122,10 +174,43 @@ namespace StreamCompaction { * @returns The number of elements remaining after compaction. */ int compact(int n, int *odata, const int *idata) { + int k = ilog2ceil(n); + int N = (int)pow(2, k); + + int *g_odata; + int *g_idata; + int *g_bdata; + int *g_sdata; + cudaMalloc((void**)&g_idata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc g_idata failed!"); + cudaMalloc((void**)&g_odata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc g_odata failed!"); + cudaMalloc((void**)&g_bdata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc g_bdata failed!"); + cudaMalloc((void**)&g_sdata, n * sizeof(int)); + checkCUDAErrorFn("cudaMalloc g_sdata failed!"); + + cudaMemcpy(g_idata, idata, sizeof(int) * n, cudaMemcpyHostToDevice); + timer().startGpuTimer(); // TODO + kernelEfficientCompact<<<1, n>>>(g_odata, g_idata, g_sdata, g_bdata, n, N); + timer().endGpuTimer(); - return -1; + + // copy back output + int c1, c2; + cudaMemcpy(&c1, g_bdata + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&c2, g_sdata + n - 1, sizeof(int), cudaMemcpyDeviceToHost); + int count = c1 + c2; + cudaMemcpy(odata, g_odata, sizeof(int) * count, cudaMemcpyDeviceToHost); + + cudaFree(g_odata); + cudaFree(g_idata); + cudaFree(g_sdata); + cudaFree(g_bdata); + + return count; } } } From 9403704f475149ed5bd25f059e18feedbe0d9c93 Mon Sep 17 00:00:00 2001 From: HAN YAN Date: Sat, 19 Sep 2020 14:47:40 -0400 Subject: [PATCH 06/11] part 4: thrust scan --- stream_compaction/thrust.cu | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 1def45e..bf3ae41 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -18,11 +18,21 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { + thrust::host_vector host_in(idata, idata + n); + + thrust::device_vector dev_in = host_in; + thrust::device_vector dev_out(n); + timer().startGpuTimer(); // TODO use `thrust::exclusive_scan` // example: for device_vectors dv_in and dv_out: // thrust::exclusive_scan(dv_in.begin(), dv_in.end(), dv_out.begin()); + thrust::exclusive_scan(dev_in.begin(), dev_in.end(), dev_out.begin()); + timer().endGpuTimer(); + + int *dev_out_ptr = thrust::raw_pointer_cast(&dev_out[0]); + cudaMemcpy(odata, dev_out_ptr, sizeof(int) * n, cudaMemcpyDeviceToHost); } } } From c38cb2665c737f5e1123cae0fbc7a33e25762ed1 Mon Sep 17 00:00:00 2001 From: HAN YAN Date: Sat, 19 Sep 2020 18:35:29 -0400 Subject: [PATCH 07/11] common --- stream_compaction/common.cu | 11 +++++++++++ stream_compaction/efficient.cu | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/stream_compaction/common.cu b/stream_compaction/common.cu index 2ed6d63..08f4b13 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -24,6 +24,13 @@ namespace StreamCompaction { */ __global__ void kernMapToBoolean(int n, int *bools, const int *idata) { // TODO + int index = threadIdx.x; + if (idata[index] == 0) { + bools[index] = 0; + } + else { + bools[index] = 1; + } } /** @@ -33,6 +40,10 @@ namespace StreamCompaction { __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { // TODO + int index = threadIdx.x; + if (bools[index] == 1) { + odata[indices[index]] = idata[index]; + } } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 84d147a..cab5f33 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -194,7 +194,10 @@ namespace StreamCompaction { timer().startGpuTimer(); // TODO - kernelEfficientCompact<<<1, n>>>(g_odata, g_idata, g_sdata, g_bdata, n, N); + //kernelEfficientCompact<<<1, n>>>(g_odata, g_idata, g_sdata, g_bdata, n, N); + Common::kernMapToBoolean<<<1, n>>>(n, g_bdata, g_idata); + kernelEfficientScan<<<1, n>>>(g_sdata, g_bdata, n, N); + Common::kernScatter<<<1, n>>>(n, g_odata, g_idata, g_bdata, g_sdata); timer().endGpuTimer(); From d1171d9f84e1c62a97217e44a8049701e7722fe2 Mon Sep 17 00:00:00 2001 From: Tracy-Yan <33076509+Tracy-Yan@users.noreply.github.com> Date: Sat, 19 Sep 2020 18:40:12 -0400 Subject: [PATCH 08/11] Update README.md test output --- README.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0e38ddb..1da4159 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,63 @@ CUDA Stream Compaction * (TODO) [LinkedIn](), [personal website](), [twitter](), etc. * Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) -### (TODO: Your README) +### Questions and Plots -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +### Test Program Output +Array size = 1 << 8 + +``` +**************** +** SCAN TESTS ** +**************** + [ 22 1 25 15 7 27 27 23 12 1 49 11 46 ... 19 0 ] +==== cpu scan, power-of-two ==== + elapsed time: 0.0005ms (std::chrono Measured) + [ 0 22 23 48 63 70 97 124 147 159 160 209 220 ... 6133 6152 ] +==== cpu scan, non-power-of-two ==== + elapsed time: 0.0005ms (std::chrono Measured) + [ 0 22 23 48 63 70 97 124 147 159 160 209 220 ... 6088 6092 ] + passed +==== naive scan, power-of-two ==== + elapsed time: 0.009216ms (CUDA Measured) + passed +==== naive scan, non-power-of-two ==== + elapsed time: 0.008192ms (CUDA Measured) + passed +==== work-efficient scan, power-of-two ==== + elapsed time: 0.013312ms (CUDA Measured) + passed +==== work-efficient scan, non-power-of-two ==== + elapsed time: 0.012288ms (CUDA Measured) + passed +==== thrust scan, power-of-two ==== + elapsed time: 0.091968ms (CUDA Measured) + passed +==== thrust scan, non-power-of-two ==== + elapsed time: 0.053248ms (CUDA Measured) + passed + +***************************** +** STREAM COMPACTION TESTS ** +***************************** + [ 0 1 3 3 3 3 1 3 0 3 3 3 2 ... 1 0 ] +==== cpu compact without scan, power-of-two ==== + elapsed time: 0.0008ms (std::chrono Measured) + [ 1 3 3 3 3 1 3 3 3 3 2 1 1 ... 3 1 ] + passed +==== cpu compact without scan, non-power-of-two ==== + elapsed time: 0.0012ms (std::chrono Measured) + [ 1 3 3 3 3 1 3 3 3 3 2 1 1 ... 3 2 ] + passed +==== cpu compact with scan ==== + elapsed time: 0.0077ms (std::chrono Measured) + [ 1 3 3 3 3 1 3 3 3 3 2 1 1 ... 3 1 ] + passed +==== work-efficient compact, power-of-two ==== + elapsed time: 0.017408ms (CUDA Measured) + passed +==== work-efficient compact, non-power-of-two ==== + elapsed time: 0.017408ms (CUDA Measured) + passed +``` From 525d80bb021ff2df64fa7440e7595a2738600783 Mon Sep 17 00:00:00 2001 From: Tracy-Yan <33076509+Tracy-Yan@users.noreply.github.com> Date: Sat, 19 Sep 2020 18:44:16 -0400 Subject: [PATCH 09/11] Add files via upload graphs --- img/project2-p1.png | Bin 0 -> 64777 bytes img/project2-p2.png | Bin 0 -> 66218 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/project2-p1.png create mode 100644 img/project2-p2.png diff --git a/img/project2-p1.png b/img/project2-p1.png new file mode 100644 index 0000000000000000000000000000000000000000..9332f03b0a1f8bf2acf72618efe2dfbc0144892d GIT binary patch literal 64777 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 SH9G?Tkr0u+nR`Re>;D5ic6-18 literal 0 HcmV?d00001 From a93158e9ecccb8a8ec666a4100f77302952df72f Mon Sep 17 00:00:00 2001 From: Tracy-Yan <33076509+Tracy-Yan@users.noreply.github.com> Date: Sat, 19 Sep 2020 19:28:32 -0400 Subject: [PATCH 10/11] Update README.md Filled on questions --- README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1da4159..aaeef01 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,22 @@ 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) +* Han Yan +* Tested on: CETS Virtual Lab ### Questions and Plots +Plots for varying array size. The scan time is shown in log 2 scale. + +![](img/project2-p1.png) + +![](img/project2-p2.png) + +Analysis: +* For all array sizes, the CPU approach takes less time than GPU approaches. Among the GPU approaches, the naive implementation somehow takes less time. In terms of trend, the CPU approach is more susceptible to increasing array size (with larger slope), whereas both GPU methods are less susceptible - this is expected because the time complexity of CPU approach is O(n) and GPU approaches is O(log(n)). + +* I expected both the naive and work efficient scans to be faster than simple gpu scan, but this is not the case for my implementation. I think a bottleneck here for both naive and work efficient scan could be global memory I/O, since I'm storing all arrays in the device global memory. And both naive and efficient algorithms have global memory access in every level of iteration. + +* I also expected the efficient scan to be faster than the naive scan. One factor that potentially slows down the efficient scan is the invocation of "__syncthreads()" in each level of up/down sweep. But in most levels, many threads don't really contribute any work. ### Test Program Output From f2c2616d6c9b38d1a149a62931c7f98a9d629cf9 Mon Sep 17 00:00:00 2001 From: Tracy-Yan <33076509+Tracy-Yan@users.noreply.github.com> Date: Sat, 19 Sep 2020 20:04:55 -0400 Subject: [PATCH 11/11] Update README.md about thrust --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index aaeef01..a5e9403 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,8 @@ Analysis: * I also expected the efficient scan to be faster than the naive scan. One factor that potentially slows down the efficient scan is the invocation of "__syncthreads()" in each level of up/down sweep. But in most levels, many threads don't really contribute any work. +* In thrust exclusive_scan implementation, I think it first does some memory copy, and then do the computation. + ### Test Program Output Array size = 1 << 8