2009年6月アーカイブ
随分久しぶりのブログですが、生存報告を含めて更新
研究室ではGPUの計算精度に関しての研究をすることになりました
GPUってのは単精度浮動小数点演算が主であり、
倍精度性能は僅かしかないのが特徴です
よって単精度から倍精度の実現と高速化、
つまりは性能と速度のトレードオフを探していくことになります
手始めにCUDAプログラミングに慣れるために、blackscholes.cの手動書き換えを行なった
(ブラックショールズは金融に関する確率微分方程式のシミュレートプログラムである)
シミュレートする銘柄数を変化させてCPUとGPUを比較すると以下の結果が得られた
この結果だけ見るとGPUすげー!!ってなるけれど
これだけじゃ終われないんだよね(涙)
CPUもGPUもどのように最適化したか。どのようにチューニングしたか
GPUならデータ転送の影響は?並列化の最適化
メモリにしたってグローバルメモリだけじゃなく他のキャッシュメモリを使用したか
色々と課題が残ってる
それと何よりもCPUとGPUの演算結果が微妙に誤差が生じている
これが一番の問題であり、制度保証を必要とするアプリでは致命的である
今後はGPUの精度について研究していきます!
研究室ではGPUの計算精度に関しての研究をすることになりました
GPUってのは単精度浮動小数点演算が主であり、
倍精度性能は僅かしかないのが特徴です
よって単精度から倍精度の実現と高速化、
つまりは性能と速度のトレードオフを探していくことになります
手始めにCUDAプログラミングに慣れるために、blackscholes.cの手動書き換えを行なった
(ブラックショールズは金融に関する確率微分方程式のシミュレートプログラムである)
シミュレートする銘柄数を変化させてCPUとGPUを比較すると以下の結果が得られた
CPUはC言語@Core 2 Quad Q9300
GPUはCUDA@Geforce 9800GTX
| num | CPU | GPU | CPU/GPU |
|---|---|---|---|
| 1000 | 0.104006 | 0.012000 | 8.7 |
| 10000 | 0.844052 | 0.012001 | 70.3 |
| 100000 | 8.164510 | 0.024001 | 408.2 |
| 1000000 | 81.709107 | 0.120008 | 680.9 |
この結果だけ見るとGPUすげー!!ってなるけれど
これだけじゃ終われないんだよね(涙)
CPUもGPUもどのように最適化したか。どのようにチューニングしたか
GPUならデータ転送の影響は?並列化の最適化
メモリにしたってグローバルメモリだけじゃなく他のキャッシュメモリを使用したか
色々と課題が残ってる
それと何よりもCPUとGPUの演算結果が微妙に誤差が生じている
これが一番の問題であり、制度保証を必要とするアプリでは致命的である
今後はGPUの精度について研究していきます!