cuda fft 예제

이 예제에서는 GPU 코더™ 사용 하 여 CUDA® 빠른 푸리에 변환 라이브러리 (cuFFT) 및 엔비디아® GPU에 2 차원 FFT를 계산 하는 방법을 보여 줍니다. 2차원 푸리에 변환은 광학에 사용되어 원거리 회절 패턴을 계산합니다. 이러한 회절 패턴은 단색 광원이 Young의 이중 슬릿 실험과 같이 작은 조리개를 통과할 때 관찰됩니다. cuFFT 라이브러리는 이진 호환성(예: 낮은 아키텍처에 대한 코드가 있는 경우 특정 아키텍처에 대한 코드를 포함하지 않을 수 있습니다. SM37, SM52, SM61). 이는 위의 링크 명령에 반영되며 이전 r9.0 버전을 사용할 때 중요합니다. 특정 SM이 cuFFT 라이브러리에 포함되어 있는지 확인하려면 cuobjdump 유틸리티를 사용할 수 있습니다. 예를 들어 SM_50이 포함되어 있는지 알고 자하는 경우 실행할 명령은 cuobjdump -arch sm_50 libcufft_static.a입니다. 일부 커널은 일부 아키텍처에서만 빌드됩니다(예: 정밀도 산술이 절반인 커널은 SM53 이상에만 존재합니다). 이로 인해 링크 시 이러한 커널에서 아키텍처가 누락되었다는 경고가 발생할 수 있습니다.

이러한 경고는 무시해도 됩니다. coder.checkGpuInstall 함수를 사용하고 이 예제를 실행하는 데 필요한 컴파일러및 라이브러리가 올바르게 설정되어 있는지 확인합니다. cufftXtQueryPlan API를 사용하면 호출자가 문자열 수, 분해 계수 및 (2 크기의 힘의 경우) 유용한 마스크 및 시프트 요소를 포함하는 구조를 검색할 수 있습니다. 아래 예제에서는 cufftXtQueryPlan이 호출되는 방법을 보여 주며 있습니다. 또한 호스트 입력 배열의 인덱스에서 장치의 해당 인덱스로 변환하는 방법도 보여 주며 그 반대의 경우도 마찬가지입니다. 가장 일반적인 경우는 개발자가 기존 CUDA 루틴(예: filename.cu)을 수정하여 cuFFT 루틴을 호출하는 것입니다. 이 경우 포함 파일 cufft.h 또는 cufftXt.h는 filename.cu 파일및 링크 라인에 포함된 라이브러리에 삽입되어야 합니다. 단일 GPU 및 여러 GPU 예제에 대한 cuFFT 코드 예제 보기 섹션으로 단일 컴파일 및 링크 줄이 나타날 수 있습니다. 예를 들어 리눅스에서 동적 라이브러리에 대해 cuFFT를 사용하여 작은 응용 프로그램을 컴파일하려면 다음 명령을 사용할 수 있습니다.