Re: [問題] 幾個CUDA的問題
修改了一下你的 function
/*這程式用CPU製造 sin波*/
void GenerateDATA( int n, float *data, float freq )
{
float dt = 1.0f / (n-1);
const float pi = 4 * atanf(1.0f);
for(int i = 0; i < n; i++) {
data[i] = sinf(2*pi*freq*i*dt);
}/*for */
} /*GenerateNumbers*/
/* 用 GPU算 DFT的函數 */
__global__ static void DFT( int numThread, int n, float *input,
float *outputRe, float *outputIm )
{
const int tid = threadIdx.x;
const int size = n / numThread;
const float pi = 4 * atanf(1.0f);
int k, j;
float phase = (-1) * (2*pi/n);
for(k = tid * size; k < (tid + 1) * size; k++) {
outputRe[k] = 0.0f;
outputIm[k] = 0.0f;
for(j = 0; j< n; j++){
outputRe[k] += input[j] * cosf(j*k*phase);
outputIm[k] += input[j] * sinf(j*k*phase);
}/*for j*/
}/*for i*/
}/*__global__ static void DFT */
這樣應該就能執行出接近正確的結果了吧
numThread最多只能設256 因為resource的問題
至於精確度...沒辦法 float差不多就只能這樣了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.75.239
※ 編輯: lgen7604 來自: 140.114.75.239 (11/26 19:48)
→
11/26 19:58, , 1F
11/26 19:58, 1F
→
11/26 20:05, , 2F
11/26 20:05, 2F
推
11/26 21:34, , 3F
11/26 21:34, 3F
→
11/26 21:34, , 4F
11/26 21:34, 4F
→
11/26 21:34, , 5F
11/26 21:34, 5F
→
11/26 21:49, , 6F
11/26 21:49, 6F
→
11/26 21:49, , 7F
11/26 21:49, 7F
→
11/26 21:49, , 8F
11/26 21:49, 8F
推
11/27 02:25, , 9F
11/27 02:25, 9F
→
11/27 02:27, , 10F
11/27 02:27, 10F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章