2

私は以下を計算しようとしています:

Y = Y0-(Un。(A * Y0)+ Vn。(Y0 * Z))* dt

Y0、Un、Vn、A、およびZが300 X 300 "のオーダーの次元の行列である場合、可能な限り最速/最も効率的な方法で。は行列の内積であり、「*」は行列の乗算を表します。

私の質問は次のとおりです。

  1. 計算上独立した部分行列A2=A*Y0およびZ2=Y0 * Zを計算し、次にUn2 =Un。*A2およびVn2=Vn。*Z2を、Y = Y0-(Y = Y0-( Un2 + Vn2)* dt?もしそうなら、この並列計算がどのように行われるかについての良い例は何ですか?

  2. 他に、より良い/推奨されるアプローチ(ATLASの使用など)はありますか?

言語はC++であり、これはマルチコア(少なくともデュアル)プロセッサを搭載したLinuxまたはWindowsプラットフォームで実行されます。現在、BLASパッケージとしてBOOSTuBLASを使用しています。

4

4 に答える 4

1

OpenMPは、並列ルートの方が高速かどうかを確認するための迅速かつ簡単な方法です。

于 2011-03-24T20:06:31.843 に答える
0

あなたの問題は非常に小さいです。Eigen(またはATLASについて言及したように)のようなものを使用してみてください。使用するのが速いので、私はEigenを好みます。

于 2011-03-24T20:16:49.050 に答える