最終更新:
mikk_ni3_92 2008年12月11日(木) 15:40:28履歴
現在地 >> メニュー >> CUDA >> CUDA::基本編07 >> CUDA::基本編07まとめコード1
#include <iostream>
#include <cutil.h>
#include <cufft.h>
//---------- 各種外部変数 ------------//
const int ElementNum = 8;
//------------ メイン関数 --------------//
int main(int argc, char **argv)
{
CUT_DEVICE_INIT(argc,argv); //初期化
cufftComplex *HostData, *DeviceData; //データ
//メモリ確保
HostData = new cufftComplex[ElementNum];
//データ設定
for(int loop = 0; loop < ElementNum; ++loop){
if (loop >1 && loop < 6) {
HostData[loop].x = 1;
HostData[loop].y = 0;
}else{
HostData[loop].x = 0;
HostData[loop].y = 0;
}
}
//デバイス側のメモリ確保
int nbyte = sizeof(cufftComplex)*ElementNum;
cudaMalloc( reinterpret_cast<void**>( &DeviceData), nbyte);
//デバイスへメモリコピー
cudaMemcpy(DeviceData, HostData, nbyte,cudaMemcpyHostToDevice);
//プラン作成
cufftHandle plan;//cufft用プラン
cufftPlan1d(&plan, 8, CUFFT_C2C,2 ); //1次元離散フーリエ返還
//離散フーリエ
cufftExecC2C(plan, DeviceData, DeviceData, CUFFT_FORWARD);
cudaMemcpy(HostData, DeviceData, nbyte,cudaMemcpyDeviceToHost);
//出力結果を表示
for(int loop = 0; loop < ElementNum; ++loop){
std::cout << HostData[loop].x << ", " << HostData[loop].y << "\n";
}
cufftDestroy(plan); //プランの破棄
cudaFree(DeviceData); //メモリ解放
delete [] HostData;
CUT_EXIT(argc, argv);//終了
return EXIT_SUCCESS;
}

