Automated Dynamic Analysis of CUDA Programs

by syoyo

M. Boyer, K. Skadron, and W. Weimer.
“Automated Dynamic Analysis of CUDA Programs.”
In Third Workshop on Software Tools for MultiCore Systems (STMCS), Apr. 2008.
http://www.cs.virginia.edu/~mwb7w/

CUDA プログラムに自動でインストゥルメンテーションを仕込み、
レース競合の検出と、メモリアクセスのバンクコンフリクトの検出を行うという手法.

CPU で言えば、Intel thread checker(でスレッド競合検出) と valgrind(でキャッシュミス解析)
を組み合わせたような感じでしょうか.

バンクコンフリクトの検出は、
異なるスレッドからのグローバルメモリ(DRAM)(シェアードメモリでした. でもグローバルメモリもバンク構成になっているはず)への同じバンクへの
アクセスはシーケンシャルになってアクセスのパフォーマンスが落ちるので
なるべく減らしましょうね.
そのために自動でどれだけコンフリクトが発生しているか本手法で分かると
役に立つよ、という感じ.

論文に出てきた、CCured と呼ばれる, ランタイムチェックを自動でインストゥルメンテーション
してくれるツールは知りませんでした.
http://manju.cs.berkeley.edu/ccured/

こちらはレンダラプログラムのロバスト性向上に使えそうです.

Advertisements