2011-03-08 3 views
4

CUFFT 라이브러리에서 제공되는 배치 모드를 사용하는 방법을 알아 내려고하고 있습니다.CUFFT의 배치 모드는 어떻게 사용합니까?

기본적으로 너비가 5300 픽셀, 높이가 3500 인 이미지가 있습니다. 현재 이것은 FFTW를 사용하는 5300 개의 요소에서 3500 1D FFT를 실행 중임을 의미합니다.

배치 모드에서 CUFFT 라이브러리를 실행하는 것이 좋은 후보 문제입니까? 이 문제를 해결하기 위해 데이터를 어떻게 설정해야합니까?

감사합니다.

답변

2

예. 이것은 좋은 문제입니다.

  1. 의 크기와 배열을 만들 :

    당신은 다음과 같은 방법으로 가야한다

  2. 복사 (난 당신이 복잡한 입력 데이터가 있다고 가정 여기)는 GPU에서를 sizeof (cufftComplex을) * * 3500 5300 당신 GPU에
  3. 데이터는 cufftPlan1d()
  4. 더 cufftExecC2C()

으로 예 계획을 실행 함께 계획을 수립 CUFFT 매뉴얼을 보셔야합니다.

3

예, 일괄 처리 모드를 사용할 수 있습니다.

배치 모드를 사용하려면 5300 개의 요소를 연속적으로 저장해야합니다. 자세한 내용은

.......... 
cufftComplex *host; 
cufftComplex *device; 
CudaMallocHost((void **)&host,sizeof(cufftComplex)*5300*3500); 
CudaMalloc((void **)&devcie,sizeof(cufftComplex)*5300*3500); 
//here add the elements,like this: 
//host[0-5299] the first batch, host[5300-10599] the second batch ,and up to the 3500th batch. 
CudaMemcpy(device,host,sizeof(cufftComplex)*5300*3500,......); 
CufftPlan1d(&device,5300,type,3500); 
CufftExecC2C(......); 
...... 

가 CUFFT 설명서를 참조하십시오 :이 길을 갈 수 인접 배치 사이의 거리를 의미

는 5300입니다.

+1

StackOverflow에 오신 것을 환영합니다. 내가 CUFFT 매뉴얼에서 링크 몇 개를 가져올 수 있다면 좋을 것이다. :) –