私家版 jun_makino さんによる計算とデータとデバイスの考察

改稿したものが、 http://jun-makino.sakura.ne.jp/articles/future_sc/note126.html で公開されているようですので、そちらを参照して頂ければ幸いです。 私家版 jun_makino さんによる計算とデータとデバイスの考察 私家版ということで、ひとまず編集不可で公開。
0
N.Nakasato @dadeba

電子情報通信学会 集積回路研究専門委員会(ICD)主催 情報処理学会 計算機アーキテクチャ研究会(SIGARC)協賛 第7回アクセラレーション技術発表討論会のプログラムが決まったそうです ieice.org/~icd/news/2015… 今年は浜松の光産業創成大学院大学にて。

2015-03-19 08:26:53
Jun Makino @jun_makino

しかし、 MIMD メニーコアって本当に将来があるのかしら?

2015-03-19 14:13:42
Jun Makino @jun_makino

将来というか、まず現在の困難というのは Xeon Phi に表現されている。

2015-03-19 14:13:44
Jun Makino @jun_makino

但し、 KNF とか KNC では、あまりに設計がアレであるという問題が多す ぎて、 MIMD メニーコアの本質的な問題点が見えにくくなっているようにおも う。

2015-03-19 14:13:46
Jun Makino @jun_makino

設計がアレなのは、主記憶のアクセスレイテンシが 250 サイクルくらい ( らしい ) のはまあしょうがないとして、リモートキャッシュも同じくらいある とか、なにがどうなってるかよくわからないけどバリア同期に 10 マイクロ秒以 上かかるとか。

2015-03-19 14:13:48
Jun Makino @jun_makino

10 マイクロって本当に論外で、チップ内並列化の最小単位の実行時間が 100 マイクロ秒くらいないとまともな性能がでない。つまり、 1 億演算くらい必 要。ところが、 L2 キャッシュはチップ全体で 20MB 程度 ( だっけ? )

2015-03-19 14:13:52
Jun Makino @jun_makino

なので、 OpenMP の同期の内側に L2 全体を 100 回なめるくらいの演算量 がいる。

2015-03-19 14:13:54
Jun Makino @jun_makino

こうなると、ループ単位で OpenMP でプラグマいれて、というアプロー チでは駄目で、プログラム全体をまずマルチスレッド化して、どうしても必要 なところだけで同期する、としないといけない。

2015-03-19 14:13:56
Jun Makino @jun_makino

「京」は ( というか Venus とかその前の Jupiter から ) 、ハードウェアバリアの機構がついてるのでこんな阿呆なことはない。これは明らかに優れているところ。

2015-03-19 14:13:58
Jun Makino @jun_makino

「京」はさらに L2 が共有なので、 OpenMP による並列化には非常に具合 がいい。

2015-03-19 14:14:00
Jun Makino @jun_makino

但し、では例えば 64 コアで共有 L2 がもてるかというともちろん無理で、 FX100 (SPARC64 XIfx) では 32 コアを 16 コア毎の 2 ブロックにわけている。

2015-03-19 14:14:02
Jun Makino @jun_makino

でもこれもかなりの力技で、「京」に比べると L2 のサイクルあたりのデー タ供給量が 4 倍 ( コア数 2 倍、 SIMD 幅 2 倍 ) である。つまり、 4 倍の本数の配線が いる。

2015-03-19 14:14:04
Jun Makino @jun_makino

L2 がチップ全体に対して 2 個しかないわけで、必然的に L2 とプロセッ サコアの間の配線はチップサイズ程度の長さになり、これは半導体テクノロジー に無関係になる。そうすると、データ移動に必要なエネルギー消費が 半導体テクノロジーが進歩してもあまり減らない。

2015-03-19 14:14:06
Jun Makino @jun_makino

実際には線を細くし、バッファを増やし、パイプラインステージ数を増やすとかしているはず。そうすると、必要エネルギーはある程度減らせるが、 L2 アクセスレイテンシがどんどん増えることになる。

2015-03-19 14:14:08
Jun Makino @jun_makino

これは何を意味するかというと、 1 つの L2 が供給できるバンド幅 ( サイク ルあたり ) には限界があるということ。「京」の、名目 B/F=2 で FMA32 個、 128B/ サイクルというあたりが配線可能な限界に近いと考えられる。

2015-03-19 14:14:10
Jun Makino @jun_makino

B/F 2 であってたっけ?

2015-03-19 14:14:12
Jun Makino @jun_makino

FX100 は「京」の 4 倍必要で、かなり無理であることがわかる。

2015-03-19 14:14:13
Jun Makino @jun_makino

これを、共有メモリベクトルプロセッサと比べると、 16 プロセッサ 2 パイ プの C90 が B/F=4 なら 16*4*4=256B/ サイクル、 32 プロセッサの SX-7 は 2KB/ サイクルだったかな? SX-7 はすごい。

2015-03-19 14:14:15
Jun Makino @jun_makino

配線可能にするには、多数のコアによる L2 共有を諦めるしかない。 Xeon Phi はその方向で、 60 コアくらいの L2 が論理的にはリングでつながっている。

2015-03-19 14:14:17
Jun Makino @jun_makino

これはまあ、 Stanford DASH を 1 チップにしたようなものである。まあそ れならもうちょっとコア間ネットワーク工夫すればもうちょっと使えたのでは という気もするがそれはそれ。

2015-03-19 14:14:19
Jun Makino @jun_makino

DASH のコンセプトは SGI Origin になってしばらく生き延びたがまあ今は、、、

2015-03-19 14:14:21
Jun Makino @jun_makino

今のところ、そうはいっても 1 チップメニーコアと DASH みたいな DSM はだ いぶ違うが、もうちょっとコア数やメモリバンド幅が増えるとおそらく同じに なる。

2015-03-19 14:14:23
Jun Makino @jun_makino

つまり、オフチップメモリに対する uniform access は無理になって、 コアに物理的に近いか遠いかでレイテンシやバンド幅が変わるであろう。

2015-03-19 14:14:25
Jun Makino @jun_makino

まあ Xeon とかでも複数チップなら今でもそうだ。

2015-03-19 14:14:27