From d9dd308ae2bea6c9e431dc1c644b0b801b8f3c76 Mon Sep 17 00:00:00 2001 From: Xinran Tao Date: Sun, 15 Sep 2024 23:08:35 -0400 Subject: [PATCH 1/6] FInished cpu and naive but still working on the compact of efficient --- src/main.cpp | 19 ++--- stream_compaction/common.cu | 19 ++++- stream_compaction/cpu.cu | 50 +++++++++++-- stream_compaction/efficient.cu | 131 ++++++++++++++++++++++++++++++++- stream_compaction/naive.cu | 54 +++++++++++++- 5 files changed, 253 insertions(+), 20 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 896ac2b..458dcee 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -29,6 +29,7 @@ int main(int argc, char* argv[]) { genArray(SIZE - 1, a, 50); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; + printDesc("Input"); printArray(SIZE, a, true); // initialize b using StreamCompaction::CPU::scan you implement @@ -51,34 +52,34 @@ 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 - onesArray(SIZE, c); - printDesc("1s array for finding bugs"); - StreamCompaction::Naive::scan(SIZE, c, a); - printArray(SIZE, c, true); */ + /* For bug-finding only: Array of 1s to help find bugs in stream compaction or scan */ + // onesArray(SIZE, c); + // printDesc("1s array for finding bugs"); + // StreamCompaction::Naive::scan(SIZE, c, a); + // printArray(SIZE, c, true); zeroArray(SIZE, c); 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); 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); diff --git a/stream_compaction/common.cu b/stream_compaction/common.cu index 2ed6d63..cd9ba00 100644 --- a/stream_compaction/common.cu +++ b/stream_compaction/common.cu @@ -23,7 +23,13 @@ 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 i = threadIdx.x + (blockIdx.x * blockDim.x); + + if (i >= n) { + return; + } + + bools[i] = idata[i] != 0 ? 1 : 0; } /** @@ -32,8 +38,15 @@ namespace StreamCompaction { */ __global__ void kernScatter(int n, int *odata, const int *idata, const int *bools, const int *indices) { - // TODO - } + int i = threadIdx.x + (blockIdx.x * blockDim.x); + if (i >= n) { + return; + } + + if (bools[i] == 1) { + odata[indices[i]] = idata[i]; + } + } } } diff --git a/stream_compaction/cpu.cu b/stream_compaction/cpu.cu index 719fa11..f390053 100644 --- a/stream_compaction/cpu.cu +++ b/stream_compaction/cpu.cu @@ -19,10 +19,23 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + + odata[0] = 0; + for (int i = 1; i < n; i++) { + odata[i] = odata[i - 1] + idata[i - 1]; + } + timer().endCpuTimer(); } + // Use this in compactWithScan so that we won't have "CPU timer already started" bug + void scan_without_timer(int n, int *odata, const int *idata) { + odata[0] = 0; + for (int i = 1; i < n; i++) { + odata[i] = odata[i - 1] + idata[i - 1]; + } + } + /** * CPU stream compaction without using the scan function. * @@ -30,9 +43,17 @@ namespace StreamCompaction { */ int compactWithoutScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + + int cur_out_idx = 0; + for (int i = 0; i < n; i++) { + if (idata[i] != 0) { + odata[cur_out_idx] = idata[i]; + cur_out_idx++; + } + } + timer().endCpuTimer(); - return -1; + return cur_out_idx; } /** @@ -42,9 +63,28 @@ namespace StreamCompaction { */ int compactWithScan(int n, int *odata, const int *idata) { timer().startCpuTimer(); - // TODO + + // Step 1: Map idata to a 0/1 array + int *bools = new int[n]; // Array to hold the 0s and 1s + for (int i = 0; i < n; i++) { + bools[i] = (idata[i] != 0) ? 1 : 0; + } + + // Step 2: Perform the scan using the existing scan function + int *scanResult = new int[n]; // Array to hold the scan result + scan_without_timer(n, scanResult, bools); // Perform the scan on the bools array + + // Step 3: Scatter non-zero elements into odata + int count = 0; + for (int i = 0; i < n; i++) { + if (bools[i] == 1) { + odata[scanResult[i]] = idata[i]; + count++; + } + } + timer().endCpuTimer(); - return -1; + return count; } } } diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 2db346e..02e1be2 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -3,6 +3,8 @@ #include "common.h" #include "efficient.h" +#define blockSize 128 // Default is 128 + namespace StreamCompaction { namespace Efficient { using StreamCompaction::Common::PerformanceTimer; @@ -12,15 +14,109 @@ namespace StreamCompaction { return timer; } + // n & (n - 1): This expression clears the lowest set bit of n. + // If n is a power of 2, it has exactly one bit set, and subtracting 1 from it flips + // all the bits after the most significant bit. Performing n & (n - 1) results in + // 0 if and only if n is a power of 2. + // n > 0: This ensures that n is positive, since negative numbers and zero are not powers of 2. + __device__ __host__ bool isPowerOf2(int n) { + return (n > 0) && ((n & (n - 1)) == 0); + } + + __global__ void upsweep(int n, int d, int *data) { + int k = threadIdx.x + (blockIdx.x * blockDim.x); + + if (k >= n) { + return; + } + + // is that shifting bits to the left by n positions is equivalent to multiplying the number by 2^n. + // faster than calling pow(2, n) + int two_pow_d_plus_1 = 1 << (d + 1); + + if (k % two_pow_d_plus_1 != 0) { + return; + } + + int two_pow_d = 1 << d; + data[k + two_pow_d_plus_1 - 1] += data[k + two_pow_d - 1]; + } + + __global__ void init_downsweep(int n, int *odata) { + int i = threadIdx.x + (blockIdx.x * blockDim.x); + + if (i == n - 1) { + odata[i] = 0; + } + } + + __global__ void downsweep(int n, int d, int *data) { + int k = threadIdx.x + (blockIdx.x * blockDim.x); + + if (k >= n) { + return; + } + + // is that shifting bits to the left by n positions is equivalent to multiplying the number by 2^n. + // faster than calling pow(2, n) + int two_pow_d_plus_1 = 1 << (d + 1); + + if (k % two_pow_d_plus_1 != 0) { + return; + } + + int two_pow_d = 1 << d; + int t = data[k + two_pow_d - 1]; + data[k + two_pow_d - 1] = data[k + two_pow_d_plus_1 - 1]; + data[k + two_pow_d_plus_1 - 1] += t; + } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - // TODO + int *dev_odata; + // Your intermediate array sizes will need to be rounded to the next power of two. + int rounded_n = isPowerOf2(n) ? n : 1 << ilog2ceil(n); + + cudaMalloc((void**)&dev_odata, rounded_n * sizeof(int)); + + // Copy idata to odata first + cudaMemcpy(dev_odata, idata, rounded_n * sizeof(int), cudaMemcpyHostToDevice); + + // Set up the grid and block sizes + dim3 fullBlocksPerGrid((rounded_n + blockSize - 1) / blockSize); + + // upsweep + for (int d = 0; d <= ilog2ceil(rounded_n) - 1; d++) { + upsweep << > > (rounded_n, d, dev_odata); + } + + // downsweep + init_downsweep << > > (rounded_n, dev_odata); + + for (int d = ilog2ceil(n) - 1; d >= 0; d--) { + downsweep << > > (rounded_n, d, dev_odata); + } + + // Copy the result back to the host + cudaMemcpy(odata, dev_odata, rounded_n * sizeof(int), cudaMemcpyDeviceToHost); + + cudaFree(dev_odata); + timer().endGpuTimer(); } + // __global__ void scan_without_timer(int n, int *odata, const int *idata){ + // // Your intermediate array sizes will need to be rounded to the next power of two. + // int rounded_n = isPowerOf2(n) ? n : 1 << ilog2ceil(n); + + // for (int d = 0; d <= ilog2ceil(rounded_n) - 1; d++) { + // upsweep(rounded_n, d, odata); + // } + // } + /** * Performs stream compaction on idata, storing the result into odata. * All zeroes are discarded. @@ -33,6 +129,39 @@ namespace StreamCompaction { int compact(int n, int *odata, const int *idata) { timer().startGpuTimer(); // TODO + // Initialise host variables + int *bools = new int[n]; + int *scanResult = new int[n]; // Array to hold the scan result + // Initialise device variables + int *dev_bools, *dev_idata, *dev_odata, *dev_scanResult; + // Allocate memory on the device + cudaMalloc((void**)&dev_bools, n * sizeof(int)); + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMalloc((void**)&dev_scanResult, n * sizeof(int)); + + cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); + + // Set up the grid and block sizes + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + + // Map idata to a 0/1 array + Common::kernMapToBoolean << > > (n, dev_bools, dev_idata); + cudaMemcpy(bools, dev_bools, n * sizeof(int), cudaMemcpyDeviceToHost); + + // Scan the boolean array + scan(n, scanResult, bools); // The scan function will handle the rounding of n + cudaMemcpy(dev_scanResult, scanResult, n * sizeof(int), cudaMemcpyHostToDevice); + + // Perform scatter + Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_scanResult); + + // Clean up device memory + cudaFree(dev_bools); + cudaFree(dev_idata); + cudaFree(dev_odata); + cudaFree(dev_scanResult); + timer().endGpuTimer(); return -1; } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index 4308876..bf2bc36 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -3,6 +3,8 @@ #include "common.h" #include "naive.h" +#define blockSize 128 // Default is 128 + namespace StreamCompaction { namespace Naive { using StreamCompaction::Common::PerformanceTimer; @@ -11,14 +13,62 @@ namespace StreamCompaction { static PerformanceTimer timer; return timer; } - // TODO: __global__ + + __global__ void init_buff(int n, int *odata, const int *idata) { + int i = threadIdx.x + (blockIdx.x * blockDim.x); + + if (i == 0) { + odata[i] = 0; + return; + } + + if (i < n) { + odata[i] = idata[i - 1]; + } + } + + __global__ void dev_scan(int pow_d, int *odata, const int *idata) { + int k = threadIdx.x + (blockIdx.x * blockDim.x); + + if (k >= pow_d) { + odata[k] = idata[k - pow_d] + idata[k]; + } + } /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - // TODO + + int *dev_buff1, *dev_buff2; + + // Allocate memory on the device + cudaMalloc((void**)&dev_buff1, n * sizeof(int)); + cudaMalloc((void**)&dev_buff2, n * sizeof(int)); + + // Copy data to the buffer for initialisation + cudaMemcpy(dev_buff1, idata, n * sizeof(int), cudaMemcpyHostToDevice); + + // Set up the grid and block sizes + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + + // Because we want the first element to be 0 and the rest filled with the original data, we need to fill the values explicitly + init_buff << > > (n, dev_buff2, dev_buff1); + cudaMemcpy(dev_buff1, dev_buff2, n * sizeof(int), cudaMemcpyDeviceToDevice); + + for (int d = 1; d <= ilog2ceil(n); d++) { + int pow_d = 1 << (d - 1); + dev_scan << > > (pow_d, dev_buff2, dev_buff1); + // cudaDeviceSynchronize(); // Ensure the kernel completes + cudaMemcpy(dev_buff1, dev_buff2, n * sizeof(int), cudaMemcpyDeviceToDevice); + } + + cudaMemcpy(odata, dev_buff1, n * sizeof(int), cudaMemcpyDeviceToHost); + + cudaFree(dev_buff1); + cudaFree(dev_buff2); + timer().endGpuTimer(); } } From ffd084c97f0748fc425c434e56df6584f251f9a6 Mon Sep 17 00:00:00 2001 From: Xinran Tao Date: Mon, 16 Sep 2024 15:44:16 -0400 Subject: [PATCH 2/6] Finished work-efficient scan and compact functions --- src/main.cpp | 4 +- stream_compaction/efficient.cu | 83 +++++++++++++++++++++------------- 2 files changed, 54 insertions(+), 33 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 458dcee..99f7607 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -138,14 +138,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/efficient.cu b/stream_compaction/efficient.cu index 02e1be2..cba2413 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -8,6 +8,10 @@ namespace StreamCompaction { namespace Efficient { using StreamCompaction::Common::PerformanceTimer; + + // Initialise device variables to use in compact() + int *dev_bools, *dev_idata, *dev_odata, *dev_scanResult; + PerformanceTimer& timer() { static PerformanceTimer timer; @@ -76,46 +80,66 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - int *dev_odata; + int *dev_odata_local; // Your intermediate array sizes will need to be rounded to the next power of two. int rounded_n = isPowerOf2(n) ? n : 1 << ilog2ceil(n); - cudaMalloc((void**)&dev_odata, rounded_n * sizeof(int)); + cudaMalloc((void**)&dev_odata_local, rounded_n * sizeof(int)); - // Copy idata to odata first - cudaMemcpy(dev_odata, idata, rounded_n * sizeof(int), cudaMemcpyHostToDevice); + // Copy idata to dev_odata_local first + // Although we might initialise dev_odata_local with more than n elements, idata only contains n elements + cudaMemcpy(dev_odata_local, idata, n * sizeof(int), cudaMemcpyHostToDevice); // Set up the grid and block sizes dim3 fullBlocksPerGrid((rounded_n + blockSize - 1) / blockSize); // upsweep for (int d = 0; d <= ilog2ceil(rounded_n) - 1; d++) { - upsweep << > > (rounded_n, d, dev_odata); + upsweep << > > (rounded_n, d, dev_odata_local); } // downsweep - init_downsweep << > > (rounded_n, dev_odata); + init_downsweep << > > (rounded_n, dev_odata_local); - for (int d = ilog2ceil(n) - 1; d >= 0; d--) { - downsweep << > > (rounded_n, d, dev_odata); + for (int d = ilog2ceil(rounded_n) - 1; d >= 0; d--) { + downsweep << > > (rounded_n, d, dev_odata_local); } // Copy the result back to the host - cudaMemcpy(odata, dev_odata, rounded_n * sizeof(int), cudaMemcpyDeviceToHost); + // Note that odata is only supposed to have n elements + cudaMemcpy(odata, dev_odata_local, n * sizeof(int), cudaMemcpyDeviceToHost); - cudaFree(dev_odata); + cudaFree(dev_odata_local); timer().endGpuTimer(); } - // __global__ void scan_without_timer(int n, int *odata, const int *idata){ - // // Your intermediate array sizes will need to be rounded to the next power of two. - // int rounded_n = isPowerOf2(n) ? n : 1 << ilog2ceil(n); + /************************************************************************************ + * Define another scan function so that it can be called from compact() + * Here dev_bools has already been initialised in compact() + ************************************************************************************/ + void scan_without_timer(int n) { + // Initialise dev_scanResult. dev_bools only has n elements. + cudaMemcpy(dev_scanResult, dev_bools, n * sizeof(int), cudaMemcpyDeviceToDevice); + + // Your intermediate array sizes will need to be rounded to the next power of two. + int rounded_n = isPowerOf2(n) ? n : 1 << ilog2ceil(n); + + // Set up the grid and block sizes + dim3 fullBlocksPerGrid((rounded_n + blockSize - 1) / blockSize); + + // upsweep + for (int d = 0; d <= ilog2ceil(rounded_n) - 1; d++) { + upsweep << > > (rounded_n, d, dev_scanResult); + } - // for (int d = 0; d <= ilog2ceil(rounded_n) - 1; d++) { - // upsweep(rounded_n, d, odata); - // } - // } + // downsweep + init_downsweep << > > (rounded_n, dev_scanResult); + + for (int d = ilog2ceil(rounded_n) - 1; d >= 0; d--) { + downsweep << > > (rounded_n, d, dev_scanResult); + } + } /** * Performs stream compaction on idata, storing the result into odata. @@ -128,17 +152,14 @@ namespace StreamCompaction { */ int compact(int n, int *odata, const int *idata) { timer().startGpuTimer(); - // TODO - // Initialise host variables - int *bools = new int[n]; - int *scanResult = new int[n]; // Array to hold the scan result - // Initialise device variables - int *dev_bools, *dev_idata, *dev_odata, *dev_scanResult; + // Initialise host variables for returning + int *scanResult = new int[n]; + // Allocate memory on the device - cudaMalloc((void**)&dev_bools, n * sizeof(int)); cudaMalloc((void**)&dev_idata, n * sizeof(int)); - cudaMalloc((void**)&dev_odata, n * sizeof(int)); + cudaMalloc((void**)&dev_bools, n * sizeof(int)); cudaMalloc((void**)&dev_scanResult, n * sizeof(int)); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); @@ -147,23 +168,23 @@ namespace StreamCompaction { // Map idata to a 0/1 array Common::kernMapToBoolean << > > (n, dev_bools, dev_idata); - cudaMemcpy(bools, dev_bools, n * sizeof(int), cudaMemcpyDeviceToHost); // Scan the boolean array - scan(n, scanResult, bools); // The scan function will handle the rounding of n - cudaMemcpy(dev_scanResult, scanResult, n * sizeof(int), cudaMemcpyHostToDevice); + scan_without_timer(n); // n will be rounded in the scan function + cudaMemcpy(scanResult, dev_scanResult, n * sizeof(int), cudaMemcpyDeviceToHost); // Perform scatter Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_scanResult); + cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); // Clean up device memory - cudaFree(dev_bools); cudaFree(dev_idata); - cudaFree(dev_odata); + cudaFree(dev_bools); cudaFree(dev_scanResult); + cudaFree(dev_odata); timer().endGpuTimer(); - return -1; + return n == 0 ? 0 : scanResult[n - 1] + (idata[n - 1] != 0 ? 1 : 0); } } } From bb5ae90e553f5882454e29c94c3e8782cdae856f Mon Sep 17 00:00:00 2001 From: Xinran Tao Date: Mon, 16 Sep 2024 16:15:31 -0400 Subject: [PATCH 3/6] Finished base credit of the assignment --- src/main.cpp | 5 +++-- stream_compaction/efficient.cu | 7 +++++-- stream_compaction/naive.cu | 4 ++-- stream_compaction/thrust.cu | 15 ++++++++++++--- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 99f7607..c1e0890 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -86,14 +86,14 @@ int main(int argc, char* argv[]) { 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"); @@ -105,6 +105,7 @@ int main(int argc, char* argv[]) { genArray(SIZE - 1, a, 4); // Leave a 0 at the end to test that edge case a[SIZE - 1] = 0; + printDesc("Input"); printArray(SIZE, a, true); int count, expectedCount, expectedNPOT; diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index cba2413..24ecc85 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -3,7 +3,7 @@ #include "common.h" #include "efficient.h" -#define blockSize 128 // Default is 128 +#define blockSize 128 namespace StreamCompaction { namespace Efficient { @@ -152,6 +152,7 @@ namespace StreamCompaction { */ int compact(int n, int *odata, const int *idata) { timer().startGpuTimer(); + // Initialise host variables for returning int *scanResult = new int[n]; @@ -171,10 +172,11 @@ namespace StreamCompaction { // Scan the boolean array scan_without_timer(n); // n will be rounded in the scan function - cudaMemcpy(scanResult, dev_scanResult, n * sizeof(int), cudaMemcpyDeviceToHost); // Perform scatter Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_scanResult); + + cudaMemcpy(scanResult, dev_scanResult, n * sizeof(int), cudaMemcpyDeviceToHost); cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); // Clean up device memory @@ -184,6 +186,7 @@ namespace StreamCompaction { cudaFree(dev_odata); timer().endGpuTimer(); + return n == 0 ? 0 : scanResult[n - 1] + (idata[n - 1] != 0 ? 1 : 0); } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index bf2bc36..e4f61b6 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -3,7 +3,7 @@ #include "common.h" #include "naive.h" -#define blockSize 128 // Default is 128 +#define blockSize 128 namespace StreamCompaction { namespace Naive { @@ -40,7 +40,7 @@ namespace StreamCompaction { */ void scan(int n, int *odata, const int *idata) { timer().startGpuTimer(); - + int *dev_buff1, *dev_buff2; // Allocate memory on the device diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 1def45e..3d96d1d 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -14,14 +14,23 @@ namespace StreamCompaction { static PerformanceTimer timer; return timer; } + /** * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *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()); + + // Allocate device memory and copy input data to device + thrust::device_vector d_idata(idata, idata + n); // Copy data to device + thrust::device_vector d_odata(n); // Allocate space for output on device + + // Perform exclusive scan on the device + thrust::exclusive_scan(d_idata.begin(), d_idata.end(), d_odata.begin()); + + // Copy the result back to the host in one step + thrust::copy(d_odata.begin(), d_odata.end(), odata); + timer().endGpuTimer(); } } From 5db5489dd8bf8d168c51b53cbcd0849bfe9273c1 Mon Sep 17 00:00:00 2001 From: Xinran Tao Date: Tue, 17 Sep 2024 15:23:17 -0400 Subject: [PATCH 4/6] Finished radix sort --- src/main.cpp | 44 ++++++++++ stream_compaction/CMakeLists.txt | 2 + stream_compaction/efficient.cu | 17 ++-- stream_compaction/efficient.h | 2 + stream_compaction/sort.cu | 133 +++++++++++++++++++++++++++++++ stream_compaction/sort.h | 13 +++ 6 files changed, 204 insertions(+), 7 deletions(-) create mode 100644 stream_compaction/sort.cu create mode 100644 stream_compaction/sort.h diff --git a/src/main.cpp b/src/main.cpp index c1e0890..8a040ae 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "testing_helpers.hpp" const int SIZE = 1 << 8; // feel free to change the size of array @@ -149,8 +150,51 @@ int main(int argc, char* argv[]) { printArray(count, c, true); printCmpLenResult(count, expectedNPOT, b, c); + printf("\n"); + printf("*****************************\n"); + printf("** RADIX SORT TESTS **\n"); + printf("*****************************\n"); + + int *d = new int[8]; + + d[0] = 4; // 100 + d[1] = 7; // 111 + d[2] = 2; // 010 + d[3] = 6; // 110 + d[4] = 3; // 011 + d[5] = 5; // 101 + d[6] = 1; // 001 + d[7] = 0; // 000 + + genArray(SIZE , a, 100); + printDesc("Input"); + printArray(SIZE, a, false); + + zeroArray(8, b); + printDesc("radix sort thrust, easy case"); + StreamCompaction::Sort::radix_sort_thrust(8, b, d); + printArray(8, b, false); + + zeroArray(8, c); + printDesc("radix sort with work-efficient scan, easy case"); + StreamCompaction::Sort::radix_sort(8, c, d); + printArray(8, c, false); + printCmpResult(8, b, c); + + zeroArray(SIZE, b); + printDesc("radix sort thrust"); + StreamCompaction::Sort::radix_sort_thrust(SIZE, b, a); + printArray(SIZE, b, true); + + zeroArray(SIZE, c); + printDesc("radix sort with work-efficient scan"); + StreamCompaction::Sort::radix_sort(SIZE, c, a); + printArray(SIZE, c, true); + printCmpResult(SIZE, b, c); + system("pause"); // stop Win32 console from closing on exit delete[] a; delete[] b; delete[] c; + delete[] d; } diff --git a/stream_compaction/CMakeLists.txt b/stream_compaction/CMakeLists.txt index e0ec27c..8371ed8 100644 --- a/stream_compaction/CMakeLists.txt +++ b/stream_compaction/CMakeLists.txt @@ -4,6 +4,7 @@ set(headers "naive.h" "efficient.h" "thrust.h" + "sort.h" ) set(sources @@ -12,6 +13,7 @@ set(sources "naive.cu" "efficient.cu" "thrust.cu" + "sort.cu" ) list(SORT headers) diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index 24ecc85..a98a50a 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -118,9 +118,9 @@ namespace StreamCompaction { * Define another scan function so that it can be called from compact() * Here dev_bools has already been initialised in compact() ************************************************************************************/ - void scan_without_timer(int n) { + void scan_without_timer(int n, int *odata, const int *idata) { // Initialise dev_scanResult. dev_bools only has n elements. - cudaMemcpy(dev_scanResult, dev_bools, n * sizeof(int), cudaMemcpyDeviceToDevice); + cudaMemcpy(odata, idata, n * sizeof(int), cudaMemcpyDeviceToDevice); // Your intermediate array sizes will need to be rounded to the next power of two. int rounded_n = isPowerOf2(n) ? n : 1 << ilog2ceil(n); @@ -130,14 +130,14 @@ namespace StreamCompaction { // upsweep for (int d = 0; d <= ilog2ceil(rounded_n) - 1; d++) { - upsweep << > > (rounded_n, d, dev_scanResult); + upsweep << > > (rounded_n, d, odata); } // downsweep - init_downsweep << > > (rounded_n, dev_scanResult); + init_downsweep << > > (rounded_n, odata); for (int d = ilog2ceil(rounded_n) - 1; d >= 0; d--) { - downsweep << > > (rounded_n, d, dev_scanResult); + downsweep << > > (rounded_n, d, odata); } } @@ -171,13 +171,14 @@ namespace StreamCompaction { Common::kernMapToBoolean << > > (n, dev_bools, dev_idata); // Scan the boolean array - scan_without_timer(n); // n will be rounded in the scan function + scan_without_timer(n, dev_scanResult, dev_bools); // n will be rounded in the scan function // Perform scatter Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_scanResult); cudaMemcpy(scanResult, dev_scanResult, n * sizeof(int), cudaMemcpyDeviceToHost); cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + int count = n == 0 ? 0 : scanResult[n - 1] + (idata[n - 1] != 0 ? 1 : 0); // Clean up device memory cudaFree(dev_idata); @@ -185,9 +186,11 @@ namespace StreamCompaction { cudaFree(dev_scanResult); cudaFree(dev_odata); + delete[] scanResult; + timer().endGpuTimer(); - return n == 0 ? 0 : scanResult[n - 1] + (idata[n - 1] != 0 ? 1 : 0); + return count; } } } diff --git a/stream_compaction/efficient.h b/stream_compaction/efficient.h index 803cb4f..ce435f6 100644 --- a/stream_compaction/efficient.h +++ b/stream_compaction/efficient.h @@ -8,6 +8,8 @@ namespace StreamCompaction { void scan(int n, int *odata, const int *idata); + void scan_without_timer(int n, int *odata, const int *idata); + int compact(int n, int *odata, const int *idata); } } diff --git a/stream_compaction/sort.cu b/stream_compaction/sort.cu new file mode 100644 index 0000000..117102e --- /dev/null +++ b/stream_compaction/sort.cu @@ -0,0 +1,133 @@ +#include +#include +#include +#include "thrust/sort.h" +#include "common.h" +#include "efficient.h" +#include "sort.h" + +#define blockSize 128 + +namespace StreamCompaction { + namespace Sort { + using StreamCompaction::Common::PerformanceTimer; + int *dev_idata, *dev_bit_extract_neg, *dev_scan_results, *dev_offset_idx, *dev_final_idx, *dev_odata; + + PerformanceTimer& timer() + { + static PerformanceTimer timer; + return timer; + } + + __global__ void compute_not_of_bits(int n, int bit_idx, int *odata, const int *idata) { + int idx = threadIdx.x + (blockIdx.x * blockDim.x); + + if (idx >= n) { + return; + } + + // Extract the bit at the given index and negate it + // odata[idx] = !((idata[idx] >> bit_idx) & 1); + odata[idx] = ((idata[idx] >> bit_idx) & 1) ^ 1; + } + + __global__ void compute_offset_indices(int n, int totalFalses, int *odata, const int *idata) { + int idx = threadIdx.x + (blockIdx.x * blockDim.x); + + if (idx >= n) { + return; + } + + odata[idx] = idx - idata[idx] + totalFalses; + } + + __global__ void compute_final_indices(int n, int *odata, const int *b_arr, const int *t_arr, const int *f_arr) { + int idx = threadIdx.x + (blockIdx.x * blockDim.x); + + if (idx >= n) { + return; + } + + odata[idx] = !b_arr[idx] ? t_arr[idx] : f_arr[idx]; + } + + __global__ void scatter(int n, int *odata, const int *idata, const int *indices) { + int idx = threadIdx.x + (blockIdx.x * blockDim.x); + + if (idx >= n) { + return; + } + + odata[indices[idx]] = idata[idx]; + } + + int get_total_falses(int n, const int* dev_scan_results, const int* dev_bit_extract_neg) { + if (n == 0) { + return 0; + } + + // Allocate host memory for just one element (the last one) + int h_last_scan_result; + int h_last_bit_extract_neg; + + // Copy only the last element of dev_scan_results and dev_bit_extract_neg + cudaMemcpy(&h_last_scan_result, &dev_scan_results[n - 1], sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&h_last_bit_extract_neg, &dev_bit_extract_neg[n - 1], sizeof(int), cudaMemcpyDeviceToHost); + + // Compute totalFalses using only the last elements + int totalFalses = h_last_scan_result + (h_last_bit_extract_neg == 1 ? 1 : 0); + + return totalFalses; + } + + void radix_sort(int n, int *odata, const int *idata) { + cudaMalloc((void**)&dev_idata, n * sizeof(int)); + cudaMalloc((void**)&dev_bit_extract_neg, n * sizeof(int)); + cudaMalloc((void**)&dev_scan_results, n * sizeof(int)); + cudaMalloc((void**)&dev_offset_idx, n * sizeof(int)); + cudaMalloc((void**)&dev_final_idx, n * sizeof(int)); + cudaMalloc((void**)&dev_odata, n * sizeof(int)); + + cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); + + // Set up the grid and block sizes + dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + + // We are assuming 32 bits for each integer + // Lopping from 0 will get us the least significant bit first + for (int i = 0; i < 32; i++) { + // Split function + compute_not_of_bits << > > (n, i, dev_bit_extract_neg, dev_idata); + StreamCompaction::Efficient::scan_without_timer(n, dev_scan_results, dev_bit_extract_neg); + int totalFalses = get_total_falses(n, dev_scan_results, dev_bit_extract_neg); + compute_offset_indices << > > (n, totalFalses, dev_offset_idx, dev_scan_results); + compute_final_indices << > > (n, dev_final_idx, dev_bit_extract_neg, dev_offset_idx, dev_scan_results); + scatter << > > (n, dev_odata, dev_idata, dev_final_idx); + cudaMemcpy(dev_idata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToDevice); + } + + cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); + + cudaFree(dev_idata); + cudaFree(dev_bit_extract_neg); + cudaFree(dev_scan_results); + cudaFree(dev_offset_idx); + cudaFree(dev_final_idx); + cudaFree(dev_odata); + } + + /** + * Performs radix sort on idata, storing the result into odata. + * This is the reference to the implementation, + * as thrust uses radix sort: https://stackoverflow.com/questions/45267748/which-sorting-algorithm-used-in-thrustsort + */ + void radix_sort_thrust(int n, int *odata, const int *idata) { + thrust::device_vector d_idata(idata, idata + n); // Copy data to device + thrust::device_vector d_odata(n); // Allocate space for output on device + + thrust::sort(d_idata.begin(), d_idata.end()); + + thrust::copy(d_idata.begin(), d_idata.end(), odata); + } + } +} \ No newline at end of file diff --git a/stream_compaction/sort.h b/stream_compaction/sort.h new file mode 100644 index 0000000..35d978b --- /dev/null +++ b/stream_compaction/sort.h @@ -0,0 +1,13 @@ +#pragma once + +#include "common.h" + +namespace StreamCompaction { + namespace Sort { + StreamCompaction::Common::PerformanceTimer& timer(); + + void radix_sort_thrust(int n, int *odata, const int *idata); + + void radix_sort(int n, int *odata, const int *idata); + } +} \ No newline at end of file From 89c544ffcda15fbfd400c9ef7d736527f6135961 Mon Sep 17 00:00:00 2001 From: Xinran Tao Date: Tue, 17 Sep 2024 23:52:58 -0400 Subject: [PATCH 5/6] Finished project 2 --- .vscode/launch.json | 14 ++ README.md | 167 +++++++++++++++++- ...k Efficient, and Thrust Implementation.png | Bin 0 -> 46651 bytes ...k Efficient, and Thrust Implementation.png | Bin 0 -> 45443 bytes img/analysis/runtime_raw_data.png | Bin 0 -> 134307 bytes img/analysis/week4_slide.png | Bin 0 -> 63544 bytes src/main.cpp | 23 ++- stream_compaction/efficient.cu | 110 +++++++++--- stream_compaction/naive.cu | 13 +- stream_compaction/sort.cu | 1 - stream_compaction/thrust.cu | 8 +- 11 files changed, 286 insertions(+), 50 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 img/analysis/Input Array Size (Non Power of 2)-Runtime Graph for CPU, Naive, Work Efficient, and Thrust Implementation.png create mode 100644 img/analysis/Input Array Size (Power of 2)-Runtime Graph for CPU, Naive, Work Efficient, and Thrust Implementation.png create mode 100644 img/analysis/runtime_raw_data.png create mode 100644 img/analysis/week4_slide.png diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..f687e19 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "CUDA C++: Launch", + "type": "cuda-gdb", + "request": "launch", + "program": "${workspaceFolder}/build/bin/cis5650_stream_compaction_test" + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 0e38ddb..af5c1cd 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,167 @@ 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) +* Xinran Tao + - [LinkedIn](https://www.linkedin.com/in/xinran-tao/), [Personal Website](https://www.xinrantao.com/), [GitHub](https://github.com/theBoilingPoint). +* Tested on: + - Ubuntu 22.04, i7-11700K @ 3.60GHz × 16, RAM 32GB, GeForce RTX 3080 Ti 12GB (Personal) -### (TODO: Your README) +# Base Credit +In order to count only the algorithm runtime, GPU timers are put inside the initialisation and memory copy functions. For example: +```cpp +cudaMalloc((void**)&dev_data, n * sizeof(int)); +cudaMemcpy(dev_data, data, n * sizeof(int), cudaMemcpyHostToDevice); -Include analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +timer().startGpuTimer(); +// The actual algorithm +timer().endGpuTimer(); +cudaFree(dev_data); +``` + +## Block Size Optimisation +A quick block size optimisation is done for the naive and efficient scan. The range of the block size tested is from 32 to 1024 (inclusive), with each step being the power of 2. The size of the input array is fixed at 2^20. The best block size for each algorithm is selected based on the average runtime between array size that is the power of 2 and non-power of 2 (i.e. the power of 2 size - 3). The result is as follows: +| Block Size | Naive | Work Efficient Slow | Work Efficient Fast | +| --------------| --------- | ------------------- | ------------------- | +| 32 | 0.059808 | 0.584002 | 0.602928 | +| 64 | 0.519168 | 0.665728 | 0.35776 | +| 128 | 0.442368 | 0.32856 | 0.322176 | +| 256 | 0.451072 | 0.262784 | 0.199088 | +| 512 | 0.44856 | 0.268496 | 0.255712 | +| 1024 | 0.488448 | 0.389296 | 0.278512 | + +Therefore, the block size chosen for naive scan is **32**, and **256** for both work efficient slow and fast scan. The block sizes are fixed for all subsequent experiments. + +## Analysis of the CPU, Naive, Work Efficient, and Thrust Scan +![](img/analysis/runtime_raw_data.png) + +![](img/analysis/Input%20Array%20Size%20(Power%20of%202)-Runtime%20Graph%20for%20CPU,%20Naive,%20Work%20Efficient,%20and%20Thrust%20Implementation.png) + +![](img/analysis/Input%20Array%20Size%20(Non%20Power%20of%202)-Runtime%20Graph%20for%20CPU,%20Naive,%20Work%20Efficient,%20and%20Thrust%20Implementation.png) + +The **CPU implementation**, both for power-of-two and non-power-of-two sizes, shows a predictable linear increase in runtime as the input size grows. This suggests that the CPU implementation is computation-bound, scaling consistently with the size of the input array. However, for very large inputs, especially beyond size 24, the non-power-of-two runtimes are slightly slower than power-of-two runtimes, which could indicate some inefficiencies in memory handling or alignment issues for irregular sizes. Still, the primary bottleneck here seems to be the inherent computational complexity of the algorithm, as it scales naturally with input size. + +For the **Naive implementation**, the performance bottlenecks are quite clear. The power-of-two version exhibits a steep increase in runtime as the input size grows, becoming particularly inefficient for larger sizes, as seen by the runtime at size 30 (~919 ms). This steep increase suggests that the Naive implementation is computation-bound and inefficiently parallelized, with large overhead in processing each element. Moreover, it might also suffer from poor memory access patterns, as its performance significantly worsens with increased input sizes, indicating that both computation and memory I/O are bottlenecks. The non-power-of-two Naive implementation performs better, which could be attributed to better handling of irregular data sizes, possibly benefiting from more efficient memory management. However, as input sizes increase, this advantage diminishes, and the overall computational inefficiencies of the Naive approach remain evident. + +The **Work Efficient Slow implementation** shows an improvement over the Naive implementation, particularly for larger input sizes. For power-of-two inputs, it performs moderately well, though its runtime increases more slowly than the Naive version, suggesting that it optimizes the computational workload better. However, the slowdown observed at larger sizes implies that memory I/O might still be a bottleneck, as efficient computation becomes less useful if memory access patterns aren't optimized. The non-power-of-two version of Work Efficient Slow performs slightly better, indicating better handling of irregular input sizes, but the performance gap narrows as input sizes grow, suggesting that at larger scales, both computational and memory inefficiencies become more pronounced. + +The **Work Efficient Fast implementation** offers significant performance gains over both the Naive and Slow versions, particularly for larger inputs. For power-of-two sizes, its scaling is far more controlled, and even for larger sizes, it remains competitive with the CPU. This suggests that the Work Efficient Fast implementation has effectively optimized both computation and memory access. It likely uses more efficient memory patterns, reducing the overhead caused by memory I/O, while also optimizing the computational workload, which allows it to remain fast even for larger inputs. The non-power-of-two version of Work Efficient Fast performs similarly, with only marginal degradation for irregular input sizes. This demonstrates that this implementation is relatively well-balanced and doesn't suffer from the same memory I/O bottlenecks that are apparent in the Naive and Slow approaches. + +Finally, the **Thrust implementation** consistently outperforms all other implementations for both power-of-two and non-power-of-two input sizes, particularly for small and medium-sized arrays. It maintains an almost constant runtime for smaller inputs, which indicates that the computational workload is highly optimized and that memory I/O is not a bottleneck, at least for smaller inputs. As input sizes grow, the runtime increases, but it remains the fastest or near the fastest implementation for most input sizes. This suggests that Thrust effectively handles both computation and memory I/O, optimizing for both types of input sizes. However, for the largest input sizes, the Work Efficient Fast implementation surpasses Thrust, indicating that while Thrust is optimized for general efficiency, very large data sets might still cause some memory bottlenecks. + +### Thrust's Implementation +From the Thrust implementation's performance behavior, particularly its near-constant runtime for smaller input sizes and gradual increase as the input size grows, we can infer that Thrust likely has highly optimized memory management and computational routines. The near-constant runtime at smaller sizes suggests minimal overhead for memory allocation and data transfers at this scale, implying that these stages are either negligible or well-pipelined. + +However, for larger input sizes, where the performance begins to degrade, we can speculate that some internal operations—such as repeated memory allocations or device-host memory copies—become more expensive. The increased data transfer costs between the host and device could be a bottleneck as input size increases. Moreover, the parallel computation itself may reach a point where it is bounded by the hardware's memory bandwidth rather than computational power, which Nsight might reveal as periods of memory transfer in the timeline. + +## Test Program Output +Here the input array size is 2^20, and 2^20 - 3 for the non-power of 2 size. +``` +**************** +** SCAN TESTS ** +**************** +==== Input ==== + [ 28 8 45 47 22 24 13 45 29 46 22 48 25 ... 35 0 ] +==== cpu scan, power-of-two ==== + elapsed time: 0.552226ms (std::chrono Measured) + [ 0 28 36 81 128 150 174 187 232 261 307 329 377 ... 25694240 25694275 ] +==== cpu scan, non-power-of-two ==== + elapsed time: 0.5049ms (std::chrono Measured) + [ 0 28 36 81 128 150 174 187 232 261 307 329 377 ... 25694195 25694198 ] + passed +==== naive scan, power-of-two ==== + elapsed time: 0.720896ms (CUDA Measured) + [ 0 28 36 81 128 150 174 187 232 261 307 329 377 ... 25694240 25694275 ] + passed +==== naive scan, non-power-of-two ==== + elapsed time: 0.765952ms (CUDA Measured) + [ 0 28 36 81 128 150 174 187 232 261 307 329 377 ... 0 0 ] + passed +==== work-efficient scan, power-of-two ==== +Using FAST work efficient scan + elapsed time: 0.413472ms (CUDA Measured) + [ 0 28 36 81 128 150 174 187 232 261 307 329 377 ... 25694240 25694275 ] + passed +==== work-efficient scan, non-power-of-two ==== +Using FAST work efficient scan + elapsed time: 0.18592ms (CUDA Measured) + [ 0 28 36 81 128 150 174 187 232 261 307 329 377 ... 25694195 25694198 ] + passed +==== thrust scan, power-of-two ==== + elapsed time: 0.82944ms (CUDA Measured) + [ 0 28 36 81 128 150 174 187 232 261 307 329 377 ... 25694240 25694275 ] + passed +==== thrust scan, non-power-of-two ==== + elapsed time: 0.099328ms (CUDA Measured) + [ 0 28 36 81 128 150 174 187 232 261 307 329 377 ... 25694195 25694198 ] + passed + +***************************** +** STREAM COMPACTION TESTS ** +***************************** +==== Input ==== + [ 1 3 2 1 1 2 3 1 2 3 2 1 1 ... 1 0 ] +==== cpu compact without scan, power-of-two ==== + elapsed time: 2.05752ms (std::chrono Measured) + [ 1 3 2 1 1 2 3 1 2 3 2 1 1 ... 3 1 ] + passed +==== cpu compact without scan, non-power-of-two ==== + elapsed time: 2.08289ms (std::chrono Measured) + [ 1 3 2 1 1 2 3 1 2 3 2 1 1 ... 3 3 ] + passed +==== cpu compact with scan ==== + elapsed time: 4.46571ms (std::chrono Measured) + [ 1 3 2 1 1 2 3 1 2 3 2 1 1 ... 3 1 ] + passed +==== work-efficient compact, power-of-two ==== + elapsed time: 0.3528ms (CUDA Measured) + [ 1 3 2 1 1 2 3 1 2 3 2 1 1 ... 3 1 ] + passed +==== work-efficient compact, non-power-of-two ==== + elapsed time: 0.233184ms (CUDA Measured) + [ 1 3 2 1 1 2 3 1 2 3 2 1 1 ... 3 3 ] + passed +``` + +# Extra Credit + +## GPU Slower than CPU? +As explained in week 4's lecture, the original version of the work efficient scan is launching threads that are not doing any work, as shown below: +![](img/analysis/week4_slide.png) +Only the threads coloured in yellow are doing useful work (in this case the sum operation). And as stated in the slide, the number of threads required is halved at each pass. + +Therefore, to optimise the original work efficient scan, we need to launch a smaller kernel size at each iteration, and read the numbers for adding by offsetting the thread index. The original implementation is the `upsweep_slow` function and the improved version is the `upsweep` function inside `efficient.cu`. To toggle between the two, change the `USE_FAST_UPSWEEP` macro in on top of the file. + +The runtime comparison between the original, the improved, and the cpu version can be found in Section _Analysis of the CPU, Naive, Work Efficient, and Thrust Scan_. It's clear to see that the advantage of using the improved version of the work-efficient scan starts showing when the input array size is large (i.e. above 2^18). + +## Radix Sort +The `sort.h` and `sort.cu` files are added to the `stream_compaction` directory. It's a simple version that uses the global memory and the fast version of the work-efficient scan. + +## Test Program Output +For the easy case, the input array size is 8. For the other two tests, the input array size is 2^20. The range of values for the normal range test is [0, 50) and [0, 2147483648) for the large range test. The implementation from thrust is used as the reference for correctness. +``` +***************************** +** RADIX SORT TESTS ** +***************************** +==== Input ==== + [ 4 7 2 6 3 5 1 0 ] +==== radix sort thrust, easy case ==== + [ 0 1 2 3 4 5 6 7 ] +==== radix sort with work-efficient scan, easy case ==== + [ 0 1 2 3 4 5 6 7 ] + passed +==== Input ==== + [ 0 0 1 1 0 3 0 1 0 2 1 2 0 ... 3 0 ] +==== radix sort thrust ==== + [ 0 0 0 0 0 0 0 0 0 0 0 0 0 ... 3 3 ] +==== radix sort with work-efficient scan ==== + [ 0 0 0 0 0 0 0 0 0 0 0 0 0 ... 3 3 ] + passed +==== Input ==== + [ 2030340076 367405552 870298961 958594477 1919490608 650582255 502155192 1038962173 812028104 979602990 45151013 1940063754 445481300 ... 1491375275 1238713711 ] +==== radix sort thrust, large range ==== + [ 128 9077 11470 13673 16336 20082 23386 25138 25834 27486 28982 30125 31576 ... 2147481763 2147483586 ] +==== radix sort with work-efficient scan, large range ==== + [ 128 9077 11470 13673 16336 20082 23386 25138 25834 27486 28982 30125 31576 ... 2147481763 2147483586 ] + passed +``` diff --git a/img/analysis/Input Array Size (Non Power of 2)-Runtime Graph for CPU, Naive, Work Efficient, and Thrust Implementation.png b/img/analysis/Input Array Size (Non Power of 2)-Runtime Graph for CPU, Naive, Work Efficient, and Thrust Implementation.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ddbdf5db0f2dba695fa88ab37be684c84d10c8 GIT binary patch literal 46651 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%0DqVjFO}L$=^@SiI@O6x~$jTz{ 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°{PGdM@%s6+;rtf**N^Y| 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񽇴 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 literal 0 HcmV?d00001 diff --git a/img/analysis/week4_slide.png b/img/analysis/week4_slide.png new file mode 100644 index 0000000000000000000000000000000000000000..effa72967001622b8e7681eb0140b72975d2339b GIT binary patch literal 63544 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 #include "testing_helpers.hpp" -const int SIZE = 1 << 8; // feel free to change the size of array +const int SIZE = 1 << 20; // feel free to change the size of array, default is 8 const int NPOT = SIZE - 3; // Non-Power-Of-Two int *a = new int[SIZE]; int *b = new int[SIZE]; @@ -166,9 +166,8 @@ int main(int argc, char* argv[]) { d[6] = 1; // 001 d[7] = 0; // 000 - genArray(SIZE , a, 100); printDesc("Input"); - printArray(SIZE, a, false); + printArray(8, d, true); zeroArray(8, b); printDesc("radix sort thrust, easy case"); @@ -181,6 +180,9 @@ int main(int argc, char* argv[]) { printArray(8, c, false); printCmpResult(8, b, c); + printDesc("Input"); + printArray(SIZE, a, true); + zeroArray(SIZE, b); printDesc("radix sort thrust"); StreamCompaction::Sort::radix_sort_thrust(SIZE, b, a); @@ -192,6 +194,21 @@ int main(int argc, char* argv[]) { printArray(SIZE, c, true); printCmpResult(SIZE, b, c); + genArray(SIZE , a, 2147483648); // 2,147,483,647 is the largest value for int32 + printDesc("Input"); + printArray(SIZE, a, true); + + zeroArray(SIZE, b); + printDesc("radix sort thrust, large range"); + StreamCompaction::Sort::radix_sort_thrust(SIZE, b, a); + printArray(SIZE, b, true); + + zeroArray(SIZE, c); + printDesc("radix sort with work-efficient scan, large range"); + StreamCompaction::Sort::radix_sort(SIZE, c, a); + printArray(SIZE, c, true); + printCmpResult(SIZE, b, c); + system("pause"); // stop Win32 console from closing on exit delete[] a; delete[] b; diff --git a/stream_compaction/efficient.cu b/stream_compaction/efficient.cu index a98a50a..f678b33 100644 --- a/stream_compaction/efficient.cu +++ b/stream_compaction/efficient.cu @@ -3,7 +3,9 @@ #include "common.h" #include "efficient.h" -#define blockSize 128 +#define blockSize_slow 256 +#define blockSize_fast 256 +#define USE_FAST_UPSWEEP 1 namespace StreamCompaction { namespace Efficient { @@ -27,7 +29,11 @@ namespace StreamCompaction { return (n > 0) && ((n & (n - 1)) == 0); } - __global__ void upsweep(int n, int d, int *data) { + __device__ int mod(int a, int b) { + return a - (b * (a / b)); + } + + __global__ void upsweep_slow(int n, int d, int *data) { int k = threadIdx.x + (blockIdx.x * blockDim.x); if (k >= n) { @@ -38,14 +44,25 @@ namespace StreamCompaction { // faster than calling pow(2, n) int two_pow_d_plus_1 = 1 << (d + 1); - if (k % two_pow_d_plus_1 != 0) { + if (mod(k, two_pow_d_plus_1) != 0) { return; } int two_pow_d = 1 << d; + data[k + two_pow_d_plus_1 - 1] += data[k + two_pow_d - 1]; } + __global__ void upsweep(int n, int d, int *data) { + int k = threadIdx.x + (blockIdx.x * blockDim.x); + + if (k >= n) { + return; + } + + data[((k + 1) << d) - 1] += data[k * (1 << d) + (1 << (d - 1)) - 1]; + } + __global__ void init_downsweep(int n, int *odata) { int i = threadIdx.x + (blockIdx.x * blockDim.x); @@ -65,7 +82,7 @@ namespace StreamCompaction { // faster than calling pow(2, n) int two_pow_d_plus_1 = 1 << (d + 1); - if (k % two_pow_d_plus_1 != 0) { + if (mod(k, two_pow_d_plus_1) != 0) { return; } @@ -79,7 +96,6 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); int *dev_odata_local; // Your intermediate array sizes will need to be rounded to the next power of two. int rounded_n = isPowerOf2(n) ? n : 1 << ilog2ceil(n); @@ -91,27 +107,59 @@ namespace StreamCompaction { cudaMemcpy(dev_odata_local, idata, n * sizeof(int), cudaMemcpyHostToDevice); // Set up the grid and block sizes - dim3 fullBlocksPerGrid((rounded_n + blockSize - 1) / blockSize); + + int upper_bound = ilog2ceil(rounded_n); + int upper_bound_minus_1 = upper_bound - 1; - // upsweep - for (int d = 0; d <= ilog2ceil(rounded_n) - 1; d++) { - upsweep << > > (rounded_n, d, dev_odata_local); - } + if (USE_FAST_UPSWEEP) { + printf("Using FAST work efficient scan\n"); - // downsweep - init_downsweep << > > (rounded_n, dev_odata_local); + dim3 fullBlocksPerGrid((rounded_n + blockSize_fast - 1) / blockSize_fast); + int gridSize = (rounded_n / 2 + blockSize_fast - 1) / blockSize_fast; + + timer().startGpuTimer(); - for (int d = ilog2ceil(rounded_n) - 1; d >= 0; d--) { - downsweep << > > (rounded_n, d, dev_odata_local); + for (int d = 1; d <= upper_bound; d++) { + gridSize = ((rounded_n >> d) + blockSize_fast - 1) / blockSize_fast; + upsweep << > >(rounded_n >> d, d, dev_odata_local); + } + + // downsweep + init_downsweep << > > (rounded_n, dev_odata_local); + + for (int d = upper_bound_minus_1; d >= 0; d--) { + downsweep << > > (rounded_n, d, dev_odata_local); + } + + timer().endGpuTimer(); } + else { + printf("Using SLOW work efficient scan\n"); + + dim3 fullBlocksPerGrid((rounded_n + blockSize_slow - 1) / blockSize_slow); + + timer().startGpuTimer(); + // upsweep + for (int d = 0; d < upper_bound; d++) { + upsweep_slow << > > (rounded_n, d, dev_odata_local); + } + + // downsweep + init_downsweep << > > (rounded_n, dev_odata_local); + + for (int d = upper_bound_minus_1; d >= 0; d--) { + downsweep << > > (rounded_n, d, dev_odata_local); + } + + timer().endGpuTimer(); + } + // Copy the result back to the host // Note that odata is only supposed to have n elements cudaMemcpy(odata, dev_odata_local, n * sizeof(int), cudaMemcpyDeviceToHost); cudaFree(dev_odata_local); - - timer().endGpuTimer(); } /************************************************************************************ @@ -124,20 +172,24 @@ namespace StreamCompaction { // Your intermediate array sizes will need to be rounded to the next power of two. int rounded_n = isPowerOf2(n) ? n : 1 << ilog2ceil(n); + int upper_bound = ilog2ceil(rounded_n); + int upper_bound_minus_1 = upper_bound - 1; // Set up the grid and block sizes - dim3 fullBlocksPerGrid((rounded_n + blockSize - 1) / blockSize); + dim3 fullBlocksPerGrid((rounded_n + blockSize_fast - 1) / blockSize_fast); + int gridSize = (rounded_n / 2 + blockSize_fast - 1) / blockSize_fast; // upsweep - for (int d = 0; d <= ilog2ceil(rounded_n) - 1; d++) { - upsweep << > > (rounded_n, d, odata); + for (int d = 1; d <= upper_bound; d++) { + gridSize = ((rounded_n >> d) + blockSize_fast - 1) / blockSize_fast; + upsweep << > >(rounded_n >> d, d, odata); } // downsweep - init_downsweep << > > (rounded_n, odata); + init_downsweep << > > (rounded_n, odata); - for (int d = ilog2ceil(rounded_n) - 1; d >= 0; d--) { - downsweep << > > (rounded_n, d, odata); + for (int d = upper_bound_minus_1; d >= 0; d--) { + downsweep << > > (rounded_n, d, odata); } } @@ -151,8 +203,6 @@ namespace StreamCompaction { * @returns The number of elements remaining after compaction. */ int compact(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - // Initialise host variables for returning int *scanResult = new int[n]; @@ -165,16 +215,20 @@ namespace StreamCompaction { cudaMemcpy(dev_idata, idata, n * sizeof(int), cudaMemcpyHostToDevice); // Set up the grid and block sizes - dim3 fullBlocksPerGrid((n + blockSize - 1) / blockSize); + dim3 fullBlocksPerGrid((n + blockSize_fast - 1) / blockSize_fast); + + timer().startGpuTimer(); // Map idata to a 0/1 array - Common::kernMapToBoolean << > > (n, dev_bools, dev_idata); + Common::kernMapToBoolean << > > (n, dev_bools, dev_idata); // Scan the boolean array scan_without_timer(n, dev_scanResult, dev_bools); // n will be rounded in the scan function // Perform scatter - Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_scanResult); + Common::kernScatter << > > (n, dev_odata, dev_idata, dev_bools, dev_scanResult); + + timer().endGpuTimer(); cudaMemcpy(scanResult, dev_scanResult, n * sizeof(int), cudaMemcpyDeviceToHost); cudaMemcpy(odata, dev_odata, n * sizeof(int), cudaMemcpyDeviceToHost); @@ -188,8 +242,6 @@ namespace StreamCompaction { delete[] scanResult; - timer().endGpuTimer(); - return count; } } diff --git a/stream_compaction/naive.cu b/stream_compaction/naive.cu index e4f61b6..86be613 100644 --- a/stream_compaction/naive.cu +++ b/stream_compaction/naive.cu @@ -3,7 +3,7 @@ #include "common.h" #include "naive.h" -#define blockSize 128 +#define blockSize 32 namespace StreamCompaction { namespace Naive { @@ -39,8 +39,6 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - int *dev_buff1, *dev_buff2; // Allocate memory on the device @@ -57,19 +55,20 @@ namespace StreamCompaction { init_buff << > > (n, dev_buff2, dev_buff1); cudaMemcpy(dev_buff1, dev_buff2, n * sizeof(int), cudaMemcpyDeviceToDevice); + timer().startGpuTimer(); + for (int d = 1; d <= ilog2ceil(n); d++) { int pow_d = 1 << (d - 1); dev_scan << > > (pow_d, dev_buff2, dev_buff1); - // cudaDeviceSynchronize(); // Ensure the kernel completes cudaMemcpy(dev_buff1, dev_buff2, n * sizeof(int), cudaMemcpyDeviceToDevice); } + timer().endGpuTimer(); + cudaMemcpy(odata, dev_buff1, n * sizeof(int), cudaMemcpyDeviceToHost); cudaFree(dev_buff1); - cudaFree(dev_buff2); - - timer().endGpuTimer(); + cudaFree(dev_buff2); } } } diff --git a/stream_compaction/sort.cu b/stream_compaction/sort.cu index 117102e..16db8f9 100644 --- a/stream_compaction/sort.cu +++ b/stream_compaction/sort.cu @@ -27,7 +27,6 @@ namespace StreamCompaction { } // Extract the bit at the given index and negate it - // odata[idx] = !((idata[idx] >> bit_idx) & 1); odata[idx] = ((idata[idx] >> bit_idx) & 1) ^ 1; } diff --git a/stream_compaction/thrust.cu b/stream_compaction/thrust.cu index 3d96d1d..e15f378 100644 --- a/stream_compaction/thrust.cu +++ b/stream_compaction/thrust.cu @@ -19,19 +19,19 @@ namespace StreamCompaction { * Performs prefix-sum (aka scan) on idata, storing the result into odata. */ void scan(int n, int *odata, const int *idata) { - timer().startGpuTimer(); - // Allocate device memory and copy input data to device thrust::device_vector d_idata(idata, idata + n); // Copy data to device thrust::device_vector d_odata(n); // Allocate space for output on device + timer().startGpuTimer(); + // Perform exclusive scan on the device thrust::exclusive_scan(d_idata.begin(), d_idata.end(), d_odata.begin()); + timer().endGpuTimer(); + // Copy the result back to the host in one step thrust::copy(d_odata.begin(), d_odata.end(), odata); - - timer().endGpuTimer(); } } } From 9d8ce5b935e22627fc3e1b6bc53f3f81abd1ee88 Mon Sep 17 00:00:00 2001 From: Xinran Tao Date: Tue, 17 Sep 2024 23:56:03 -0400 Subject: [PATCH 6/6] Modified README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index af5c1cd..b20503f 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,8 @@ Therefore, to optimise the original work efficient scan, we need to launch a sma The runtime comparison between the original, the improved, and the cpu version can be found in Section _Analysis of the CPU, Naive, Work Efficient, and Thrust Scan_. It's clear to see that the advantage of using the improved version of the work-efficient scan starts showing when the input array size is large (i.e. above 2^18). +For small input sizes, the overheads associated with GPU execution—kernel launch, memory transfer, underutilization, and synchronization—can outweigh the benefits of parallel computation. The CPU, in contrast, can handle small workloads more efficiently due to its ability to process data directly in memory with minimal overhead. Therefore, while your Work Efficient Fast implementation is optimized for larger datasets, the GPU's inherent overhead for smaller arrays results in slower performance compared to the CPU. + ## Radix Sort The `sort.h` and `sort.cu` files are added to the `stream_compaction` directory. It's a simple version that uses the global memory and the fast version of the work-efficient scan.