Top > 2012-06-02 > 6 (発表6回) NVIDIA GPU のメモリモデルと仲良くなる。 @fjnli Fortran から cuda に落とすツールがある? どれ? CUDA, OpenCL, DirectCompute,GLSL
Motivation CUDAはプログラマが明治的にメモリを操作する必要がある。 約束事が多い。CPU の様に組むと遅くなる。
Geforce と Tesla - 単精度でよく歩留まり気にしなければ Geforce 。安いし速い事が多い。 - ECC 12.5%のloss Global Memory - いわゆる VRAM - ホストから読み書き出来るこはここだけ
volatile でレジスタへの cache はさけられるけど、最適化も消えるので嫌。 シェアドメモリは全スレッドから使える(レジスタはスレッドローカル) スレッド間のデータ交換に使える。(配列の総和を求めるとか) ソフトウェアキャッシュ(勝手に追い出されない、ヒット率100%) Shared めもり
nvcc -ptxas-options=v でレジスタの使用量が分かる。 Occypancy 計算面倒 > Compute Profiler 使いましょう。 低い Occypancy でも十分な性能が出る場合も多い。 Constant Memory
1-----
clock() 取ると、ストールで数10clock 消費されて重たい clock を shift してる。(read => write でストールする) Kepler では解決されてる、 Fermi 時代はホットクロックで、CUDA Core は周りの2倍で動いてた。 ので、シフトしてたのでは。 Kepler ではやめたので。このシフトが無い。 性能測定時のノイズが減るかも。(Kepler あまり使ってないので、要出典) |