cuFFT и потоки

Я пытаюсь запустить несколько ядер CUDA FFT асинхронно с использованием потоков. Для этого я создаю свои потоки, прямые и обратные планы cuFFT следующим образом:

streams = (cudaStream_t*) malloc(sizeof(cudaStream_t)*streamNum);
plansF = (cufftHandle *) malloc(sizeof(cufftHandle)*streamNum);
plansI = (cufftHandle *) malloc(sizeof(cufftHandle)*streamNum);
for(int i=0; i<streamNum; i++)  
{
    cudaStreamCreate(&streams[i]);
    CHECK_ERROR(5)
    cufftPlan1d(&plansF[i], ticks, CUFFT_R2C,1);
    CHECK_ERROR(5)
    cufftPlan1d(&plansI[i], ticks, CUFFT_C2R,1);
    CHECK_ERROR(5)
    cufftSetStream(plansF[i],streams[i]);
    CHECK_ERROR(5)
    cufftSetStream(plansI[i],streams[i]);
    CHECK_ERROR(5)
}

вmain функция, я запускаю вперед БПФ следующим образом:

for(w=1;w<q;w++)
  {
    cufftExecR2C(plansF[w], gpuMem1+k,gpuMem2+j);
    CHECK_ERROR(8)
    k += rect_small_real;
    j += rect_small_complex;
  }

У меня также есть другие ядра, которые я запускаю асинхронно с теми же потоками.

Когда я профилирую свое приложение с помощью Visual Profiler 5.0, я вижу, что все ядра, за исключением FFT CUDA (как прямого, так и обратного), работают параллельно и перекрываются. Ядра FFT работают в разных потоках, но они не перекрываются, так как фактически работают последовательно. Может кто-нибудь сказать мне, в чем моя проблема?

Моя среда VS 2008, 64 бит, Windows 7.

Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос