FFTW를 사용하여 생성 된 전체 프로젝트가 있습니다. cuFFT 사용으로 전환하고 싶습니다. cuFFT에는 "호환 모드"가 있음을 이해합니다. 하지만 이것이 정확히 어떻게 작동합니까? The cuFFT manual는 말한다 :cuFFT에서 FFTW 호환 모드 사용
응용 프로그램이 FFTW3 인터페이스를 사용하여 작업을 한 후, 사용자가 에와 GPU에서 데이터를 이동하고 최선의 FFTW 변환 가이드에 설명 된 루틴을 사용하여 자신의 코드를 수정할 수 있습니다 공연.
이 실제로 내 개별 함수 호출을 변경해야 의미 하는가? 예를 들어, fftw_plan_dft_1d()
대신 cufftPlan1d()
으로 전화하십시오.
또한 데이터 유형을 변경해야합니까?
내 모든 코드를 다시 작성해야하는거야 경우fftw_complex *inputData; // fftw data storage gets replaced..
cufft_complex *inputData; // ... by cufft data storage?
fftw_plan forwardFFT; // fftw plan gets replaced...
cufftHandle forwardFFT; // ... by cufft plan?
, cufftSetCompatabilityMode(.)
의 요점은 무엇입니까?
그래서'cuFFT '를 사용하는 경우에만'cufftSetCompatabilityMode()'가 관련이 있습니까? 그 방법의 첫 번째 매개 변수는 cuFFT 핸들입니다. 아마도 FFTW를 사용하고 있을지 모르겠습니다. 둘을 "혼합"할 수 있습니까? 예를 들어 "실행"을 제외한 모든 인터페이스를 사용하고 "실행"에 대해 기본 cuFFT를 사용합니까? 또한 인터페이스 만 사용하는 경우 함수 반환 값 (예 : CUFFT_SUCCESS)을 가져 오는 방법이 있습니까? – tir38
예, cuFFTW 인터페이스를 엄격하게 사용하는 경우'cufftSetCompatibilityMode()'는 관련이 없습니다. 예, 2 개의 API를 혼합 할 수 있습니다. 실제로 FFTW 인터페이스로 실행하지 않으면 데이터 복사 프로세스에 영향을주지 않기 때문에 "실행"을 제외한 모든 작업에 FFTW 인터페이스를 사용할 수 없습니다. cuFFT "execute"는 데이터가 이미 복사되었다고 가정합니다. cuFFTW 인터페이스를 사용하여 함수 반환 값을 얻는 방법을 모르겠습니다. 그러나 지원되는 fftw 함수의 경우 모든 종류의 상태 매개 변수도 지원해야합니다. –