- ベストアンサー
CUDAでLU分解
学校でCUDAの研究をしようと思っているのですが、なかなかソースプログラムなどが見つからず勉強方法に困っています。 今回CUDAでLU分解のプログラムを作ろうと思っているのですが、全くわかりません・・・。 方法はright-lookingでやろうと思っているのですが、どなたか助言していただけないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考URLにてright lookingアルゴリズムによるLU分解の並列の解説がなされていますね。 並列化の方法としては、「ブロック・サイクリック分割」がキモのようですね。 分割したあとは、「Fig.14 更新情報の送信」にあるようにプロセス間通信の実装がポイントでしょうか。 あとは、NVIDIAのサイトの行列計算がサンプルプログラムを参考に、 CUDAを活用するというのが方針になるかと考えます。 なお、「人力検索はてな」[http:/q.hatena.ne.jp]で質問をしたら、 プログラミング経験がある方の回答があるかもしれませんね。
その他の回答 (1)
- Interest
- ベストアンサー率31% (207/659)
CUDAが何なのか知らなかったので、ちょっとgoogleってみました。 NVIDAが提供しているGPUを使用した並列処理プログラムの開発環境なのですね。 で、そのNVIDAのサイト http://www.nvidia.com/object/cuda_develop.html にドキュメント類が整っているようですが、これはすでにご存知かと思います。上記URLにあるプログラミングガイドの第6章に行列の積の計算がサンプルプログラムとして載っていますが、これでは物足りなかったでしょうか? もう少し探してみたら、サンプルコードを開設したオンラインチュートリアルもみつかりました。 http://www.gpgpu.org/sc2007/ http://www.gpgpu.org/asplos2008/ 英語だから分からない、なんていうのはナシですよ。こういうのは読みながら慣れるしかないのですから。 > 今回CUDAでLU分解のプログラムを作ろうと思っているのですが、全くわかりません・・・。 普通のC言語でなら、LU分解のプログラムを書けるのですよね?
お礼
回答ありがとうございます。 質問内容がたりなくて申し訳ございません。 NVIDIAのプログラミングガイドなどを見てある程度CUDAというものは理解できたのですが、 LU分解を並列処理するときに、どのように並列プログラムを書けばいいのかわからなくて困っています。 もともとLU分解が逐次処理なので並列にして効率が出るのかどうかもわからないのですが・・・。 とりあえずC言語でLU分解のプログラムは書けます。