ベクトル計算はなぜ速い
たけおか @takeoka
PCクラスタ・コンソーシアム理事でもある
2011/OCT/22

ベクトルじゃない話
みんな大好きIntel
最新Many Core

Intel Many Core, Knights Ferry

インテル、7年後のエクサスケール時代に向けたデータセンター事業戦略「Cloud 2015」

インテルは31日、都内で「インテル・エンタープライズ・アップデート」を開催した。今回は、インテル コー
ポレーション 副社長兼 データ・センター事業部長のカーク・スカウゲン氏が来日してプレゼンテーションを行った。



今回のプレゼンテーションでは、インテル メニー・インテグレーテッド・コア（以下MIC） のアーキテク
チャー アップデートを中心として、同社のデータ・センター戦略「Cloud 2015」ビジョンとエクサスケール時代に向けた取り組みを紹介。さらに、東京大学の大学院情報理工学系研究科 コンピュータ科学専攻 教授で、情報基盤センター センター長である石川裕氏が「メニイコア搭載クラスタによる高性能計算環境」をテーマに講演した。



http://www.rbbtoday.com/article/2011/08/31/80482.html

東大石川研ExaスケールOS研究on MIC
「メニイコア搭載クラスタによる高性能計算環境」



http://www.rbbtoday.com/article/2011/08/31/80482.html

ベクトル計算

「ベクトル計算が新しい」と2008年末に言いました Intelに入ってる! (2008年から見た「近未来?」) GPU計算が新しい(2008年当時)
 Intel AVX (Advanced Vector Extension)
 SIMD命令を進めて、ベクトル機構をつける
 http://softwareprojects.intel.com/avx/
 AVXは遅れているが、Intelではありがち NEC(半導体部門ではない)と提携
 NECといえばベクトルマシン

GPU=ベクトル・ユニット
 GPU計算
 天河, TSUBAME2.0 などTOP500の1, 3, 4位はGPU+x86
 2, 5位はCrayでx86。コア数がとても多い 「PCマンセー、ベクトル死亡＼(^^)／」という、一般人の皆さんが多数＊＊＊ しかし ＊＊＊ GPUは、まさにベクトル計算機
 ベクトル計算機が、コモディティ技術になっただけ
 Intelも、それに気づいていた AVXを入れようとして遅れ GPU+CPU(Larrabee)も失敗中

2010年のTOP500中のTOP5
名前 (サイト, 開発)

コア数

Rmax

Rpeak

電力(KW)(TFlops)

天河1a(天津)186,368

2,566.00

4,701.00

4,040.00

Jaguar(オークリッジ研究所,Cray)

224,162

1,759.00

2,331.00

6,950.60

Cray XT5-HE Opteron 6-core
2.6 GHz星雲(深圳)

120,640

1,271.00

2,984.30

2,580.00

Dawning TC3600 Blade, Intel
X5650, NVidia Tesla C2050
GPUTSUBAME2.0(東工大)

73,278

1,192.00

2,287.63

1,398.60

HP ProLiant SL390s G7 Xeon
6C X5670, Nvidia GPU,Linux/Windows

Hopper(エネルギー研究科学計算センタ,Cray)

153,408

1,054.00

1,288.63

2,910.00

Cray XE6 12-core 2.1 GHz

NUDT TH MPP, X5670 2.93Ghz
6C, NVIDIA GPU, FT-1000 8C

日本のスパコン 日本は、スパコン大国。ただし、現在は、ビミョー

神戸ペタコン 「京」ちゃん(Sparcだが、中はベクトル計算に特化した機能アリ)

地球シミュレータ(ベクトル計算機×たくさん)

東工大 TSUBAME(x86+GPUたくさん)9ベクトル計算機とは
 昔のスーパコンピュータ
 ベクトルは今でも速い 日本メーカが強くなりすぎて、政治的にアメリカはベクトル・スパコンを買わなくした 技術的に古くなったのではない 過去に一度も古くなっていない (重要) 地球シミュレータは、ベクトル・マシンを4000台並べた、スパコン・クラスタ ベクトル命令を1つフェッチして、データ列(ベクトル)に、同じ演算を繰り返す
 演算器-ベクトル・レジスタ-外部I/F のバランスを正しく設計する キャッシュ・メモリは必ずしも必要ない

Intel AVXの特徴
Intel AVXの特徴
キー
ワイド・ベクトル 128から256bitへ増加

恩恵
最大2倍のFLOPs

強化されたデータの配置- ブロードキャス
ト、マスクロード、データの転置のための新 必要なデータだけを、高速で効果的にアクセ
しい256bitプリミティブ
スし引っ張ってきて、構成

3つか4つのオペランド出鱈目でない文法- より少ないレジスタのコピー、ベクトルでもスカ効果的で将来の拡張性があるように設計 ラでもよりよいレジスタの使用
柔軟な整列していない
メモリのアクセスのサポート
ロードと計算操作の融合をもっと図る
拡張性ある新しいオペコード(VEX)
コードサイズの縮小
Intel AVXは汎用アーキテクチャである、今日のすべてのアプリケーション中のSSEに取って代わる事が期待される

Intel AVX対応コンパイラ模索中 Gccは対応
 Intel Compiler AVXの動作する実機も模索中

ARMもベクトル命令
 VFP (Vector Floating Point) 短ベクトル命令
 実際には、シーケンシャルに処理される
 いわゆるシングル・パイプ
 ベクトル長が短いので、SIMDに比して性能が出ない
 コンパイラもろくにサポートしていない
 単なる1つのFPUとして使用
 Advanced SIMD (NEON) 実SIMD codecで使われ、性能がそれなりに出ているらしい

GPGPU ベクトル計算機
 CUDA OpenCL
 専用プロセッサを汎用として公開するのは、やはりなかなか難しい GPUメーカも計算ユニットとして意識している
 GPUメーカは、高速計算を得意とする会社が多い 座標変換、ソートなどをパイプラインで行う

ベクトル計算機のオープンなドキュメント
 CRAY X-MPなどのマニュアルがフリーに

 CRAY X-MPとは
 CRAY-1を2台接続
 メインメモリ共有

ベクトル計算機のオープンなドキュメント
 CRAY X-MPなどのマニュアルがフリーに
http://www.bitsavers.org/pdf/cray/
HR-0032_CRAY_X-MP_Series_Model_22_24_Mainframe_Ref_Man_Jul84.pdf

 CRAY X-MPについて詳しく述べてある
 非常に勉強になる ベクトル計算機の使用方法が分かる
 ベクトル計算機の作り方もわかる
 日本語翻訳

一人プロジェクト
 CRAY X-MPについて

http://www.takeoka.org/~take/supercom/cray-xmp.html

ベクトル計算機とは

ベクトル計算機とは●●ベクトル命令を1つフェッチして、データ列(ベクトル)に、同じ演算を繰り返す●演算器-ベクトル・レジスタ-外部I/F のバランスを正しく設計する●
キャッシュ・メモリは必ずしも必要ない●
ベクトル・マスクを利用して、条件によっては結果をストアしない●
条件分岐無しで、条件ごとに結果を変えられるパイプラインを間断なく流す

CARY X/MPのベクトル処理部
パイプラインを間断なく流す●ベクトル計算機とは
命令デコーダベクトル演算ユニット

命令
バッファ

ベクトル・レジスタ
64bit×64語×64個(SRAM)

中央
メモリ(DRAM)

メモリI/Oユニット

スカラユニットベクトル処理
SSE, SIMDは、ベクトル処理のダサい親戚●
ベクトル処理は、一次元のパイプライン●
SIMDは、演算器を並列に並べる●
パイプライン化はされている●
これまでのSSEは、足回り(メモリIO)が弱い●
ベクトル計算機は、メモリIO⇔ベクトルレジスタ⇔演算器が、最適なバランスでデザインされている●

パイプライン処理
パイプラインを間断なく流す●

ある命令の処理中に、別フェーズで別な命令を処理する●

パイプラインが止まることを、「ストールする」、「泡(bubble)が入る」と言う●

ベクトル計算機は、特にデータ処理パイプラインが高速である●

命令デコード実行

ストア(実行2)

パイプライン処理
ソースの競合なし。スカッと流れる。
加算器と乗算器は別にあるので、同時に動く。CRAY X/MPの加算は3ステージ
行

命令

説明

1

A1 10

A1を10にする

2

VL A1

ベクトル長レジスタに10を入れる

3

V4 V3+FV2

V3とV4を浮動小数点数加算してV4へセット

4

V6 V5*FV7

V5とV7を浮動小数点数乗算してV6へセット--

パイプライン処理ソースが競合(V3の読み出しで競合。パイプラインが止まる)
行命令

説明

1 A1 10

A1 を 10 にする

2 VL A1

ベクトル長レジスタに10を入れる

3 V4 V3+FV2

V3 と V4 の浮動小数点数を足して V4 へ代入

4 V6 V3*FV7V3 と V7 の浮動小数点数を掛けて V6 へ代入--

ベクトルマスク

あるレジスタ(マスク・レジスタ)に、条件をセットする(1,0で)ベクトル計算の結果ストア時やロード時に、マスク・レジスタを参照し、

0であれば、ストアを実行しない

パイプラインを乱さずに計算を実行できる

条件分岐命令 (if then 式)は、jumpを実行する時、パイプラインが乱れる


命令流が変わるので、命令パイプラインに泡が入る



命令がフェッチ&デコードできなければ、当然、データ・パイプも流れないストライド

メモリ上のデータを、一定の間隔(ストライド)を空けてアクセスベクトル・レジスタへのロード,ストア時に、指定する



例えば CRAY X/MPの

Vi ,A0,Ak 命令

Viの要素0からVL-1までに、A0番地から始まるメモリを読み込む。
アドレスの増分はAk (Akがストライド)

今の、ベクトル計算機やGPUはもっと複雑な修飾や、マスク・レジス
タを参照した修飾が可能

〆にCRAYX-MPシミュレータもある
 XMPSIM CRAY X-MPのパイプラインをシミュレートするソフトウェアがあり。
 命令セットと各命令のパイプラインをシミュレート
 バイナリ供給で、PC/ATのDOS用
 日本語WindowsのDOS窓でも、支障なく使用可能 枠の線などに文字化けが発生するが、使用には、まったく問題なし

http://www.utdallas.edu/~cantrell/ee2310/xmpsim.html

無料ではない教科書
 The Cray X-Mp/Model 24: A Case Study in Pipelined Architecture andVector Processing 出版社: Springer (1989/09)
 ISBN-10: 0387970894
 発売日： 1989/09
 非常にいい教科書 Cray X-MPがどうしてそのように作られているか,がわかる シュプリンガーのレクチャーノートなのに、英語が非常に口語的で泣きそうに。
 これの全和訳もした
 5人程度の有志でベクトル計算バンザイ＼(^^)／
 来るべき新時代に向け勉強しよう マニュアルを読むだけで非常に勉強になる 浮動小数点演算についても詳しく書いてある 4章までアーキテクチャの説明
 5章は命令の個別の説明で、これも興味深いベクトル雑談
 姫野氏
 CRAYで遊んでいた
 ビジュアライゼーション
 A0サイズのプロッタ
 一枚に何コマも作図(作画) 紙をコマ撮りURL CRAY X-MPなどのマニュアルがフリーに
http://www.bitsavers.org/pdf/cray/
HR-0032_CRAY_X-MP_Series_Model_22_24_Mainframe_Ref_Man_Jul84.pdf


http://www.takeoka.org/~take/supercom/cray-xmp.html
CRAY X/MPの命令一覧表の和訳
http://www.takeoka.org/~take/supercom/cray/cray-inst.html