モンテカルロ計算を行うために、12 コアの MacPro を入手しました。同社の Intel Xeon プロセッサではハイパースレッディング (HT) が有効になっているため、実際には 24 のプロセスを並行して実行して完全に活用する必要があります。ただし、計算は 24x50% よりも 12x100% で実行する方が効率Processor
的であるため、より高いパフォーマンスを得るために、システム設定のペインでハイパー スレッディングをオフにしようとしました。HT をオフにすることもできます。
hwprefs -v cpu_ht=false
次に、いくつかのテストを実行した結果、次の結果が得られました。
- 残念なことに、12 個の並列タスクが HT の有無にかかわらず同時に実行されます。
- HT がオフの場合、24 の並列タスクは 20% を失います (私たちが考えていた -50% ではありません)。
- HT がオンの場合、24 タスクから 12 タスクに切り替えると、効率が 20% 低下します (これも驚くべきことです)。
- HT がオフの場合、24 から 12 に切り替えても何も変わりません。
ハイパースレッディングは計算のパフォーマンスを低下させるだけのようで、回避する方法はありません。計算に使用するプログラムは、Fortran で記述され、.NET でコンパイルされていgfortran
ます。このハードウェアでより効率的にする方法はありますか?
アップデート:当社のモンテカルロ計算 (MCC) は通常、データの損失を回避するため、およびその他の理由により段階的に実行されます (このような段階を常に回避できるとは限りません)。私たちの場合、各ステップは可変期間の多くのシミュレーションで構成されています。各ステップは多数の並列タスクに分割されるため、期間も可変です。基本的に、すべての高速タスクは、最も低速なタスクが完了するまで待機する必要があります。この事実により、より大きなステップを作成する必要があり、平均化による時間のずれが少なくなり、プロセッサは待機に時間を浪費しなくなります。これが、24*1.33 GHz の代わりに 12*2.66 GHz を使用する動機です。HT をオフにできる場合、HT を使用する 24 タスクから HT を使用しない 12 タスクに切り替えることで、約 +10% のパフォーマンスが得られます。ただし、テストでは、20% を失うことが示されています。
テストでは非常に大きなステップを使用しましたが、通常はステップが短いため、効率がさらに向上します。
もう 1 つの理由があります。一部の計算では 3 ~ 5 GB のメモリが必要になるため、12 個の高速タスクを使用することがいかに経済的であるかがわかります。共有メモリの実装に取り組んでいますが、長期プロジェクトになる予定です。したがって、既存のハードウェア/ソフトウェアをできるだけ高速にする方法を見つける必要があります。