Я пытался выполнить быстрое преобразование Фурье для собранных данных. После операции БПФ я хотел вычислить модуль данных типа cufftComplex. Поэтому я суммировал квадрат действительной части и квадрат мнимой части, а затем взял квадрат root суммирования. Ниже приведен код, а также назначение сеток и блоков:
dim3 dimBlock(256);
dim3 dimGrid(FFTlength / 256 * lines);
__global__ void modulus_kernel(int length, int lines, cufftComplex *PostFFTData, float* z)
{
unsigned int x = blockIdx.x * blockDim.x + threadIdx.x;
if(x<length*lines)
z1[x] = sqrt(PostFFTData[x].x *PostFFTData[x].x + PostFFTData[x].y *PostFFTData[x].y);
__syncthreads();
}
Длина массива указателей PostFFData составляет 1024000, а длина и строки - 2048 и 500 соответственно. После того, как я выполнил код, я проанализировал временную шкалу программы с помощью Nvidia Visual Profiler. Это показывает, что для завершения модуля ядра потребовалось 0,367 мс. Кроме того, я использовал видеокарту GTX1080, а CPU - i7-7700U. Если я хочу сократить время выполнения, как мне это сделать?