ソフトウェアクレイドルさまのSTREAMを用いたハンズ・オンです。
おそらくそれなりの金額は必要ですので、心してご実施ください!
会社の予算で試されるのが良いかと思います!
- 計算概要: 筐体内のCPU冷却問題
==========================
STREAMをつかって筐体内のCPUの冷却問題を実際に計算してみます。4角の窓のようなものがファンをモデル化した流入口になっており、ここから空気が流入しCPUを冷却を計算します。Rescaleのパラメータスタディー機能を使って、STREAMの計算を複数同時に流してパラメータスタディーを行います。
入力因子と出力因子の決定
入力因子
パラメータスタディーを行う因子, ここでは境界条件であり下記のように定義します。
- VELOCITY: ファンから送り込まれる空気の流入速度 [m/s]
- HEAT: CPUの発熱量 [W]
出力因子
評価すべき特性値であり下記のように定義します。
- SURT_MAX: CPUの温度 [K]
物理的イメージ
一応、物理モデルを解説しておきます。オームの法則(V=RI)に例えると、以下のように考えることができます。
- V: CPU温度 [K]
- I: CPU発熱量 [W]
- R: ファンからの流入速度で変わる可変抵抗 [K/W]
要するに、筐体内の流れによって、この"R"の状態が変わると考えることができるわけです(強制対流熱伝達係数が変わる)。STREAMでは、このような "熱回路網モデル" はもちろん用いませんが、モデルを理解するのに都合が良いのでご紹介しました。
全体の操作の流れ
全体の流れとしては下記です。
- Rescaleへログインし新しいジョブを作成する
- 実験計画法(DOE)を選択
- 入力ファイルのアップロード: runSTREAM.shのアップロード
- 境界条件で使用する32cases分のパラメータセットを定義
- 境界条件の設定用テンプレートの作成とアップロード
- STREAMの選択と実行コマンドの入力, HWの選択とコア数の決定
- CPU温度抽出用のextract.shの作成とアップロード
- 計算の実行
[NOTE]
STREAMでは、.s ファイルが InputFile ですが、この中に、今回、パラメータスタディーすべき境界条件の情報も含まれています。そのため、.s ファイルは、"入力ファイルのアップロード"で行わず、"境界条件の設定用テンプレート" としてファイルをアップロードします。
- ハンズ・オンのスタート
===============================
[STEP0:Login] Rescaleへログインし新しいジョブを作成する
Rescaleにアクセスします。画面右上からログインしてください。
[STEP1:ジョブの作成] Jobの作成し実験計画法(DOE)を選択
1.1 ジョブの作成
- 画面左上、ジョブ作成をクリックします。

1.2 ジョブ名とジョブの種類の決定
- 画面右上の "ジョブの種類" のセレクトメニューから実験計画法を選択します。
- 画面左上からジョブ名を決定します。今回は "STREAM_DEMO" にしました。

[STEP2:入力] 入力ファイルのアップロード
本来この画面で、入力ファイル一式、例えばメッシュファイルなどをアップロードするのですが、STREAMの場合は "テンプレート" でアップロードするファイルにすべての計算モデルの情報が書き込まれていますので、ここではランスクリプトのみアップロードすることにします。
2.1 ランスクリプト: runSTREAM.sh の作成
このリンクから "runSTREAM.sh" をコピペして、ローカルマシンに保存します。
2.2 ランスクリプトのアップロード
-
ファイルをアップロード
から "runSTREAM.sh" をアップロードします。 - 入力ファイル選択に"runSTREAM.sh" があることを確認します。
-
次へ
をクリックします。

[STEP3:並列設定] 境界条件で使用する32cases分のパラメータセットを定義
-
自分で変数を指定する
をクリックします。 -
組み合わせ
をクリックします - CPU発熱量: 変数 "HEAT" を追加します。
- 流入速度: 変数 "VELOCITY" を追加します。
- 保存されている変数の確認します。
-
次へ
をクリックします。
項目 | 変数1 | 変数2 |
---|---|---|
名前 | HEAT | VELOCITY |
最小 | 3.0 | 0.5 |
最大 | 6.0 | 4.0 |
刻み幅 | 1.0 | 0.5 |

[STEP4:テンプレート] テンプレートの作成とアップロード
4.1 テンプレートの作成
テンプレートの保存
このリンクから "template.s" をコピペでローカルマシンに保存します。
流入速度とCPUの発熱量は、このファイルに記述されており、STREAMではこれ自体が入力ファイルとなっています。つまり、入力ファイルそのものがテンプレート化されます。
テンプレート化のポイント(実施済み)
下記のように入力因子を数値ではなく変数名で置き換えます。
?string(0.000E00)
は実際に数値が入った時の書式を明示しています。書式はこちらを参照してください。
source 0 ! 発熱18
${HEAT?string("0.000E00")} 2
fanc 0 ! ファン1
${VELOCITY?string("0.000E00")} -0.00000e+000 -0.00000e+000 2.00000e+001 1
4.2 テンプレートの設定
- "ファイルアップロード" から、"template.s" をアップロードします
- "テンプレート ファイルを選択" に "template.s" があることを確認します
- "ファイル名" にパスを含めて下記を入力します
- '次へ' をクリックします
./inputFile.s

[STEP5:SW/HWの選択] アプリケーションの設定と、クラスタ環境の決定
5.1 SWの選択
- ソフトウェアの選択から、CRADLEのscStream(日本版ではSTREAMのこと)を選択します
- バージョン '12.0.0' を選択します。
- 実行コマンドとして下記を入力します(今回,Webから *.s ファイルをコピペするため、MacとWinで操作が違ってきていることに注意)
iconv -f UTF8 -t SHIFT-JIS inputFile.s > inputFile_SJIS.s
./runSTREAM.sh 8 ./inputFile_SJIS.s
./runSTREAM.sh 8 ./inputFile.s

5.2 HWの選択
-
Nickel
を選択します - もし
低優先度
の、"i"のマークが緑であれば、これを選択します。 -
ノードあたりのコア数
に8,スロット数
を2に設定します。意味合いは、8コアのシステムが2つあるという意味です。ノードと書いてありますが1システムあたりです。 -
次へ
をクリックします。

[STEP6:ポストプロセッシング] CPU温度抽出用のextract.shの作成とアップロード
6.1 extract.sh の作成
このリンクから、"extract.sh" をコピペでローカルに保存します。
正しく計算を終了すると、"process_output.log" ファイルが出力されその後半に下記のような記述があります。SURT MAX
がCPU表面温度の最大値を示しますので、これをこのスクリプトで抽出しています。一応、参考としてSURT MIN
も抜き出しています。
<SECTION Name="MIN. AND MAX.(SURFACE)">
//MIN. AND MAX.(SURFACE)//
VAR. VALUE X Y Z I J K IBK
HTRC MIN 3.99739 0.5980 0.4500 2.5000E-03 140 111 1 0
HTRC MAX 162.336 0.5580 0.4178 1.5000E-02 130 103 4 0
SURT MIN 20.0000 0.000 0.4049 0.2506 1 100 59 0
SURT MAX 53.5282 0.3782 0.1175 1.5000E-02 89 36 4 0
HTFX MIN -949.794 0.3782 0.1138 1.7000E-02 89 35 5 0
HTFX MAX 949.794 0.3782 0.1138 1.7000E-02 89 35 5 0
</SECTION>
6.2 ポストプロセッシングの設定
- 下図のように "ファイルをアップロード" から上記で作成したextract.shをアップロードします。
- ポストプロセッシングコマンドに下記コマンドを入力します。
- 入力後、
次へ
をクリックします。
./extract.sh

[STEP7: 計算の実行]
- 内容を確認し問題がなければ計算を実行します。

[STEP8: 計算状況の確認]
- 計算を実行すると下記画面に、移行します。
- クラスタにsshログインも可能です。予めSSHキーを設定しておけば,下図の赤枠のようにsshでログインする方法が記載されています。

- 計算結果の確認
========================