(発表5回) SASS について

SASS とは何か?
PTX nvccが出すアセンブリ。
その更に後ろにあるほぼ、ネイティブアセンブリ。

Full CUDA compilation st....

この decuda を活用して書かれた "Micro-benchmarking the GT200" は全CUDAプログラマが読むべきものであると思う。

nvcc
-arch

cubin は 1つの機械語しか入れられないが
fatbin を使うと1つのファイルに複数の機械語 + ptxを入れられる。

CUDA ランタイムは動きそうなマシンの機械語+PTXを入れて、駄目な場合でもPTXから変換して動作する。-arch=compute_XXX
-arch sm_10 で特に問題ない。実行時にうまくやってくれる。
---------
cuobjdump のマニュアル。

------
活用事例。(こんなん役に立つの?と思われる方に)

* 命令毎のスループットを取りたい。ptxas が勝手に命令消しやがる。 [#c3e6ab9f]

sass で見ると消えてるのが見える。cuobjdump 必須。

add_u64 'GT200 には64bit加算がある)
NVGPU は対応してないので32bit 加算にかえてしまう。
(そもそも GT200 は32bitアドレスなので上位は無駄な事が多い。ポインタでは)
sm_20 (Fermi)以降は、64bit なので、この辺の苦労はなくなる。
------

Tesla2050(Fermi世代)。
reduction の時にメモリバリアをちゃんと書いてないとき。
_threadfence_block()
コンパイラの最適化を抑制する以上の効果が?
命令見ると MEMBER なんてある。SM20 ではメモリバリアが必要なのでは?

---
レジスタ数。
ptxas の maxreg で調整出来るけど、むしろ遅くなる事がある。
仮想レジスタなので実際にどうか分からない。
SASS は物理レジスタで見れるので溢れたかどうか分かる。
-----
まとめ。

PTXより情報量あるので。SAAS 読むべき。

---
inline asm で弄っても PTX なので駄目。
ASFermi という非公式ツールを使えばいける。
後はバイナリを直接弄る位?

Reload   Diff   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes