Qsの日記: GPUスパコン 4
日記 by
Qs
GPUを用いたスパコンのニュースがあった。
/.Jでこの手の話題をすると必ず出てくる「倍精度じゃなきゃ無意味」というコメントを書く輩に感想を聞いてみたいところだ。イヤミなしなスタンスで、ね。
限られた予算でできる限り高演算能力を、といったときに単精度は許容できる可能性が高いのだろうか。もちろん倍精度でなければいけない場面ってのは存在し続けるだろうけど、演算の工夫でしのげるのだろう。
考えてみると、安易に倍精度なら十分と思い込むのは危険なはず。だって、やっぱり離散的な値しかとりえないわけで。それを演算の工夫で使い倒しているわけである。それを単精度まで適用することだってできる。問題は単精度がそれに応えきれるかどうか。
このニュースはそれに対する解の1つかな。
話は変わるけど、CUDAのプログラミングはデバッグが大変だった。インストラクションレベルでも構わないからシミュレータはないのだろうか。
精度問題の一般論は難しいのですが… (スコア:1)
演算精度の問題は、たとえば伊藤智義『スーパーコンピューターを20万円で創る』(集英社新書)で、著者の伊藤先生が書かれているように、扱う数値があらかた判っていれば、問題依存ですけど単精度でも相当イケると思います。特に汎用マイクロプロセッサ上で計算させる場合、単精度(32bit)か倍精度(64bit)かでキャッシュ効率が大きく違い、単精度の方が相当速くなる場合もあります。憶測ですがGPUでも、PCIeのバンド幅が効くようなケースでは同様かと。
ただ現実問題として、ある程度汎用的な(?)アプリの場合、どんな数値が入ってくるか分からない部分は、「とりあえず倍精度で」と、正直言って逃げざるを得ないところはあります。すでにご承知かもしれませんけど、近年は「精度保証付き数値計算」というアプローチがあります。Webページだと、このあたり [waseda.ac.jp] でしょうか。最近、題名につられてネット書店で、若山正人編、田端正久・中尾充宏著『偏微分方程式から数値シミュレーションへ/計算の信頼性評価』(講談社)という本を買ったら、かなり数学的な内容で、個人的には敷居が高いです(笑)。
CUDAは使ったことがないので全く分かりませんが、演算中にハード上でゼロ割りやオーバーフローが発生した際、ソースコードのどの箇所のどの変数が問題だったかが、すぐ判る環境だとアリガタイですね。ゼイタクを言えば、高品質の数値計算ライブラリもサポートされていると助かります。
Re:精度問題の一般論は難しいのですが… (スコア:1)
単精度メインのGPUが計算屋に受け入れられたのが妙に感慨深いだけです。
Re: (スコア:0)
単精度で問題がないかどうかは熟考する必要があります。
最終的に倍精度が必要な問題でも途中計算を単精度にすることができることもあって
(最終的な結果の精度に影響を及ぼさない)
途中は単精度で計算して高速に計算するという研究が国際学会レベルで
見られます。
精度あれこれ (スコア:0)
>浮動小数点演算もサポートした。グラフィックス処理では単精度(32-bit)までの
>浮動小数点演算しか必要とされないため、伝統的なGPUは倍精度をサポートして来なかった。
>GT200は、倍精度FPUを合計30個搭載することで、倍精度の必要から、
>これまでGPUがカバーできていなかったアプリケーションにも対応できるようになった。
>「倍精度は、GPUコンピューティングの顧客からの要請されていた重要リクエストの最後の1つ。
>これで、ようやくチェックマークが揃った」とあるNVIDIA関係者は言う。
http://pc.watch.impress.co.jp/docs/2008/0617/kaigai446.htm [impress.co.jp]
必要があればメーカーは対応するだけのこと。