私はHigh Performance Computing
このフォーラムに初めて参加し、長い間読者であったこのフォーラムでの最初の質問です。
基本的に、たとえば非常に大きな配列で算術演算を行う必要があります
double variable [9][4][300][300][300] (uninitialized)
ケース 1:上記の配列を then として宣言すると、 " " のようlocal/automatic
に最適化せずにコンパイルした場合、実行時エラーが発生します (エラーはセグメンテーション違反です -- スタック オーバーフロー???)g++ file.cpp
ケース 2:上記と同じケースで、最適化を使用してコンパイルした場合、コードは期待どおりに実行されます。"g++ -O2 file.cp
p」(今はarray
入ってbss
いますか???)
ケース 3:変数を作成すると、正常にglobal/static
コンパイルされますが、実行されずkilled
、端末にメッセージ " " が表示されて終了します。
実際の問題はありませんが、非常に大きな配列が宣言されたときに何が起こるか、データ型に応じてメモリ内のどこに存在するかを知りたいと思っています。
また、malloc または new を使用して実行時にこれらの配列を生成する方法についても認識しています。もちろん、それはヒープ上にあります。
したがって、私にとって最も重要な質問は、 --> でコンパイルしg++
て実行するときに大きな配列を処理する最も効率的な方法 (つまり、メモリ内の配列の計算中の最小の実行時間) ですlinux clusters
。
お読みいただきありがとうございます。