2

コレスキー分解を使用して大規模な線形方程式系を繰り返し解くプログラムがあります。特徴は、約 20 GB のメモリを超える完全な因数分解を保存する必要がある場合があることです。因数分解は、私が呼び出すライブラリ内で行われます。さらに、この行列とその結果の因数分解は非常に頻繁に変化するため、メモリ要件も同様に変化します。

この計算ノードを使用するのは私だけではありません。したがって、Linux でプログラムを起動し、プロセスに空きメモリを事前に割り当てる方法はありますか?

何かのようなもの:$: prealloc -m 25G ./program

4

2 に答える 2

0

そのような方法は聞いたことがありません。通常、1 つのプログラムが先に進み、使用可能なすべてのメモリを占有すると、ノード上の他のユーザーにとっては良くありません。それは良い習慣ではありません。

しかし、意見はさておき、問題のルーチンを終了せずに複数回実行できる小さな環境のように振る舞うような方法でプログラムを書くことになるでしょう。起動時に大量のメモリを割り当て、(最小限のシェルを介して) ユーザー コマンドを待機し、割り当てられたメモリ プールで要求された実行を行います。ユーザーが終了を要求するまでプールを保持します。

もちろん、これにはノードでインタラクティブなセッションが必要ですが、そうでない場合もあります。

于 2010-07-07T12:43:07.313 に答える
0

Linux ではそのような方法はないと思います。Linux (および私が使用したり聞いたりした他のすべてのマルチタスキング o/s) の哲学は、プログラマー (およびプログラム) に、コンピューターのメモリ全体を操作できるという錯覚を与えることだと思います。そして、プログラマーがo / sに干渉することを実際に非常に困難にします。

代わりに、プログラムを変更して、起動時に必要な (または必要な可能性がある) メモリを取得するように計画する必要があると思います。つまり、選択した言語が何であれ、自分でメモリ管理を行う必要があります。ライブラリへの呼び出しを考えると、これがどれほど簡単かはわかりません。

于 2010-05-05T12:42:37.460 に答える