システムコンフィグファイルの仕様
表記に関する注意
以下の仕様では,数字の表記として$X,
$Y ('0', '1', ... '9', ':' , ... または
"0", "1", ..., "9", "10", ...)を,
アプリケーションの表記として$A
('a', 'b', 'c', …, 'z')を,
SmartCoreにおけるマスター・スレーブノードの分類の表記として
$B ('m', 's', ' 'のいずれか)
を用いるものとします.
標準形式と拡張形式
システムコンフィグファイルは,
標準形式と拡張形式との2種類の記述方法をサポートします.
これらは数字の表記方法が異なります.
拡張形式の方がより人間にとって理解しやすい記述となります.
- 標準形式は数字の表記にASCIIコード-'0'したものを使います.
例) '0'は 0 を,':'は 10 を,'@'は 16 を表します.
- 拡張形式は数字の表記に10進数をそのまま使います.
- 拡張形式を利用する場合,他のコマンド行の前に
「SIMMC_EXTENDED_MAPPING_FILE」と書かれた1行を記載する必要があります.
- 縦横のサイズが10未満の場合,どちらの形式を用いても結果的な記述は同じです.
コメント
これから記載するコマンド行のいずれにも該当しない行,
あるいはコマンド行の解釈される部分よりも後の部分はコメントとして扱われます.
プロセッサの物理サイズ
「$Xx$Y P」
で始まる行はプロセッサの物理ノード数を表します.
$Xは縦方向のノード数(--x-rankに相当)を表し,
$Yは横方向のノード数(--y-rankに相当)を表します.
--x-rank, --y-rankオプションを用いる場合と異なり,
これらのノード数はメモリノード等のために追加されるノード数を含めた数とする必要があります.
8x8 P : (1, 1)〜(8, 8)の64物理ノードが定義される.
アプリケーションの論理サイズ
「$Xx$Y $A」
で始まる行はアプリケーションの論理ノード数を表します.
複数のアプリケーションを指定する場合,
コマンドライン引数にそれと同じ数のファイルを記述する必要があります.
不一致がある場合はエラーとなり,シミュレーションが行われません.
コマンドライン引数で最初に指定したファイルに'a',2番目のファイルに'b',...
というように,ファイル内で使用するアプリケーション名がつけられます.
コマンドライン引数: -m hoge.txt foo bar baz
hoge.txtの表記の一部:
4x8 a : foo は(1, 1)〜(4, 8)の32論理ノードで実行される.
4x4 b : bar は(1, 1)〜(4, 4)の16論理ノードで実行される.
4x4 c : baz は(1, 1)〜(4, 4)の16論理ノードで実行される.
マッピング指定
'['で始まる行はマッピング指定行を表します.
マッピング指定行は,
「[$A$X,$Y$B]」
または「[-----]」の任意の個数の組み合わせで表します.
行は,最初のマッピング指定行が最上段,2つ目のマッピング指定行が上から2段目,…
というように対応し,
列は,行内の最初の[]内が最も左の列,次の[]内が左から2段目,…
というように対応します.
論理ノードに割り当てない物理ノードは,「[-----]」を指定します.
特別なノード(メモリ・バリアサーバ・ロックサーバ)は,
それぞれ論理ノード(0, 0), (1, Y+1), (2, Y+1) として定義されます.
これらの番号を指定することで特別なノードを利用可能となります.
ただし,Yはそのアプリケーションの縦方向の論理ノード数とします.
物理ノード数を超えたマッピング指定は無視されます.
また,物理ノードにマップされていない論理ノードが存在する場合はエラーとなります.
例1) 8x8物理ノードに対して,4x8論理ノードのアプリaを左に,
4x4論理ノードのアプリb, cを右上,右下にそれぞれ配置する場合
8x8 P : There are 8x8 = 64 physical nodes
4x8 a : foo has 4x8 = 32 logical nodes
4x4 b : bar has 4x4 = 16 logical nodes
4x4 c : baz has 4x4 = 16 logical nodes
[a1,1 ] [a2,1 ] [a3,1 ] [a4,1 ] [b1,1 ] [b2,1 ] [b3,1 ] [b4,1 ]
[a1,2 ] [a2,2 ] [a3,2 ] [a4,2 ] [b1,2 ] [b2,2 ] [b3,2 ] [b4,2 ]
[a1,3 ] [a2,3 ] [a3,3 ] [a4,3 ] [b1,3 ] [b2,3 ] [b3,3 ] [b4,3 ]
[a1,4 ] [a2,4 ] [a3,4 ] [a4,4 ] [b1,4 ] [b2,4 ] [b3,4 ] [b4,4 ]
[a1,5 ] [a2,5 ] [a3,5 ] [a4,5 ] [c1,1 ] [c2,1 ] [c3,1 ] [c4,1 ]
[a1,6 ] [a2,6 ] [a3,6 ] [a4,6 ] [c1,2 ] [c2,2 ] [c3,2 ] [c4,2 ]
[a1,7 ] [a2,7 ] [a3,7 ] [a4,7 ] [c1,3 ] [c2,3 ] [c3,3 ] [c4,3 ]
[a1,8 ] [a2,8 ] [a3,8 ] [a4,8 ] [c1,4 ] [c2,4 ] [c3,4 ] [c4,4 ]
例2) 5x4物理ノードに対して,4x4論理ノードのアプリaを配置し,それに対する
メモリ・バリアサーバ・ロックサーバの各ノードを右列へと配置する場合
5x4 P : There are 5x4 = 20 physical nodes
4x4 a : foo has 4x4 = 16 logical nodes
[ 1,1 ] [ 2,1 ] [ 3,1 ] [ 4,1 ] [ 0,0 ]
[ 1,2 ] [ 2,2 ] [ 3,2 ] [ 4,2 ] [ 1,5 ]
[ 1,3 ] [ 2,3 ] [ 3,3 ] [ 4,3 ] [ 2,5 ]
[ 1,4 ] [ 2,4 ] [ 3,4 ] [ 4,4 ] [-----]