再スケールジョブのコスト最適化

ムリアントブログ
Rescale は、オンデマンド ライセンスでさまざまなソフトウェアを提供します。 このソフトウェアは従量課金制であるため人気があります。 このソフトウェアは、ソフトウェアに簡単にアクセスする方法を提供するだけでなく、多くのソフトウェアはより多くのコアで実行することを推奨するように価格設定されており、その結果、解決までの所要時間が短縮されます。
オンデマンド ソフトウェアの価格設定に関する限り、ほとんどのソフトウェアは次の 4 つの一般的な時間当たり価格設定カテゴリに分類されます。

  • 比例 – 使用するコアの数に比例して料金を支払います
  • 定額料金 – 使用するコアの数に関係なく、XNUMX 時間あたりの定額料金を支払います
  • かぶった – 一定のコア数までは比例料金を支払い、それ以降は定額料金を支払います
  • 割引 – 最初のコアには名目料金を支払い、後続のコアごとに支払う料金が減ります
価格モデルは Rescale UI に表示されます (この場合は上限が設定されています)


多くのコアにスケールアップする場合、比例料金が顧客に利益をもたらさないことは明らかですが、他の XNUMX つの価格モデルはより多くのコアを実行することで顧客に利益をもたらす可能性があります。 実際には、そのメリットは、価格モデルと、ジョブとソフトウェアのスケーラビリティの両方に基づいています。 スケーラビリティは、特定のジョブがより多くのコアでより高速に実行されることを前提としています。
このブログ投稿で私が示したいのは、特定のソフトウェア価格モデルでは、実際の支払い額を抑えながら、より多くのコアでジョブをより高速に実行する機会が提供されるということです。
各部の名称
これは科学論文ではありませんが、価格とスケーリングに関連するいくつかの概念を説明するために、いくつかの方程式を示します。 方程式を理解しやすくするために、ここでいくつかの定義を示します。

hwHardware
I反復回数
kユニットごとの定数
K一定の定数
Nコアまたはプロセスの数
p単価
P価格
swソフトウェア
t反復あたりの時間
T合計時間

課題
エンジニアはモデルを持っており、Rescale でモデルを実行する最もコスト効率の高い方法を知りたいと考えています。 ジョブのコストはハードウェアとソフトウェアの両方のコストの合計であるため、それぞれの価格モデルを考慮する必要があります。 ハードウェアのコストは、Rescale によって比例ベースで請求されます。 ソフトウェアのコストは、ソフトウェア ベンダー (ISV) の価格モデルに応じて決定されます。 時間当たりの合計料金は次のようになります。

P合計 = Phw + Psw

ジョブの総コストは、時間当たりの価格とジョブの期間の積になります。 これは最小化したい値です。

総コスト = (Phw + Psw) * 合計シミュレーション時間

前に説明したように、ジョブの実行にかかる時間と時間あたりの価格は、使用されるコアの数の関数であると言えます。

Phw = f(N) = phw * NS

Psw = f(N)

T = f(N)

この情報を使用して、ジョブ全体のコストの最適化を試みることができます。
ハードウェアの価格
ハードウェアは、Rescale によって比例ベースで課金されます。 時間あたりの価格は、コア時間あたりの料金に基づいており、Rescale で利用可能なさまざまなコア タイプと料金プランによって異なります。 簡単に言うと、時間当たりのハードウェア価格の計算式は、コア時間あたりの料金とコア数の積です。

Phw =phw* NS

ソフトウェアの価格
オンデマンド ソフトウェアの価格は ISV によって設定されます。 前に説明したように、いくつかの異なる価格設定カテゴリがあります。 コア数の関数として時間当たりのソフトウェア価格を求める方程式は非常に簡単です。

比例Psw = k * N
定額料金Psw =K
かぶったPsw = (K, k * N)
割引Psw = K * f(N)
例: Psw = K * N.9

シミュレーション時間とソフトウェアのスケーラビリティ
N 個のプロセス/コアでシミュレーションを実行する時間は、次の方程式で概算できます。

T = Tシリアル (1/N + k1 * (N – 1)k2)

ここでTシリアル シミュレーションをシリアルで実行するのにかかる時間です。 青色の部分は生の計算時間を示し、赤色の部分は通信オーバーヘッドを示します。 その根拠に興味がある方は読み進めてください。 それ以外の場合は次へスキップしてください 「コストを最適化する」.
詳細:
スケーラビリティをモデル化するにはさまざまな方法があります。 アムダールの法則は、追加のリソースをスケーリングすることで恩恵を受けるシミュレーションのさまざまな部分に対するスケーラビリティを表すものとしてよく引用されます。 ただし、追加リソースの利点を定義または定量化する方法については説明しません。 私たちの場合、固定サイズのモデルがあり、ハードウェア コアの数が増加したときにモデルがどのようにパフォーマンスを発揮するかを知りたいと考えています。 そこで、説明のために、いくつかの仮定を立ててみましょう。

  1. シミュレーションは反復的です
  2. シミュレーションは N コア上の N プロセスに分散されます
  3. 各プロセスは次の反復を計算するために他のプロセスからの情報を必要とし、MPI を使用します。
  4. シミュレーションを終了するための反復回数 I は N には依存しません。
  5. 反復を完了するために必要な計算サイクル数は N には依存しません。

これらの仮定を考慮すると、反復が完了するまでにかかる時間は次のようになります。

t繰り返し =トン計算 +t伝える

計算と通信が同期操作である場合。 それ以外の場合、それらを非同期 (ノンブロッキング) 操作とみなすと、

t繰り返し = マックス(t計算、T伝える)

最後に、合計計算時間は反復時間と反復回数から簡単に計算されます。

T = t繰り返し *私∝t繰り返し

ここでは、各反復がほぼ等しいと仮定します。
計算時間
計算時間、仮定 (5) から得られるのは

t計算 =トンシリアル / N

これは、通信オーバーヘッドがない場合、モデルが線形で強力なスケーリングを持つことを示しています。 また、モデルが大きくなるほど (tシリアル)、tが大きいほど計算 また、t の優位性により、通信オーバーヘッドが相対的な解決時間に及ぼす悪影響が少なくなります。計算。 結果は、 より大きなモデルの拡張性が向上.
通信時間
  コミュニケーションをとる時間 はより複雑で、とりわけ、相互接続の速度、通信する必要があるデータの量、およびプロセス数 N に依存します。
単純化して分解してみましょう。
2 つのプロセス間の通信時間は、通信オーバーヘッド (待ち時間) とデータ転送時間 (転送)。 したがって、あるメッセージをプロセスから別のプロセスに送信するには、今のところ単純に次のように定義できます。

tメッセージ =トン待ち時間 +t転送 =トン待ち時間 + (転送速度 * メッセージ サイズ)

転送速度は、メッセージが小さい場合は低くなり、メッセージが大きくなるにつれて増加し、相互接続の帯域幅でピークに達します。 現時点では、特定の相互接続のレイテンシーは一定であると仮定できます。
実際に効果を確認するには、この論文 (https://mvapich.cse.ohio-state.edu/static/media/publications/abstract/liuj-sc03.pdf) さまざまな相互接続での MPI のパフォーマンスを調査します。 この論文が示しているのは、メッセージ サイズが小さい場合、通信時間はほぼ一定であるということです。

tメッセージ ≅ k

この知識を基にすると、次のように推測できます。 通信にかかる合計時間は、各プロセスによって送信されるメッセージの数によって異なります。。 おそらく各プロセスが他のすべてのプロセスと通信するため、順番に送信されるメッセージの数はプロセスの数に依存します。 送信されるメッセージの数をモデル化するために使用できる式は次のとおりです。

メッセージ = k1 * (N – 1)k2 ∝tメッセージ

さらに、k を正規化することができます。1 反復回数、したがって tシリアル

t伝える =トンシリアル *k1 * (N – 1)k2 ∝tメッセージ

それを一緒に入れて
シミュレーションの合計時間は、

T ∝t繰り返し =トン計算 +t伝える

計算と通信が同期 (ブロッキング) 操作である場合。 置き換えると、

T = Tシリアル (1/N + k1 * (N – 1)k2)

定数の取得
定数は、方程式を経験的なベンチマーク データに当てはめることによって取得できます。 ここで紹介する通信オーバーヘッド モデルは、決して最終的なものではありません。 この方程式はほぼすべてのスケーリング数値によく適合することが内部ベンチマークから示されています。
さらに、通常、k2 ≅ 0.5。 また、k1 は、モデルのサイズ、相互接続のタイプ、およびプロセッサのパフォーマンスの関数です。
コストの最適化
総コストの方程式に戻りましょう。

総コスト = (Phw + Psw)* T

総コストは、使用されるソフトウェア価格モデルによって異なります。

総コスト = f(N) = (phw *N+Psw)* Tシリアル (1 / N + k1 * (N – 1)k2)

Excel 計算ツールはここにあります [ ]。 出力例を次に示します。
mp2
私たちが助けることができる方法
Rescale のサポート チームは、シミュレーションを実行する適切なコア数の見積もりをお手伝いします。 すべての単一のユースケースに対してベンチマークを実行することが常に実現可能であるとは限りません。また、上記の例から、数コアオフであっても、節約するコストに大きな影響はありません。
注意していただきたいのは、優れたスケーリング ソフトウェアと 定額 or キャップされた 価格モデル 多くの場合、より多くのコアで実行する方がコスト効率が高くなります。

著者

  • Mulyanto Poort

    HPC の副社長 Mulyanto は、Rescale でアプリケーション エンジニアリングを担当しています。 Rescale に入社する前、Mulyanto は Mid-Michigan Research, LLC でソフトウェア開発および機械エンジニアとして XNUMX 年間勤務し、大手エンジン製造会社および自動車サプライヤー企業に対して専門的な研究コンサルティングを行っていました。 Mulyanto は以前、ミシガン州立大学で研究スペシャリストとしてカスタム データと画像分析ツールの開発に注力していました。 Mulyanto は、ミシガン州立大学で機械工学の学士号と修士号を取得しています。

類似の投稿