忍者ブログ
CUDA+GPGPU、C++、C#などのプログラムについての備忘録がわり
[14] [15] [16] [17] [18] [19] [20
Posted by - 2024.11.23,Sat
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Posted by サンマヤ - 2008.07.22,Tue
Webページで書きかけのReductionのテスト結果を考察中、
Reductionがうまく動かないときにいろいろいじったことによって
1ブロックあたりのスレッド数を128にしてしまったようです。
これにより、結果に影響が出ているので、
近日中にテストしなおしてUPします。。。
PR
Posted by サンマヤ - 2008.07.18,Fri
共有メモリのテスト結果をホームページに反映させました。
そのほか、いくつかの表現、記述を更新しています。

やっつけで書いたので、記述がいい加減ですが、
ソースコードなどもこちらに載せておきます。

ページはこちら
Posted by サンマヤ - 2008.07.16,Wed
ソースコードおよび、本国NVIDIAのBBSなどを見たところ、
CUT_BANK_CHECKERの使い方が分かりました。

SharedMemory上の配列sdataについて、
sdata[idx]
としている部分を全て
CUT_BANK_CHECKER(sdata, idx)
に置き換えます。
普通にGPU上で動いてる分には何も変化はありません。

これをEmulationモード(nvcc -devieceemu)かつデバッグモードでコンパイルすると、
標準エラー出力にバンク衝突が起きた箇所が出力されます。
これだけでしたw

ただ、チェックが万全というわけではなさそうですので、
今のところ、参考程度ということになりそうです。
情報元は本国BBS
Posted by サンマヤ - 2008.07.16,Wed
あのあと、テストをいろいろしていると、
実行を繰り返すと、かなり数値がばらけることに気づきました。

どうやら16*16ではカーネル呼び出しのオーバーヘッドに左右されて
実行時間をうまく測定できていないようです。

最初に修正したのは、ホスト側のプログラムの要所要所で
CUDA_SAFE_CALL( cudaThreadSynchronize() );
を呼び出すことが必要なようです。

つぎに配列のサイズを16*16*256にしまして、カーネル内部で256回の繰り返しをするように修正。
もう一度実行時間を測定しました。
今度は、ほとんど安定した時間が測定できました。
何度かやった平均ということで、有効数字3桁で表示しますと、
衝突なし:0.0629[ms]
衝突あり:0.249[ms]
ということで、約4倍の差が生じています。
Posted by サンマヤ - 2008.07.16,Wed
とりあえず、16*16の配列を用いて、
バンク衝突があるようにしたコーディングと、ないようにしたコーディングで、
実行時間を比較してみました。
カーネル部分だけを比較しますと、
衝突なし:0.199448[ms]
衝突あり:0.314804[ms]

ということで、大きな差がでることが確認できました。

このテストをつくる中で、SDKに"Bank Conflict Checker"なるものがあることを発見。
これの使用方法について調べてみます。
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新コメント
[11/19 矢野 忠]
[02/25 山本義和]
[07/08 hirota]
[07/06 hirota]
[02/05 矢野 忠]
最新トラックバック
プロフィール
HN:
サンマヤ
性別:
非公開
職業:
プログラマ
趣味:
ゲーム
バーコード
ブログ内検索
カウンター
忍者アナライズ
Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]