2

より大きな問題の一部として、小さな線形システム (つまり、N ~ 10 の NxN) を解決する必要があるため、関連する cuda ライブラリを使用しても速度の点で意味がありません。

残念ながら、GSL や EIGEN などの大物を引き込まずに、そのようなシステムを解決する方法も不明です。

ストレート C の密行列ソルバー (Ax=B) の方向を教えてくれる人はいますか?

興味のある方のために、コードのこのセクションのジェネレーターの基本構造は次のとおりです。

ndarray=some.generator(N,N)
for v in range N:
    B[v]=_F(v)*constant
    for x in range N:
        A[v,x]=-_F(v)*ndarray[x,v]

残念ながら、私は高等数学の知識がほとんどないので、アドバイスをいただければ幸いです。

更新:私はこれに取り組んできましたが、実行されているが機能していないほぼ解決策があります。潜んでいる人は誰でも、私がこれまでに得たものをpastebinでチェックしてください。

最も一般的なアプローチと思われる Pivoting で Crout Decomposition を使用しています。このテストの考え方は、すべてのスレッドが同じ作業を行うというものです。つまらないことはわかっていますが、matrixcount 変数を増やし、実際のデータを入れ、各スレッドが小さな行列を個別に解くという計画です。

これをチェックしてくださった皆様、ありがとうございます。

回答後の更新: CPU と GPU 操作の行列解法コードを完成させました。こちらの遅延記事をご覧ください。

4

1 に答える 1

0

CUDAはここでは役に立ちません、それは本当です。そのような行列は、それには小さすぎます。

連立一次方程式を解くために行うことは、LU分解です。

または、グラムシュミットプロセスのようにハウスホルダー反射を使用したQR分解の方が優れています。

線形方程式を解くことは後で簡単になりますが、私は常にいくつかの「より高度な数学」(線形代数)が関係しているのではないかと心配しています。それと、線形方程式を解くためのCライブラリがたくさんあります(たくさんあります!)。私には「大きな銃」のようには見えません。

于 2011-04-14T13:56:55.387 に答える