From 79332d122e89a6c154ddb913b7335d355ad75ca2 Mon Sep 17 00:00:00 2001 From: Narayan G Date: Mon, 9 Dec 2019 12:27:59 +0530 Subject: [PATCH 01/20] Revert "Revert "Added bit-reversal reorder"" This reverts commit 381ad4f59dc95fcbaac812b353f01727a1eab459. --- fft.cu | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 fft.cu diff --git a/fft.cu b/fft.cu new file mode 100644 index 0000000..7042688 --- /dev/null +++ b/fft.cu @@ -0,0 +1,124 @@ +// Include header files +#include +#include +#include + +#define ll long long int + +// const complex J(0, 1); +// Maybe use float2 instead of complex? +// we can use static inline functions for addition, multiplication and inverse of complex numbers +typedef float2 Complex; + +const int THREADS = 32; +const long long ARRAY_SIZE = 1024; +const long long ARRAY_BYTES = ARRAY_SIZE * sizeof(Complex); + +__global__ void bit_reverse_reorder (Complex *d_rev, Complex *d_a, int s){ + int id = (blockIdx.x * blockDim.x) + threadIdx.x; + int rev = __brev(id) >> (32-s); + if (id < ARRAY_SIZE) + d_rev[rev] = d_a[id]; +} + +using namespace std; + +// wave_to_sample +ll bit_reverse_host(ll n, int s){ + ll rev = 0; + ll count = s; + while(n){ + rev <<= 1; + rev |= (n&1); + n >>= 1; + count--; + } + rev <<= count; + return rev; +} + +Complex* reverse_bits(Complex *a, int s) { + Complex *a_rev; + for (int i=0;i w(1,0); + + complex wm = exp(J * 2 * M_1_PI/ m); + + for(ll i = 0; i < m/2; i++) + { + for(ll k = i; k < n; k+=m) + { + complex t = w * a[k + m/2]; + complex u = a[k]; + + a[k] = u + t; + a[k+m/2] = u - t; + } + w = w * wm; + } + } +} + +int main(int argc, char *argv[]) { + + // brev_sample = reverse_bits(sample); + + //Creating Complex arrays for data + Complex h_a[ARRAY_SIZE], h_rev[ARRAY_SIZE]; + Complex *d_a, *d_rev; + + for(int i = 0; i < ARRAY_SIZE; i++) { + h_a[i].x = sin((10*M_PI*i)/ARRAY_SIZE); + h_a[i].y = 0.0; + } + + int s = (int)ceil(log2(ARRAY_SIZE)); + + cudaMalloc((void**) &d_a, ARRAY_BYTES); + cudaMalloc((void**) &d_rev, ARRAY_BYTES); + + cudaMemcpy(d_a, h_a, ARRAY_BYTES, cudaMemcpyHostToDevice); + + bit_reverse_reorder<<<(int)ceil(ARRAY_SIZE/THREADS), THREADS>>>(d_rev, d_a, s); + + cudaMemcpy(h_rev, d_rev, ARRAY_BYTES, cudaMemcpyDeviceToHost); + + cudaFree(d_a); + cudaFree(d_rev); + + // TODO + // Parallelise FFT function + + fft(brev_sample); + +} \ No newline at end of file From c191a049386cd210c4163e278c5d879fdce2ef4b Mon Sep 17 00:00:00 2001 From: Shashwatha-Mitra Date: Mon, 9 Dec 2019 20:53:43 +0530 Subject: [PATCH 02/20] Added naive parallelization of fft --- fft.cu | 131 +++++++++++++++++++++++++-------------------------------- 1 file changed, 57 insertions(+), 74 deletions(-) diff --git a/fft.cu b/fft.cu index 7042688..d1334b9 100644 --- a/fft.cu +++ b/fft.cu @@ -5,15 +5,13 @@ #define ll long long int -// const complex J(0, 1); -// Maybe use float2 instead of complex? -// we can use static inline functions for addition, multiplication and inverse of complex numbers typedef float2 Complex; const int THREADS = 32; const long long ARRAY_SIZE = 1024; const long long ARRAY_BYTES = ARRAY_SIZE * sizeof(Complex); +// Parallelized reordering (Doesn't this count as pre-processing?) __global__ void bit_reverse_reorder (Complex *d_rev, Complex *d_a, int s){ int id = (blockIdx.x * blockDim.x) + threadIdx.x; int rev = __brev(id) >> (32-s); @@ -21,104 +19,89 @@ __global__ void bit_reverse_reorder (Complex *d_rev, Complex *d_a, int s){ d_rev[rev] = d_a[id]; } -using namespace std; - -// wave_to_sample -ll bit_reverse_host(ll n, int s){ - ll rev = 0; - ll count = s; - while(n){ - rev <<= 1; - rev |= (n&1); - n >>= 1; - count--; - } - rev <<= count; - return rev; -} +// FFT driver kernel code +__global__ void fft(Complex *a, int j, int m){ + int k = blockIdx.x * blockDim.x + threadIdx.x; -Complex* reverse_bits(Complex *a, int s) { - Complex *a_rev; - for (int i=0;i w(1,0); - - complex wm = exp(J * 2 * M_1_PI/ m); - - for(ll i = 0; i < m/2; i++) - { - for(ll k = i; k < n; k+=m) - { - complex t = w * a[k + m/2]; - complex u = a[k]; - - a[k] = u + t; - a[k+m/2] = u - t; - } - w = w * wm; - } } } int main(int argc, char *argv[]) { - - // brev_sample = reverse_bits(sample); //Creating Complex arrays for data Complex h_a[ARRAY_SIZE], h_rev[ARRAY_SIZE]; Complex *d_a, *d_rev; + // Input signal (of the form sin((2*M_PI*f*x)/N)) where N is the sample size + // imaginary part of the signal by default is 0 for(int i = 0; i < ARRAY_SIZE; i++) { h_a[i].x = sin((10*M_PI*i)/ARRAY_SIZE); h_a[i].y = 0.0; } - + + // No. of bits in the sample size, used for bit reversal reordering int s = (int)ceil(log2(ARRAY_SIZE)); + //Allocate memory for the device arrays cudaMalloc((void**) &d_a, ARRAY_BYTES); cudaMalloc((void**) &d_rev, ARRAY_BYTES); + //Copy all elements of sample array from host to device cudaMemcpy(d_a, h_a, ARRAY_BYTES, cudaMemcpyHostToDevice); + //Reorder the sample as first step of FFT bit_reverse_reorder<<<(int)ceil(ARRAY_SIZE/THREADS), THREADS>>>(d_rev, d_a, s); + //Synchronise devices before jumping to fft + cudaDeviceSynchronize(); + + // Naive fft parallelization (TODO: improve upon the efficiency and make algo scalable) + for (int i=0;i<=s;i++){ + + int m = 1 << i; + + for(int j=0;j>>(d_rev,j,m); + + } + } + + // Copy result array to host cudaMemcpy(h_rev, d_rev, ARRAY_BYTES, cudaMemcpyDeviceToHost); + // Free device memory cudaFree(d_a); cudaFree(d_rev); - - // TODO - // Parallelise FFT function - fft(brev_sample); - + // TODO + // Use h_rev to plot magnitude (sqrt(h_rev[i].x^2 + h_rev[i].y^2)) vs frequency (i) } \ No newline at end of file From 351f0e7e00926632adafcd6f713b03987a3e93fd Mon Sep 17 00:00:00 2001 From: Shashwatha-Mitra Date: Tue, 10 Dec 2019 09:38:08 +0530 Subject: [PATCH 03/20] Made fft parallelization scalable --- fft.cu | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/fft.cu b/fft.cu index d1334b9..8249495 100644 --- a/fft.cu +++ b/fft.cu @@ -4,10 +4,10 @@ #include #define ll long long int +#define THREADS 32 typedef float2 Complex; -const int THREADS = 32; const long long ARRAY_SIZE = 1024; const long long ARRAY_BYTES = ARRAY_SIZE * sizeof(Complex); @@ -23,7 +23,7 @@ __global__ void bit_reverse_reorder (Complex *d_rev, Complex *d_a, int s){ __global__ void fft(Complex *a, int j, int m){ int k = blockIdx.x * blockDim.x + threadIdx.x; - if(j+k+m/2 < ARRAY_SIZE){ + if(k < m/2 && j+k+m/2 < ARRAY_SIZE){ Complex w, t, u; @@ -74,23 +74,20 @@ int main(int argc, char *argv[]) { cudaMemcpy(d_a, h_a, ARRAY_BYTES, cudaMemcpyHostToDevice); //Reorder the sample as first step of FFT - bit_reverse_reorder<<<(int)ceil(ARRAY_SIZE/THREADS), THREADS>>>(d_rev, d_a, s); + bit_reverse_reorder<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev, d_a, s); //Synchronise devices before jumping to fft cudaDeviceSynchronize(); - // Naive fft parallelization (TODO: improve upon the efficiency and make algo scalable) + // Naive fft parallelization (TODO: improve upon the efficiency) for (int i=0;i<=s;i++){ int m = 1 << i; for(int j=0;j>>(d_rev,j,m); + fft<<<((m/2)+THREADS-1)/THREADS,THREADS>>>(d_rev,j,m); } } From 3e766f73d7e97b34a8e3871d7e27f7bfff9b5f1a Mon Sep 17 00:00:00 2001 From: Shashwatha-Mitra Date: Wed, 11 Dec 2019 09:47:43 +0530 Subject: [PATCH 04/20] Added serialized implementation of fft --- fft-serialized.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 fft-serialized.c diff --git a/fft-serialized.c b/fft-serialized.c new file mode 100644 index 0000000..ac61861 --- /dev/null +++ b/fft-serialized.c @@ -0,0 +1,85 @@ +#include +#include +#include + +#ifndef M_PI + #define M_PI 3.14159265358979323846 +#endif + +#define ARRAY_SIZE 65536 + +typedef struct Complex{ + float re,im; +} Complex; + +const long long ARRAY_BYTES = ARRAY_SIZE*sizeof(Complex); + +int bit_reverse(int n, int s){ + int rev=0, count=s; + while(n){ + rev = rev << 1; + rev |= n & 1; + n = n >> 1; + count--; + } + rev = rev << count; + return rev; +} + +void bit_reverse_reorder(Complex *a, Complex *rev, int s){ + for(int i=0;i Date: Thu, 12 Dec 2019 00:15:12 +0530 Subject: [PATCH 05/20] Added first optimization --- fft-opt1.cu | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 fft-opt1.cu diff --git a/fft-opt1.cu b/fft-opt1.cu new file mode 100644 index 0000000..97bdc9c --- /dev/null +++ b/fft-opt1.cu @@ -0,0 +1,156 @@ +// One of the possible optimizations to the implementation in fft.cu +// +// The algorithm is as follows: +// +// for (s = 0 to log2(N)) ........ loop1 +// m = 2^i; +// statements +// for (j=0;j +#include +#include + +typedef float2 Complex; + +#define THREADS 32 +#define MAX_NO_OF_THREADS_PER_BLOCK 1024 + +const long long ARRAY_SIZE = 65536; +const long long ARRAY_BYTES = ARRAY_SIZE * sizeof(Complex); + +// Bit reversal re-ordering, first step of FFT +__global__ void bit_reverse_reorder(Complex *d_rev, Complex *d_a, int s) { + int id = blockIdx.x * blockDim.x + threadIdx.x; + int rev = __brev(id) >> (32-s); + + if(id < ARRAY_SIZE) + d_rev[rev] = d_a[id]; +} + +// Work of the innermost loop, common to both parallelization +__device__ void inplace_fft(Complex *a, int j, int k, int m){ + + if (j+k+m/2 < ARRAY_SIZE){ + + Complex w, t, u; + + // w^k (w is root of unity) + w.x = __cosf((2*M_PI*k)/m); + w.y = -__sinf((2*M_PI*k)/m); + + // u = a[j+k] + u.x = a[j+k].x; + u.y = a[j+k].y; + + // t = w*a[j+k+m/2]; + t.x = w.x*a[j+k+m/2].x - w.y*a[j+k+m/2].y; + t.y = w.x*a[j+k+m/2].y + w.y*a[j+k+m/2].x; + + // a[j+k] = u+t; + a[j+k].x = u.x + t.x; + a[j+k].y = u.y + t.y; + + // a[j+k+m/2] = u-t; + a[j+k+m/2].x = u.x - t.x; + a[j+k+m/2].y = u.y - t.y; + + } +} + +// Parallelization of loop2 +__global__ void fft_outer(Complex *a, int m){ + int j = (blockIdx.x * blockDim.x + threadIdx.x)*m; + if (j < ARRAY_SIZE){ + for (int k=0;k>>(d_rev, d_a, s); + + cudaDeviceSynchronize(); + + // FFT driver code + for (int i=1;i<=s;i++){ + + // m = 2^i + int m = 1 << i; + + if (m/2 < MAX_NO_OF_THREADS_PER_BLOCK){ + + fft_outer<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev,m); + + } else { + + for (int j=0;j>>(d_rev,j,m); + + } + } + } + + // Copy result array from device to host + cudaMemcpy(h_rev,d_rev,ARRAY_BYTES,cudaMemcpyDeviceToHost); + + // Free allocated device memory + cudaFree(d_a); + cudaFree(d_rev); + + return 0; +} \ No newline at end of file From b22ae2dcfa03978f9ab0cdb1ccce4aa482b8696b Mon Sep 17 00:00:00 2001 From: Narayan G Date: Fri, 13 Dec 2019 23:09:38 +0530 Subject: [PATCH 06/20] Add code to write output to files --- fft-opt1.cu | 10 ++++++++++ fft-serialized.c | 15 ++++++++++++++- fft.cu | 10 ++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/fft-opt1.cu b/fft-opt1.cu index 97bdc9c..9d9259a 100644 --- a/fft-opt1.cu +++ b/fft-opt1.cu @@ -92,6 +92,9 @@ __global__ void fft_inner(Complex *a, int j, int m){ } int main() { + // Creating files to write output to + FILE *fptr; + fptr = fopen("fft-opt1-output.dat", "wr"); // Host arrays for input and output Complex h_a[ARRAY_SIZE]; @@ -148,6 +151,13 @@ int main() { // Copy result array from device to host cudaMemcpy(h_rev,d_rev,ARRAY_BYTES,cudaMemcpyDeviceToHost); + // Writing output to files + fprintf(fptr, "i\t\ta.real\t\t\ta.img\n"); + for (int i = 0; i < ARRAY_SIZE; i++) + { + fprintf(fptr,"%d\t\t%f\t\t%f\n", i, h_rev[i].x, h_rev[i].y); + } + // Free allocated device memory cudaFree(d_a); cudaFree(d_rev); diff --git a/fft-serialized.c b/fft-serialized.c index ac61861..3828fd3 100644 --- a/fft-serialized.c +++ b/fft-serialized.c @@ -1,6 +1,7 @@ #include #include #include +#include #ifndef M_PI #define M_PI 3.14159265358979323846 @@ -71,6 +72,12 @@ void fft(Complex *a, int s){ } void main(){ + FILE *fptr; + fptr = fopen("fft-serialized-output.dat", "wr"); + if (fptr == NULL) { + printf("Error!"); + exit(1); + } Complex *a, *rev; int s = (int)ceil(log2(ARRAY_SIZE)); a = (Complex *)malloc(ARRAY_BYTES); @@ -81,5 +88,11 @@ void main(){ } bit_reverse_reorder(a,rev,s); fft(rev,s); - printf ("%f %f %f %f\n",rev[6].re, rev[6].im, rev[ARRAY_SIZE-6].re, rev[ARRAY_SIZE-6].im); + fprintf(fptr, "i\t\trev.real\t\trev.img\t\ta.real\t\ta.img\n"); + for (int i = 0; i < ARRAY_SIZE; i++) + { + fprintf(fptr,"%d\t\t%f\t\t%f\t\t%f\t\t%f\n", i, rev[i].re, rev[i].im, a[i].re, a[i].im); + } + + // printf ("%f %f %f %f\n",rev[6].re, rev[6].im, rev[ARRAY_SIZE-6].re, rev[ARRAY_SIZE-6].im); } \ No newline at end of file diff --git a/fft.cu b/fft.cu index 8249495..49e1fcd 100644 --- a/fft.cu +++ b/fft.cu @@ -51,6 +51,9 @@ __global__ void fft(Complex *a, int j, int m){ } int main(int argc, char *argv[]) { + // Creating files to write output to + FILE *fptr; + fptr = fopen("fft-output.dat", "wr"); //Creating Complex arrays for data Complex h_a[ARRAY_SIZE], h_rev[ARRAY_SIZE]; @@ -95,6 +98,13 @@ int main(int argc, char *argv[]) { // Copy result array to host cudaMemcpy(h_rev, d_rev, ARRAY_BYTES, cudaMemcpyDeviceToHost); + // Writing output to files + fprintf(fptr, "i\t\ta.real\t\t\ta.img\n"); + for (int i = 0; i < ARRAY_SIZE; i++) + { + fprintf(fptr,"%d\t\t%f\t\t%f\n", i, h_rev[i].x, h_rev[i].y); + } + // Free device memory cudaFree(d_a); cudaFree(d_rev); From 40778561bf1eb8cbcd08514f61cd2c76fac3c66b Mon Sep 17 00:00:00 2001 From: Narayan G Date: Sat, 14 Dec 2019 22:53:10 +0530 Subject: [PATCH 07/20] Added extra statements to print Signed-off-by: Narayan G --- fft-opt1.cu | 9 +++++++-- fft-serialized.c | 9 +++++++-- fft.cu | 9 +++++++-- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/fft-opt1.cu b/fft-opt1.cu index 9d9259a..9eca18f 100644 --- a/fft-opt1.cu +++ b/fft-opt1.cu @@ -91,6 +91,11 @@ __global__ void fft_inner(Complex *a, int j, int m){ inplace_fft(a,j,k,m); } +float magnitude(float2 a) +{ + return sqrt(a.x*a.x + a.y*a.y); +} + int main() { // Creating files to write output to FILE *fptr; @@ -152,10 +157,10 @@ int main() { cudaMemcpy(h_rev,d_rev,ARRAY_BYTES,cudaMemcpyDeviceToHost); // Writing output to files - fprintf(fptr, "i\t\ta.real\t\t\ta.img\n"); + fprintf(fptr, "i\t\ta.magn\t\ta.real\t\t\ta.img\n"); for (int i = 0; i < ARRAY_SIZE; i++) { - fprintf(fptr,"%d\t\t%f\t\t%f\n", i, h_rev[i].x, h_rev[i].y); + fprintf(fptr,"%d\t\t%f\t\t%f\t\t%f\n", i, magnitude(h_rev[i]), h_rev[i].x, h_rev[i].y); } // Free allocated device memory diff --git a/fft-serialized.c b/fft-serialized.c index 3828fd3..750e1af 100644 --- a/fft-serialized.c +++ b/fft-serialized.c @@ -71,6 +71,11 @@ void fft(Complex *a, int s){ } } +float magnitude(Complex a) +{ + return sqrt(a.re*a.re + a.im*a.im); +} + void main(){ FILE *fptr; fptr = fopen("fft-serialized-output.dat", "wr"); @@ -88,10 +93,10 @@ void main(){ } bit_reverse_reorder(a,rev,s); fft(rev,s); - fprintf(fptr, "i\t\trev.real\t\trev.img\t\ta.real\t\ta.img\n"); + fprintf(fptr, "i\t\trev.magn\t\trev.real\t\trev.img\t\ta.magn\t\ta.real\t\ta.img\n"); for (int i = 0; i < ARRAY_SIZE; i++) { - fprintf(fptr,"%d\t\t%f\t\t%f\t\t%f\t\t%f\n", i, rev[i].re, rev[i].im, a[i].re, a[i].im); + fprintf(fptr,"%d\t\t%f\t\t%f\t\t%f\t\t%f\t\t%f\t\t%f\n", i, magnitude(rev[i]), rev[i].re, rev[i].im, magnitude(a[i]), a[i].re, a[i].im); } // printf ("%f %f %f %f\n",rev[6].re, rev[6].im, rev[ARRAY_SIZE-6].re, rev[ARRAY_SIZE-6].im); diff --git a/fft.cu b/fft.cu index 49e1fcd..0430ef6 100644 --- a/fft.cu +++ b/fft.cu @@ -50,6 +50,11 @@ __global__ void fft(Complex *a, int j, int m){ } } +float magnitude(float2 a) +{ + return sqrt(a.x*a.x + a.y*a.y); +} + int main(int argc, char *argv[]) { // Creating files to write output to FILE *fptr; @@ -99,10 +104,10 @@ int main(int argc, char *argv[]) { cudaMemcpy(h_rev, d_rev, ARRAY_BYTES, cudaMemcpyDeviceToHost); // Writing output to files - fprintf(fptr, "i\t\ta.real\t\t\ta.img\n"); + fprintf(fptr, "i\t\ta.magn\t\ta.real\t\t\ta.img\n"); for (int i = 0; i < ARRAY_SIZE; i++) { - fprintf(fptr,"%d\t\t%f\t\t%f\n", i, h_rev[i].x, h_rev[i].y); + fprintf(fptr,"%d\t\t%f\t\t%f\t\t%f\n", i, magnitude(h_rev[i]), h_rev[i].x, h_rev[i].y); } // Free device memory From 9b70e7b9913c3aa353131a50c483ef9463e4b129 Mon Sep 17 00:00:00 2001 From: shashwatha <42376721+Shashwatha-Mitra@users.noreply.github.com> Date: Mon, 16 Dec 2019 19:47:14 +0530 Subject: [PATCH 08/20] Update README.md --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 03ccb35..19be74d 100644 --- a/README.md +++ b/README.md @@ -1 +1,16 @@ # Parallelizing-FFT + +## Contributing + +Fork the repository and clone it (forked repository) to a local system and later follow these steps.
+Note that origin will be the forked repository while upstream will be this repository +``` +git remote add upstream https://github.com/IEEE-NITK/Parallelizing-FFT.git +git fetch upstream +git checkout -b +// Make your changes here +git add +git commit -m "" +git push origin +// Generate a pull request from your forked Repo +``` From 3091c27a6d99cdf369cf3a28e928db4e01108c58 Mon Sep 17 00:00:00 2001 From: shashwatha <42376721+Shashwatha-Mitra@users.noreply.github.com> Date: Thu, 19 Dec 2019 10:27:36 +0530 Subject: [PATCH 09/20] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 19be74d..0a52cb2 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Note that origin will be the forked repository while upstream will be this repos git remote add upstream https://github.com/IEEE-NITK/Parallelizing-FFT.git git fetch upstream git checkout -b +git pull upstream development // Make your changes here git add git commit -m "" From 526e73c006e094b717c4807ab0c89421160d58c2 Mon Sep 17 00:00:00 2001 From: Shashwatha-Mitra Date: Thu, 19 Dec 2019 11:10:29 +0530 Subject: [PATCH 10/20] Added performance metrics --- fft-opt1.cu | 23 +++++++++++++++++++++++ fft-serialized.c | 10 ++++++++-- fft.cu | 23 +++++++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/fft-opt1.cu b/fft-opt1.cu index 9eca18f..e8fd7da 100644 --- a/fft-opt1.cu +++ b/fft-opt1.cu @@ -97,6 +97,12 @@ float magnitude(float2 a) } int main() { + + //Measuring performance + cudaEvent_t start, stop; + cudaEventCreate(&start); + cudaEventCreate(&stop); + // Creating files to write output to FILE *fptr; fptr = fopen("fft-opt1-output.dat", "wr"); @@ -126,6 +132,9 @@ int main() { // Copy host array to device cudaMemcpy(d_a, h_a, ARRAY_BYTES, cudaMemcpyHostToDevice); + //Start of performance measurement + cudaEventRecord(start); + // First step in FFT, bit-reverse reordering // Swap an element at index 'i', with the element // which is the bit-string reversal of 'i' @@ -153,6 +162,20 @@ int main() { } } + //End of performance measurement + cudaEventRecord(stop); + + // Copy result array from device to host + cudaMemcpy(h_rev,d_rev,ARRAY_BYTES,cudaMemcpyDeviceToHost); + + //Block CPU execution until the event "stop" is recorded + cudaEventSynchronize(stop); + + //Print the time taken in milliseconds + float milliseconds = 0; + cudaEventElapsedTime(&milliseconds, start, stop); + printf("The total time taken is %f milliseconds\n", milliseconds); + // Copy result array from device to host cudaMemcpy(h_rev,d_rev,ARRAY_BYTES,cudaMemcpyDeviceToHost); diff --git a/fft-serialized.c b/fft-serialized.c index 750e1af..e7dd538 100644 --- a/fft-serialized.c +++ b/fft-serialized.c @@ -1,13 +1,14 @@ #include #include #include -#include +#include +#include #ifndef M_PI #define M_PI 3.14159265358979323846 #endif -#define ARRAY_SIZE 65536 +#define ARRAY_SIZE 131072 typedef struct Complex{ float re,im; @@ -77,6 +78,7 @@ float magnitude(Complex a) } void main(){ + clock_t start, end; FILE *fptr; fptr = fopen("fft-serialized-output.dat", "wr"); if (fptr == NULL) { @@ -91,8 +93,12 @@ void main(){ a[i].re = sinf((12*M_PI*i)/ARRAY_SIZE); a[i].im = 0; } + start = clock(); bit_reverse_reorder(a,rev,s); fft(rev,s); + end = clock(); + double time = ((double)(end - start))/1000; + printf("Time in ms: %lf\n", (double)time); fprintf(fptr, "i\t\trev.magn\t\trev.real\t\trev.img\t\ta.magn\t\ta.real\t\ta.img\n"); for (int i = 0; i < ARRAY_SIZE; i++) { diff --git a/fft.cu b/fft.cu index 0430ef6..69f5a79 100644 --- a/fft.cu +++ b/fft.cu @@ -56,6 +56,12 @@ float magnitude(float2 a) } int main(int argc, char *argv[]) { + + //Measuring performance + cudaEvent_t start, stop; + cudaEventCreate(&start); + cudaEventCreate(&stop); + // Creating files to write output to FILE *fptr; fptr = fopen("fft-output.dat", "wr"); @@ -81,6 +87,9 @@ int main(int argc, char *argv[]) { //Copy all elements of sample array from host to device cudaMemcpy(d_a, h_a, ARRAY_BYTES, cudaMemcpyHostToDevice); + //Start of performance measurement + cudaEventRecord(start); + //Reorder the sample as first step of FFT bit_reverse_reorder<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev, d_a, s); @@ -100,6 +109,20 @@ int main(int argc, char *argv[]) { } } + //End of performance measurement + cudaEventRecord(stop); + + // Copy result array to host + cudaMemcpy(h_rev, d_rev, ARRAY_BYTES, cudaMemcpyDeviceToHost); + + //Block CPU execution until the event "stop" is recorded + cudaEventSynchronize(stop); + + //Print the time taken in milliseconds. + float milliseconds = 0; + cudaEventElapsedTime(&milliseconds, start, stop); + printf("The total time taken is %f milliseconds\n", milliseconds); + // Copy result array to host cudaMemcpy(h_rev, d_rev, ARRAY_BYTES, cudaMemcpyDeviceToHost); From 9c5ac760f3d46921f0d23c10293a6e826a171f7c Mon Sep 17 00:00:00 2001 From: Shashwatha-Mitra Date: Thu, 19 Dec 2019 11:24:11 +0530 Subject: [PATCH 11/20] Removed duplicate cudaMemcpy statements --- fft-opt1.cu | 3 --- fft.cu | 3 --- 2 files changed, 6 deletions(-) diff --git a/fft-opt1.cu b/fft-opt1.cu index e8fd7da..333f50e 100644 --- a/fft-opt1.cu +++ b/fft-opt1.cu @@ -165,9 +165,6 @@ int main() { //End of performance measurement cudaEventRecord(stop); - // Copy result array from device to host - cudaMemcpy(h_rev,d_rev,ARRAY_BYTES,cudaMemcpyDeviceToHost); - //Block CPU execution until the event "stop" is recorded cudaEventSynchronize(stop); diff --git a/fft.cu b/fft.cu index 69f5a79..268e09a 100644 --- a/fft.cu +++ b/fft.cu @@ -112,9 +112,6 @@ int main(int argc, char *argv[]) { //End of performance measurement cudaEventRecord(stop); - // Copy result array to host - cudaMemcpy(h_rev, d_rev, ARRAY_BYTES, cudaMemcpyDeviceToHost); - //Block CPU execution until the event "stop" is recorded cudaEventSynchronize(stop); From d39894de8612c4ca852350335bd94e1b39a0e87e Mon Sep 17 00:00:00 2001 From: Narayan G Date: Wed, 25 Dec 2019 19:39:14 +0530 Subject: [PATCH 12/20] Change repository structure --- fft-opt1.cu => 1D-FFT/fft-opt1.cu | 0 fft-serialized.c => 1D-FFT/fft-serialized.c | 0 fft.cu => 1D-FFT/fft.cu | 0 README.md | 16 ++-------------- 4 files changed, 2 insertions(+), 14 deletions(-) rename fft-opt1.cu => 1D-FFT/fft-opt1.cu (100%) rename fft-serialized.c => 1D-FFT/fft-serialized.c (100%) rename fft.cu => 1D-FFT/fft.cu (100%) diff --git a/fft-opt1.cu b/1D-FFT/fft-opt1.cu similarity index 100% rename from fft-opt1.cu rename to 1D-FFT/fft-opt1.cu diff --git a/fft-serialized.c b/1D-FFT/fft-serialized.c similarity index 100% rename from fft-serialized.c rename to 1D-FFT/fft-serialized.c diff --git a/fft.cu b/1D-FFT/fft.cu similarity index 100% rename from fft.cu rename to 1D-FFT/fft.cu diff --git a/README.md b/README.md index 0a52cb2..8e0233b 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,5 @@ # Parallelizing-FFT -## Contributing + This project is an parallelized implementation of Fast Fourier + Transform (specifically Cooley Tukey algorithm) using CUDA. -Fork the repository and clone it (forked repository) to a local system and later follow these steps.
-Note that origin will be the forked repository while upstream will be this repository -``` -git remote add upstream https://github.com/IEEE-NITK/Parallelizing-FFT.git -git fetch upstream -git checkout -b -git pull upstream development -// Make your changes here -git add -git commit -m "" -git push origin -// Generate a pull request from your forked Repo -``` From 1ac13907dc744a7f64e13eca70f63e3f623f85c3 Mon Sep 17 00:00:00 2001 From: Narayan G Date: Tue, 14 Jan 2020 16:46:12 +0530 Subject: [PATCH 13/20] Add naive implementation of 2D FFT Signed-off-by: Narayan G --- 2D-FFT/fft.cu | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 264 insertions(+) create mode 100644 2D-FFT/fft.cu diff --git a/2D-FFT/fft.cu b/2D-FFT/fft.cu new file mode 100644 index 0000000..05cd1e6 --- /dev/null +++ b/2D-FFT/fft.cu @@ -0,0 +1,264 @@ +#include +#include +#include + +typedef float2 Complex; + +#define THREADS 32 +#define MAX_NO_OF_THREADS_PER_BLOCK 1024 + +// TODO: Make sure the implementations works for non square matrices +const long long ARRAY_SIZE = 1024; +const long long ARRAY_BYTES = ARRAY_SIZE * sizeof(Complex); + +// Bit reversal re-ordering, first step of FFT +__global__ void bit_reverse_reorder_row(Complex *d_rev, int i, Complex *d_a, int s) { + int id = blockIdx.x * blockDim.x + threadIdx.x; + int rev = __brev(id) >> (32-s); + + if(id < ARRAY_SIZE) + d_rev[i][rev] = d_a[i][id]; +} + +// Work of the innermost loop, common to both parallelization +__device__ void inplace_fft_row(Complex *a, int i, int j, int k, int m){ + + if (j+k+m/2 < ARRAY_SIZE){ + + Complex w, t, u; + + // w^k (w is root of unity) + w.x = __cosf((2*M_PI*k)/m); + w.y = -__sinf((2*M_PI*k)/m); + + // u = a[j+k] + u.x = a[i][j+k].x; + u.y = a[i][j+k].y; + + // t = w*a[j+k+m/2]; + t.x = w.x*a[i][j+k+m/2].x - w.y*a[i][j+k+m/2].y; + t.y = w.x*a[i][j+k+m/2].y + w.y*a[i][j+k+m/2].x; + + // a[j+k] = u+t; + a[i][j+k].x = u.x + t.x; + a[i][j+k].y = u.y + t.y; + + // a[j+k+m/2] = u-t; + a[i][j+k+m/2].x = u.x - t.x; + a[i][j+k+m/2].y = u.y - t.y; + + } +} + +// Parallelization of loop2 +__global__ void fft_outer_row(Complex *a, int i, int m){ + int j = (blockIdx.x * blockDim.x + threadIdx.x)*m; + if (j < ARRAY_SIZE){ + for (int k=0;k> (32-s); + + if(id < ARRAY_SIZE) + d_rev[rev][i] = d_a[id][i]; +} + +// Work of the innermost loop, common to both parallelization +__device__ void inplace_fft_column(Complex *a, int i, int j, int k, int m){ + + if (j+k+m/2 < ARRAY_SIZE){ + + Complex w, t, u; + + // w^k (w is root of unity) + w.x = __cosf((2*M_PI*k)/m); + w.y = -__sinf((2*M_PI*k)/m); + + // u = a[j+k] + u.x = a[j+k][i].x; + u.y = a[j+k][i].y; + + // t = w*a[j+k+m/2]; + t.x = w.x*a[j+k+m/2][i].x - w.y*a[j+k+m/2][i].y; + t.y = w.x*a[j+k+m/2][i].y + w.y*a[j+k+m/2][i].x; + + // a[j+k] = u+t; + a[j+k][i].x = u.x + t.x; + a[j+k][i].y = u.y + t.y; + + // a[j+k+m/2] = u-t; + a[j+k+m/2][i].x = u.x - t.x; + a[j+k+m/2][i].y = u.y - t.y; + + } +} + +// Parallelization of loop2 +__global__ void fft_outer_column(Complex *a, int i, int m){ + int j = (blockIdx.x * blockDim.x + threadIdx.x)*m; + if (j < ARRAY_SIZE){ + for (int k=0;k>>(d_rev, i, d_a, s); + + cudaDeviceSynchronize(); + + // FFT driver code for row wise FFT + for(int i = 0; i < ARRAY_SIZE; i++) + { + for (int j=1;j<=s;j++){ + + // m = 2^j + int m = 1 << j; + + if (m/2 < MAX_NO_OF_THREADS_PER_BLOCK){ + + fft_outer_row<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev,i,m); + + } else { + + for (int k=0;k>>(d_rev,i,k,m); + + } + } + } + } + + for(int i = 0; i < ARRAY_SIZE; i++) + bit_reverse_reorder_column<<<((ARRAY_BYTES * ARRAY_BYTES)+THREADS-1)/THREADS, THREADS>>>(d_rev, i, d_a, s); + + cudaDeviceSynchronize(); + + // FFT driver code for column wise FFT + // TODO: Check for optimisations since accesses here are column wise + for(int i = 0; i < ARRAY_SIZE; i++) + { + for (int j=1;j<=s;j++){ + + // m = 2^j + int m = 1 << j; + + if (m/2 < MAX_NO_OF_THREADS_PER_BLOCK){ + + fft_outer_column<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev,i,m); + + } else { + + for (int k=0;k>>(d_rev,i,k,m); + + } + } + } + } + + //End of performance measurement + cudaEventRecord(stop); + + //Block CPU execution until the event "stop" is recorded + cudaEventSynchronize(stop); + + //Print the time taken in milliseconds + float milliseconds = 0; + cudaEventElapsedTime(&milliseconds, start, stop); + printf("The total time taken is %f milliseconds\n", milliseconds); + + // Copy result array from device to host + cudaMemcpy(h_rev,d_rev,ARRAY_BYTES * ARRAY_BYTES,cudaMemcpyDeviceToHost); + + // Writing output to files + fprintf(fptr, "i\t\ta.magn\t\ta.real\t\t\ta.img\n"); + for (int i = 0; i < ARRAY_SIZE; i++) + { + for(int j = 0; j < ARRAY_SIZE; j++) + { + fprintf(fptr,"%d\t\t%f\t\t%f\t\t%f\n", i, magnitude(h_rev[i][j]), h_rev[i][j].x, h_rev[i][j].y); + } + } + + // Free allocated device memory + cudaFree(d_a); + cudaFree(d_rev); + + return 0; +} \ No newline at end of file From 7faecda4dfddf7460afc412f113454cf1686fd3b Mon Sep 17 00:00:00 2001 From: niranjansy Date: Tue, 3 Mar 2020 22:59:51 +0530 Subject: [PATCH 14/20] Add optimization for row-wise FFT and transpose Code launches a block of threads for each row, and performs matrix transpose to reduce colum-wise operations --- 2D-FFT/fft.cu | 250 +++++++++++++++++++++----------------------------- 1 file changed, 107 insertions(+), 143 deletions(-) diff --git a/2D-FFT/fft.cu b/2D-FFT/fft.cu index 05cd1e6..49d28ef 100644 --- a/2D-FFT/fft.cu +++ b/2D-FFT/fft.cu @@ -7,122 +7,114 @@ typedef float2 Complex; #define THREADS 32 #define MAX_NO_OF_THREADS_PER_BLOCK 1024 +const int TILE_DIM = 32; +const int BLOCK_ROWS = 8; + // TODO: Make sure the implementations works for non square matrices const long long ARRAY_SIZE = 1024; const long long ARRAY_BYTES = ARRAY_SIZE * sizeof(Complex); // Bit reversal re-ordering, first step of FFT -__global__ void bit_reverse_reorder_row(Complex *d_rev, int i, Complex *d_a, int s) { - int id = blockIdx.x * blockDim.x + threadIdx.x; - int rev = __brev(id) >> (32-s); - - if(id < ARRAY_SIZE) - d_rev[i][rev] = d_a[i][id]; +__global__ void bit_reverse_reorder(Complex *d_rev, Complex *d_a, int s) +{ + int row_id = blockIdx.y; + int col_id = threadIdx.x; + int row_size = ARRAY_SIZE; + int rev = __brev(col_id) >> (32-s); + + // d_rev[row_id][rev] = d_a[row_id][col_id] + d_rev[row_id * row_size + rev] = d_a[row_id * row_size + col_id]; } -// Work of the innermost loop, common to both parallelization -__device__ void inplace_fft_row(Complex *a, int i, int j, int k, int m){ - - if (j+k+m/2 < ARRAY_SIZE){ - - Complex w, t, u; +// Optimized kernel for calculating FFT of all rows simultaneously - // w^k (w is root of unity) - w.x = __cosf((2*M_PI*k)/m); - w.y = -__sinf((2*M_PI*k)/m); +__global__ void fft_2d(Complex *A, int s) +{ + int row_id = blockIdx.y; + int col_id = threadIdx.x; + int row_size = ARRAY_SIZE; - // u = a[j+k] - u.x = a[i][j+k].x; - u.y = a[i][j+k].y; + // Shared memory allocated indepedent to each block + __shared__ Complex Work_Array[ARRAY_SIZE]; + + // Work_Array[col_id] = A[row_id][col_id]; + Work_Array[col_id].x = A[(row_id * row_size) + col_id].x; + Work_Array[col_id].y = A[(row_id * row_size) + col_id].y; - // t = w*a[j+k+m/2]; - t.x = w.x*a[i][j+k+m/2].x - w.y*a[i][j+k+m/2].y; - t.y = w.x*a[i][j+k+m/2].y + w.y*a[i][j+k+m/2].x; + // Work_Array[col_id + row_size/2] = A[row_id][col_id + row_size/2]; + Work_Array[col_id + row_size/2].x = A[(row_id * row_size) + (col_id + row_size/2)].x; + Work_Array[col_id + row_size/2].y = A[(row_id * row_size) + (col_id + row_size/2)].y; - // a[j+k] = u+t; - a[i][j+k].x = u.x + t.x; - a[i][j+k].y = u.y + t.y; + __syncthreads(); - // a[j+k+m/2] = u-t; - a[i][j+k+m/2].x = u.x - t.x; - a[i][j+k+m/2].y = u.y - t.y; + for(int i=1; i<=s; i++) + { + int m = 1 << i; - } -} + int j = col_id * m; -// Parallelization of loop2 -__global__ void fft_outer_row(Complex *a, int i, int m){ - int j = (blockIdx.x * blockDim.x + threadIdx.x)*m; - if (j < ARRAY_SIZE){ - for (int k=0;k> (32-s); + // t = w*a[j+k+m/2]; + t.x = w.x*Work_Array[j+k+m/2].x - w.y*Work_Array[j+k+m/2].y; + t.y = w.x*Work_Array[j+k+m/2].y + w.y*Work_Array[j+k+m/2].x; - if(id < ARRAY_SIZE) - d_rev[rev][i] = d_a[id][i]; -} + // a[j+k] = u+t; + Work_Array[j+k].x = u.x + t.x; + Work_Array[j+k].y = u.y + t.y; -// Work of the innermost loop, common to both parallelization -__device__ void inplace_fft_column(Complex *a, int i, int j, int k, int m){ - - if (j+k+m/2 < ARRAY_SIZE){ - - Complex w, t, u; + // a[j+k+m/2] = u-t; + Work_Array[j+k+m/2].x = u.x - t.x; + Work_Array[j+k+m/2].y = u.y - t.y; - // w^k (w is root of unity) - w.x = __cosf((2*M_PI*k)/m); - w.y = -__sinf((2*M_PI*k)/m); + } + } - // u = a[j+k] - u.x = a[j+k][i].x; - u.y = a[j+k][i].y; + __syncthreads(); + } - // t = w*a[j+k+m/2]; - t.x = w.x*a[j+k+m/2][i].x - w.y*a[j+k+m/2][i].y; - t.y = w.x*a[j+k+m/2][i].y + w.y*a[j+k+m/2][i].x; + // Copying data back from shared memory to global memory - // a[j+k] = u+t; - a[j+k][i].x = u.x + t.x; - a[j+k][i].y = u.y + t.y; + // A[row_id][col_id] = Work_Array[col_id]; + A[(row_id * row_size) + col_id].x = Work_Array[col_id].x; + A[(row_id * row_size) + col_id].y = Work_Array[col_id].y; - // a[j+k+m/2] = u-t; - a[j+k+m/2][i].x = u.x - t.x; - a[j+k+m/2][i].y = u.y - t.y; + // A[row_id][col_id + row_size/2] = Work_Array[col_id + row_size/2]; + A[(row_id * row_size) + (col_id + row_size/2)].x = Work_Array[col_id + row_size/2].x; + A[(row_id * row_size) + (col_id + row_size/2)].y = Work_Array[col_id + row_size/2].y; - } } -// Parallelization of loop2 -__global__ void fft_outer_column(Complex *a, int i, int m){ - int j = (blockIdx.x * blockDim.x + threadIdx.x)*m; - if (j < ARRAY_SIZE){ - for (int k=0;k>>(d_rev, i, d_a, s); + + bit_reverse_reorder<<>>(d_rev, d_a, s); cudaDeviceSynchronize(); // FFT driver code for row wise FFT - for(int i = 0; i < ARRAY_SIZE; i++) - { - for (int j=1;j<=s;j++){ + // Assigning every row of the 2d fft to a block of threads and calling N/2 threads for each block + fft_2d <<>> (d_rev, s); - // m = 2^j - int m = 1 << j; + // TODO : Code for matrix transpose - DONE - if (m/2 < MAX_NO_OF_THREADS_PER_BLOCK){ + cudaMemset(d_rev1, 0, ARRAY_BYTES*ARRAY_SIZE); - fft_outer_row<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev,i,m); - - } else { - - for (int k=0;k>>(d_rev,i,k,m); - - } - } - } - } + // Taking transpose of d_rev and storing in d_rev1 + MatrixTranspose<<>>(d_rev1, d_rev); - for(int i = 0; i < ARRAY_SIZE; i++) - bit_reverse_reorder_column<<<((ARRAY_BYTES * ARRAY_BYTES)+THREADS-1)/THREADS, THREADS>>>(d_rev, i, d_a, s); + // Column wise bit-reverse reordering of d_rev1, and storing in d_rev + bit_reverse_reorder<<>>(d_rev, d_rev1, s); cudaDeviceSynchronize(); // FFT driver code for column wise FFT - // TODO: Check for optimisations since accesses here are column wise - for(int i = 0; i < ARRAY_SIZE; i++) - { - for (int j=1;j<=s;j++){ - - // m = 2^j - int m = 1 << j; - - if (m/2 < MAX_NO_OF_THREADS_PER_BLOCK){ - - fft_outer_column<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev,i,m); - - } else { - - for (int k=0;k>>(d_rev,i,k,m); - - } - } - } - } + + fft_2d <<>> (d_rev, s); //End of performance measurement cudaEventRecord(stop); @@ -244,21 +207,22 @@ int main() { printf("The total time taken is %f milliseconds\n", milliseconds); // Copy result array from device to host - cudaMemcpy(h_rev,d_rev,ARRAY_BYTES * ARRAY_BYTES,cudaMemcpyDeviceToHost); + cudaMemcpy(*h_rev, d_rev, ARRAY_BYTES * ARRAY_SIZE, cudaMemcpyDeviceToHost); // Writing output to files - fprintf(fptr, "i\t\ta.magn\t\ta.real\t\t\ta.img\n"); + fprintf(fptr, "[i][j]\t\ta.magn\t\ta.real\t\t\ta.img\n"); for (int i = 0; i < ARRAY_SIZE; i++) { for(int j = 0; j < ARRAY_SIZE; j++) { - fprintf(fptr,"%d\t\t%f\t\t%f\t\t%f\n", i, magnitude(h_rev[i][j]), h_rev[i][j].x, h_rev[i][j].y); + fprintf(fptr,"[%d][%d]\t\t%f\t\t%f\t\t%f\n", i, j, magnitude(h_rev[i][j]), h_rev[i][j].x, h_rev[i][j].y); } } // Free allocated device memory cudaFree(d_a); cudaFree(d_rev); + cudaFree(d_rev1); return 0; } \ No newline at end of file From 2f4f08a5f845f0ac95703fbb85b6d68bbad716e4 Mon Sep 17 00:00:00 2001 From: niranjansy Date: Fri, 6 Mar 2020 15:58:40 +0530 Subject: [PATCH 15/20] Add inverse 1D FFT --- 1D-FFT/inv_fft.cu | 182 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 1D-FFT/inv_fft.cu diff --git a/1D-FFT/inv_fft.cu b/1D-FFT/inv_fft.cu new file mode 100644 index 0000000..7aedcb5 --- /dev/null +++ b/1D-FFT/inv_fft.cu @@ -0,0 +1,182 @@ +#include +#include +#include + +typedef float2 Complex; + +#define THREADS 32 +#define MAX_NO_OF_THREADS_PER_BLOCK 1024 + +const long long ARRAY_SIZE = 16; +const long long ARRAY_BYTES = ARRAY_SIZE * sizeof(Complex); + +__global__ void bit_reverse_reorder(Complex *d_rev, Complex *d_a, int s) { + int id = blockIdx.x * blockDim.x + threadIdx.x; + int rev = __brev(id) >> (32-s); + + if(id < ARRAY_SIZE) + d_rev[rev] = d_a[id]; +} + +__global__ void swap_real_and_imaginary(Complex *d_rev) { + int id = blockIdx.x * blockDim.x + threadIdx.x; + if (id < ARRAY_SIZE) { + float temp = d_rev[id].x; + d_rev[id].x = d_rev[id].y; + d_rev[id].y = temp; + } +} + +__device__ void inplace_fft(Complex *a, int j, int k, int m){ + + if (j+k+m/2 < ARRAY_SIZE){ + + Complex w, t, u; + + // w^k (w is root of unity) + w.x = __cosf((2*M_PI*k)/m); + w.y = -__sinf((2*M_PI*k)/m); + + // u = a[j+k] + u.x = a[j+k].x; + u.y = a[j+k].y; + + // t = w*a[j+k+m/2]; + t.x = w.x*a[j+k+m/2].x - w.y*a[j+k+m/2].y; + t.y = w.x*a[j+k+m/2].y + w.y*a[j+k+m/2].x; + + // a[j+k] = u+t; + a[j+k].x = u.x + t.x; + a[j+k].y = u.y + t.y; + + // a[j+k+m/2] = u-t; + a[j+k+m/2].x = u.x - t.x; + a[j+k+m/2].y = u.y - t.y; + + } +} + +__global__ void fft_outer(Complex *a, int m){ + int j = (blockIdx.x * blockDim.x + threadIdx.x)*m; + if (j < ARRAY_SIZE){ + for (int k=0;k>>(d_rev, d_a, s); + + cudaDeviceSynchronize(); + + for (int i=1;i<=s;i++){ + int m = 1 << i; + if (m/2 < MAX_NO_OF_THREADS_PER_BLOCK){ + fft_outer<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev,m); + } else { + for (int j=0;j>>(d_rev,j,m); + } + } + } + + cudaDeviceSynchronize(); + + // Beginning of inverse FFT + + swap_real_and_imaginary<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev); + + cudaDeviceSynchronize(); + + bit_reverse_reorder<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev1, d_rev, s); + + cudaDeviceSynchronize(); + + for (int i=1;i<=s;i++) + { + int m = 1 << i; + if (m < sqrt(ARRAY_SIZE / 4)) + { + fft_outer<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev1,m); + } + else + { + for (int j=0;j>>(d_rev1,j,m); + } + } + } + + swap_real_and_imaginary<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev1); + + //End of performance measurement + cudaEventRecord(stop); + + //Block CPU execution until the event "stop" is recorded + cudaEventSynchronize(stop); + + //Print the time taken in milliseconds + float milliseconds = 0; + cudaEventElapsedTime(&milliseconds, start, stop); + printf("The total time taken is %f milliseconds\n", milliseconds); + + cudaMemcpy(h_rev,d_rev1,ARRAY_BYTES,cudaMemcpyDeviceToHost); + + cudaFree(d_a); + cudaFree(d_rev); + cudaFree(d_rev1); + + for (int i=0;i Date: Sun, 8 Mar 2020 15:50:08 +0530 Subject: [PATCH 16/20] 1D-FFT: Add changes to process a wav file preprocessing.py writes data from .wav file to .dat file Changes to inv_fft.cu to accept and output suitable data postprocessing.py converts processed data to .wav file --- 1D-FFT/inv_fft.cu | 76 ++++++++++++++++++++++++++-------------- 1D-FFT/postprocessing.py | 16 +++++++++ 1D-FFT/preprocessing.py | 10 ++++++ 3 files changed, 76 insertions(+), 26 deletions(-) create mode 100644 1D-FFT/postprocessing.py create mode 100644 1D-FFT/preprocessing.py diff --git a/1D-FFT/inv_fft.cu b/1D-FFT/inv_fft.cu index 7aedcb5..1472890 100644 --- a/1D-FFT/inv_fft.cu +++ b/1D-FFT/inv_fft.cu @@ -7,18 +7,18 @@ typedef float2 Complex; #define THREADS 32 #define MAX_NO_OF_THREADS_PER_BLOCK 1024 -const long long ARRAY_SIZE = 16; -const long long ARRAY_BYTES = ARRAY_SIZE * sizeof(Complex); +long long ARRAY_SIZE; +long long ARRAY_BYTES; -__global__ void bit_reverse_reorder(Complex *d_rev, Complex *d_a, int s) { - int id = blockIdx.x * blockDim.x + threadIdx.x; +__global__ void bit_reverse_reorder(Complex *d_rev, Complex *d_a, int s, long long ARRAY_SIZE) { + int id = blockIdx.x * blockDim.x + threadIdx.x; int rev = __brev(id) >> (32-s); if(id < ARRAY_SIZE) d_rev[rev] = d_a[id]; } -__global__ void swap_real_and_imaginary(Complex *d_rev) { +__global__ void swap_real_and_imaginary(Complex *d_rev, long long ARRAY_SIZE) { int id = blockIdx.x * blockDim.x + threadIdx.x; if (id < ARRAY_SIZE) { float temp = d_rev[id].x; @@ -27,7 +27,7 @@ __global__ void swap_real_and_imaginary(Complex *d_rev) { } } -__device__ void inplace_fft(Complex *a, int j, int k, int m){ +__device__ void inplace_fft(Complex *a, int j, int k, int m, long long ARRAY_SIZE){ if (j+k+m/2 < ARRAY_SIZE){ @@ -56,19 +56,24 @@ __device__ void inplace_fft(Complex *a, int j, int k, int m){ } } -__global__ void fft_outer(Complex *a, int m){ +__global__ void fft_outer(Complex *a, int m, long long ARRAY_SIZE){ int j = (blockIdx.x * blockDim.x + threadIdx.x)*m; if (j < ARRAY_SIZE){ for (int k=0;k>>(d_rev, d_a, s); + bit_reverse_reorder<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev, d_a, s, ARRAY_SIZE); cudaDeviceSynchronize(); for (int i=1;i<=s;i++){ int m = 1 << i; if (m/2 < MAX_NO_OF_THREADS_PER_BLOCK){ - fft_outer<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev,m); + fft_outer<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev,m,ARRAY_SIZE); } else { for (int j=0;j>>(d_rev,j,m); + fft_inner<<<((m/2)+THREADS-1)/THREADS,THREADS>>>(d_rev,j,m,ARRAY_SIZE); } } } @@ -124,11 +146,11 @@ int main() // Beginning of inverse FFT - swap_real_and_imaginary<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev); + swap_real_and_imaginary<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev, ARRAY_SIZE); cudaDeviceSynchronize(); - bit_reverse_reorder<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev1, d_rev, s); + bit_reverse_reorder<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev1, d_rev, s, ARRAY_SIZE); cudaDeviceSynchronize(); @@ -137,23 +159,23 @@ int main() int m = 1 << i; if (m < sqrt(ARRAY_SIZE / 4)) { - fft_outer<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev1,m); + fft_outer<<<((ARRAY_SIZE/m)+THREADS-1)/THREADS,THREADS>>>(d_rev1,m,ARRAY_SIZE); } else { for (int j=0;j>>(d_rev1,j,m); + fft_inner<<<((m/2)+THREADS-1)/THREADS,THREADS>>>(d_rev1,j,m,ARRAY_SIZE); } } } - swap_real_and_imaginary<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev1); + swap_real_and_imaginary<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev1, ARRAY_SIZE); - //End of performance measurement + // End of performance measurement cudaEventRecord(stop); - //Block CPU execution until the event "stop" is recorded + // Block CPU execution until the event "stop" is recorded cudaEventSynchronize(stop); //Print the time taken in milliseconds @@ -167,15 +189,17 @@ int main() cudaFree(d_rev); cudaFree(d_rev1); - for (int i=0;i Date: Sun, 8 Mar 2020 15:55:07 +0530 Subject: [PATCH 17/20] utils: Add file to be processed --- utils/1kplus250.wav | Bin 0 -> 441044 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 utils/1kplus250.wav diff --git a/utils/1kplus250.wav b/utils/1kplus250.wav new file mode 100644 index 0000000000000000000000000000000000000000..6814b83e7f22b221d084ccb3726daab8a8be8d9b GIT binary patch literal 441044 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�OR43Z_b2UC7BIcutg@j4@T>x$vCa206L(B=B`4 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 OIXNkY*rZo(KK?%g!z`Ns literal 0 HcmV?d00001 From 7796124286ef4ab9b153fd8ba59392312bd1c833 Mon Sep 17 00:00:00 2001 From: appu234 Date: Sun, 8 Mar 2020 16:26:59 +0530 Subject: [PATCH 18/20] 1D-FFT: Add code to take in command line arguments run.sh is a shell script to perform preprocessing, fft, inverse and postprocessing with command line arguments to take in path and cut-off frequency preprocessing.py takes in .wav file as command line argument inv_fft.cu takes in cut-off frequency as command line argument --- 1D-FFT/inv_fft.cu | 27 ++++++++++++++++++++++++++- 1D-FFT/preprocessing.py | 6 +++++- 1D-FFT/run.sh | 9 +++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100755 1D-FFT/run.sh diff --git a/1D-FFT/inv_fft.cu b/1D-FFT/inv_fft.cu index 1472890..e9e5f12 100644 --- a/1D-FFT/inv_fft.cu +++ b/1D-FFT/inv_fft.cu @@ -76,8 +76,33 @@ float magnitude(float2 a) return sqrt(a.x*a.x + a.y*a.y); } -int main() +int to_int(char str[]) { + int cut_off_frequency = 0; + int i = 0; + while(str[i] != '\0') + { + cut_off_frequency += str[i] - 48; + cut_off_frequency *= 10; + + i++; + } + + return cut_off_frequency/10; +} + +int main(int argc, char *argv[]) +{ + int cut_off_frequency; + + if(argc >= 2) + cut_off_frequency = to_int(argv[1]); + + else + cut_off_frequency = 1000; + + // printf("%d\n", cut_off_frequency); + //Measuring performance cudaEvent_t start, stop; diff --git a/1D-FFT/preprocessing.py b/1D-FFT/preprocessing.py index 489d7b0..0952a9a 100644 --- a/1D-FFT/preprocessing.py +++ b/1D-FFT/preprocessing.py @@ -1,7 +1,11 @@ +import sys import numpy from scipy.io import wavfile -fs, data = wavfile.read("../utils/1kplus250.wav") +argument = sys.argv +print sys.argv[1] +fs, data = wavfile.read(str(sys.argv[1])) + file1 = open("../utils/input.dat", "w+") file1.write(str(fs) + '\n') file1.write(str(1 << int(numpy.log2(data.size))) + '\n') diff --git a/1D-FFT/run.sh b/1D-FFT/run.sh new file mode 100755 index 0000000..6bcb5f3 --- /dev/null +++ b/1D-FFT/run.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# echo "Argument give is $1" + +python preprocessing.py $1 + +nvcc inv_fft.cu +./a.out $2 + +python postprocessing.py \ No newline at end of file From 424f128aa210c35b21b4c58da31c0290e668c0b4 Mon Sep 17 00:00:00 2001 From: Shashwatha-Mitra Date: Sun, 8 Mar 2020 18:08:08 +0530 Subject: [PATCH 19/20] Frequency filter --- 1D-FFT/inv_fft.cu | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/1D-FFT/inv_fft.cu b/1D-FFT/inv_fft.cu index e9e5f12..0ba81ba 100644 --- a/1D-FFT/inv_fft.cu +++ b/1D-FFT/inv_fft.cu @@ -27,6 +27,14 @@ __global__ void swap_real_and_imaginary(Complex *d_rev, long long ARRAY_SIZE) { } } +__global__ void clip(Complex *d_rev, long long cut_off_frequency, long long ARRAY_SIZE) { + int id = blockIdx.x * blockDim.x + threadIdx.x; + if (id > cut_off_frequency && id < (ARRAY_SIZE - cut_off_frequency)) { + d_rev[id].x = 0.0f; + d_rev[id].y = 0.0f; + } +} + __device__ void inplace_fft(Complex *a, int j, int k, int m, long long ARRAY_SIZE){ if (j+k+m/2 < ARRAY_SIZE){ @@ -128,8 +136,8 @@ int main(int argc, char *argv[]) fptr = fopen("../utils/fft-opt1-output.dat", "wr"); output = fopen("../utils/convert_to_wav.dat", "wr"); - Complex h_a[ARRAY_SIZE]; - Complex h_rev[ARRAY_SIZE]; + Complex *h_a = (Complex *)malloc(ARRAY_BYTES); + Complex *h_rev = (Complex *)malloc(ARRAY_BYTES); for(int i = 0; i < ARRAY_SIZE; i++) { @@ -169,6 +177,9 @@ int main(int argc, char *argv[]) cudaDeviceSynchronize(); + // Clipping + clip<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev, cut_off_frequency, ARRAY_SIZE); + // Beginning of inverse FFT swap_real_and_imaginary<<<(ARRAY_SIZE+THREADS-1)/THREADS, THREADS>>>(d_rev, ARRAY_SIZE); From 4d1a203a8aa9fb6cf8ee2788ae3f302c5af2c488 Mon Sep 17 00:00:00 2001 From: Shashwatha-Mitra Date: Sun, 8 Mar 2020 18:36:56 +0530 Subject: [PATCH 20/20] Fixed bug --- 1D-FFT/inv_fft.cu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1D-FFT/inv_fft.cu b/1D-FFT/inv_fft.cu index 0ba81ba..c8f4214 100644 --- a/1D-FFT/inv_fft.cu +++ b/1D-FFT/inv_fft.cu @@ -29,7 +29,7 @@ __global__ void swap_real_and_imaginary(Complex *d_rev, long long ARRAY_SIZE) { __global__ void clip(Complex *d_rev, long long cut_off_frequency, long long ARRAY_SIZE) { int id = blockIdx.x * blockDim.x + threadIdx.x; - if (id > cut_off_frequency && id < (ARRAY_SIZE - cut_off_frequency)) { + if (id >= cut_off_frequency && id <= (ARRAY_SIZE - cut_off_frequency)) { d_rev[id].x = 0.0f; d_rev[id].y = 0.0f; }