GPGPUat TECH
GPGPU - 暇つぶし2ch578:デフォルトの名無しさん
07/04/23 21:22:20
>>573
CPU側をこんな感じにすればGPUの計算量に近くなるかな

void transform(float * rdata, float* g_odata, int width, int height, float theta)
{
 float inv_width = 1.0f / width;
 float inv_height = 1.0f / height;
 float sin_theta = sinf(theta);
 float cos_theta = cosf(theta);

 for (int y = 0; y < height; ++y) {
  for (int x = 0; x < width; ++x) {
   float u = x * inv_width;
   float v = y * inv_height;
   u -= 0.5f;
   v -= 0.5f;
   float tu = u*cos_theta - v*sin_theta + 0.5f;
   float tv = v*cos_theta + u*sin_theta + 0.5f;
   rdata[y*width + x] = getData(g_odata, tu, tv, width, height);
  }
 }
}

逆にCUDAのほうでsin, cosの中身をthetaだけじゃなくビルトイン変数blockIdxとかに依存させたら
各入力に対して毎回三角関数を計算せざるを得なくなるから劇的に遅くなるんじゃないかな


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch