-1

私は現在、多くの小さな 6x6 マトリックスに取り組んでいます:形状 A = (N, N, N, 6, 6) with Nは約500です。これらの行列を Pytables ( http://www.pytables.org ) の HDF5 ファイルに保存します。

これらの行列に対して、反転、転置、乗算などの計算を行いたいと考えています。たとえば、 numpy.linalg.inv(A)はループなしでトリックを実行する必要があります。Nはそれほど大きくありません。しかし、私の場合、動作が非常に遅く、メモリの問題が発生することがあります。

これをより効率的に行うためのアプローチを提案してもらえますか?

4

1 に答える 1

0

6x6 行列には、36 個の 8 バイト double 値、または 288 バイトがあります。計算とオーバーヘッドを容易にするために、0.5KB とします。それを受け入れると、そのうちの 500 個は 250KB に過ぎず、メモリはあまり多くありません。

これらすべての逆数をメモリに保持しても、まだ多くはありません - わずか 500KB です。

これを確認するために、プログラムが消費している RAM の量を計算できますか?

あなたは何をしていますか - 有限要素解析? これらの剛性、質量、および減衰マトリックスは 500 要素ですか?

はいの場合、要素行列を逆にするべきではありません。それらをグローバル行列に組み立てる必要がありますが、これはより多くのメモリを消費し、それを解決します。逆数はまだ計算されていません - その場で LU 分解を行うのが通常の方法です。

500 要素のメッシュを大きな問題とは考えていません。1995 年にそのような仕事をやめたとき、私は何千、何万もの要素を持つメッシュを見ました。今日、ハードウェアはさらに大きな問題を可能にしていると確信しています。

他に間違ったことをしている、または提供していない詳細があります。

于 2014-03-02T15:32:58.720 に答える