科学的コードのパフォーマンスの基礎となる構造は何ですか?


11

ハードウェアとソフトウェアの構成が異なる2台のコンピューターを検討してください。各プラットフォームでまったく同じシリアルNavier-Stokesコードを実行する場合、コンピューター1と2に対してそれぞれ1回の反復を実行するのにx時間とy時間かかります。この場合、は、コンピューター1とコンピューター2の間の反復時間の差です。Δ=xy

の大きさに影響を与えるものは何ですか?明らかな候補の1つはCPUです。私の主な質問は、CPU間のハードウェアの違いと同じ順序でΔに影響を与える可能性のある他の要因があるかどうかです。ΔΔ


4
もちろん、は単一のサンプルです。Δが問題のサイズと構造にどのように依存するかについても調査する必要があります。次に、コードのプロファイルを作成して、異なる寄与の合計でxyを分割し、hwおよびsw構成に関してコードの異なる部分のパフォーマンスを分析することをお勧めします。ΔΔxy
ステファノM

4
キャッシュラインミス。それが最初に考慮することです。メモリは、多くのアルゴリズムのボトルネック要因です。
鹿ハンター

回答:


13

このリストは完全に近いものではありませんが、可能性のある要因の規模に関するヒントがリストのサイズから得られることを願っています。選択したプラットフォームでソースからコードをコンパイルしていると想定しています。

ソフトウェア

  • 標準ライブラリのパフォーマンス
  • リン。Alg。ライブラリのパフォーマンス(ソフトウェアが外部ライブラリにリンクしている場合)
  • コンパイラの選択
  • コンパイラーの最適化
  • コンパイラフラグ
  • バックグラウンドプロセス(OSが異なる場合、大幅に異なる場合があります)

ハードウェア

CPU

  • クロック速度
  • アーキテクチャ(同じ命令が異なるアーキテクチャで異なるサイクル数をとる場合があります)
  • キャッシュサイズ
  • キャッシュ遅延
  • SIMD(単一命令、複数データ)機能

記憶

  • チャンネル数
  • 速度

HDD

  • 読み取り/書き込み速度(主に結果の書き込みにのみ重要であるため、NSソルバーの出力をファイルに書き込む頻度に依存しますが、画像処理などを行う他のプログラムには重要になる場合があります)

これは、各メーカーがチップを市場で優位に立たせるための小さなトリックや機能をすべて無視しています。ただし、大きな1つは、多くのスパース線形代数ライブラリがメモリバウンドであることです。スパース行列乗算を行うには、多くのデータが実際のフロップなしで動き回る必要があります。


CPUに、コアの数とそのSIMD機能の両方を追加します。
ペドロ

@Pedro質問がシリアルソルバーを言ったので、コアをオフにしましたが、SIMDを追加します。ありがとう。
ゴドリックシーア

1
@GodricSeer 1台のマシンでコンパイルしてから実行しました。次に、同じコンパイル済み実行可能ファイルを使用して、2台目のマシンで実行しました。あなたの説明から、2台目のコンピューターのソースから再コンパイルする方が良いと思われます。そうですか?
密度振動

1
@IsopycnalOscillation特定のマシンで/のためにコンパイルする場合、gcc / gfortranオプション-march=native、または-xHOST基盤となるアーキテクチャに固有の最適化を適用するicc / ifortオプションを使用できます。
ペドロ

1
ここで重要な点は、コンピューターのパフォーマンスは1次元の量ではないということです。同じメーカーのプロセッサーチップ(Intelなど)を搭載したコンピューターであっても、Godricが上記に挙げたすべての要因の相対的なバランスは大きく異なる可能性があります。実際問題として、最新のマシンのほとんどは、科学的なコンピューティングワークロードをサポートするためのメモリ帯域幅が非常に不足しており、これがボトルネックになることがよくあります。
ブライアンボーチャーズ

2

x/yxy

第二に、あなたの質問はソフトウェアの違いを明確に除外します。私の経験では、慎重なチューニングに対するパフォーマンスの報酬は大きな要因になる可能性があるため、ハードウェアの問題を検討しているときは、ソフトウェアの問題を忘れないでください。結局のところ、ハードウェアは指定された命令のみを実行できます。指定された命令が少なければ、より早く終了します。

これを拡張しすぎることはありませんが、特定の問題については、それを解決するプログラムの数え切れないほどの無限があります。これらの中で、一部は他のすべてよりも時間がかかりません。それは下限です。慎重に調整されていないプログラムは、この下限またはそれに近いと仮定しないでください。

このリンクは、私が使用する非正統的な方法を詳細に説明しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.