並列処理 歩
神戸大学計算科学教育 ン
柳義夫
2016/6/1 1
内容
• ン うや 10
14速く
?
• キ 見 並列処理
– 並列処理 制御 Flynn ?
– 制御
• 並列処理技術 起源
– 多く 1960 年
• 見 並列処理 い 雑感
ン 前史
• 歯車式手回し計算機 加減算
• ニ 桁 し機構 乗算 除算
天文学者 複雑 計算 費や
時間 忍耐 救う
計算 人間 手 煩わ 値し い労働
• 解析機関 自動式計算機
読 取 歯車
計算 実現
• Richardson 夢 (1922)
2016/6/1 3
高性能化技術
ン うや 10
14速く ?
• 演算要素 高速化技術
• 高速化技術
• 並列化技術
• 相互接続 ワ 高速化技術
• ソ 技術
2016/6/1
演算要素 高速化技術
(1) 動作周波数 高速化
空管 ン IC LSI V SI
線幅 10 nm へ 歩留 子限界
限界 波長 遠紫外域
消費電力
最近 動向 上 いほう い
未来 新 料 化合物半 体 超伝 子 ン
約 10
7周波数 高速化 残 並列処理
5
演算要素 高速化技術
(2) 多数 演算器 搭載 時実行
演算器 少し 資源 作
問題 うや 制御 ? →
(3) 処理 び多 処理
演算 ン 演算 数
毎 演算開始
2016/6/1
(4) 並列化
ン ン キ 整合性
保 制御 複数
並列 行
処理 広義 並列化
7
(4) 並列化
a) 複数 行
CDC6600 (1964) 来 技術 RISC i960 (1988) x86 Pentium (2実行) やP6 (3実行
実効 数 増や
2016/6/1
(4) 並列化
b) ン ン
併用
IBM 7030 (Stretch, 1961) 来 MF Microprocessor 採用
9
(4) 並列化
c) VLIW (very long instruction word): 多
く 成 複数 処理
起動
違い
ン 並列実行 指定
Josh Fisher (Yale) 提案 1980 Multiflow社創立(1984) 富 治 京大 QA-2 (1983)
Transmeta CrusoeやIntel P6 (Pentium Pro, Pentium II) 内部 キ Itanium キ
2016/6/1
(4) 並列化
d) ン ン 個
上 時 複数 処理
あ 複数 う 見え
Denelcore HEP (1982), Tera MTA (1997), MTA-2 (2001) NetBurst (Pentium 4 ) 採用(2000)
e) SIMD 方式 複数 対し 一 演算
並列 実行
本来SIMD ILLIAC IV う 単独 並列化技術 あ 要素技術
Pentium II MMX (1996) 整数
AMD K6-2 3D Now! (1998)やPentium III SSE (1999)
11
( ) 実行機能
意味的 変わ い範囲 実行順序
変更し 待 時間 減
Out-of-order buffer 貯 依存関係 解析
• CDC6600 (1964) scoreboarding
• IBM S/360 M91 (1967) register renaming Tomasulo
• IBM POWER1 1990
• Intel P6 (Pentium Pro) 1995
2016/6/1
(6) 分岐予測
条件分岐 行 過去 履歴 予測し
投機的 実行
予想し 分岐 演算 入 直前 実
行 外 や 直
IBM 7030 (Stretch, 1961), 後3090 (1985) し Microprocessor 多く使わ い
A=B+C/D A=B-3*C
13
並列処理
• 時 時間的 複し 複数 処
理 行う 時分割 並行処理 違う
– 当然
– 演算器 並列計算 いう
• Babbage Analytical Engine 複数 演算器 計画
• ENIAC 加減算器 乗算器 設置さ 並列 動
内蔵式 改造し し 動 く
– Von Neumann 演算器 高価 並列
処理 非現実的
– (multics)
並列処理 制御
• SIMD 全体 Program Counter 1, Decoder 1
– ン 一 例 APE 当然 DM
– 通常 ン 変 register )
• MIMD 毎 Program Counter 各 1
– 共 排他的制御 キ ン
期
• Thread programming ?い ?
• 元々 process ?
– 分散 通信 期
• 期 通信 一種
2016/6/1 22
並列処理
• Flynn 分類 い 概念
– 存在形態 集中 分散
– 共 私 私 通信 必要
• 表的
– 集中 共 いわゆ Symmetric MP
– 分散 私 いわゆ multicomputer
– 分散 共 ccNuma SIMD 能?
– 集中 私 あ ? Master-worker?
共 制御
• PRAM 理論 実現困
• 期 排他制御
– SIMD 心配 し
– Atomic instructions (compare and swap, fetch and
add)
• キ ン
– 1983 Goodman : Bus snooping cache 論文
– Xbar and directory-base
– ン 無し C.mmp , T D/T E, …
– ccNUMA: DASH, KSR, Exe plar, Origi , ….
2016/6/1 24
分散 通信
• 部分的共
– 実 空間 一部 共 割 付
– PAX-32, 128, 32J 隣接共 ン 計算用
– APE: 隣接 直接書 込 SIMD!!)
– 通信用 さ 共 Linda や VPP/F
• OS 経
– ン固 NX/2, NX (Intel), Vertex (nCUBE), CMMD
(CM-5), EUI (SP)
– 共通 Express (Parasoft), p4 (ANL), PARMACS (ANL),
Zipcode (LLNL), Chimp (Edinburgh), Chameleon (ANL),
PICL(ORNL), Linda (Yale), PVM, MPI
• (put/get
分散 型並列計算機
P
$
M
P
$
M
P
$
M
P
$
M
Interconnection Network 場合 $(cache) わ
2016/6/1 26
対称型
P
$
P
$
P
$
P
$
Crossbar switch/bus
M M M M
分散共
P
$
P
$
P
$
P
$
Crossbar switch
2016/6/1 28
並列処理
• 並列処理 自然
– Babbage ン 複数 演算器
– Turing machine い
– ENIAC 複数 演算器
• 逐 処理
– Von Neumann 演算器 個
• 空管 余 高速 あ 当時
• 当時演算器 多く 資源 必要 し
2016/6/1
並列化技術
• 並列処理
– 並列化 (3) 議論
– 並列計算機 SMP, DSM, MPP
• Flynn 分類 話題
現在 SIMD
30
相互接続 ワ 高速化
• 昔 議論さ hypercube,
torus, mesh, banyan tree, ….
• 現在 esh/torus, fat tree, …
• ン ン 幅 距 依存性
ソ 馬鹿
い
• FIFO 性 集合通信 ….
• Scalability: one-to-one 通信 限界?
• Ether, QsNet, Myrinet, Infiniband, ….
年
• 科学技術用 ン 場
– CDC6600 IBM360/91 ILLIAC IV 契約 1964
• 基本概念 確立
– IBM Main Frame (1964)
– Multics 開始 (1964, MIT, 完成 1969)
– Moore 法則 (1965)
– Vector 処理 提唱 (1965, Senzig and Smith, IBM)
– Flynn 分類 (1966)
– Amdahl 法則 (1967, IBM)
– Tomasulo 1969, IBM
2016/6/1 32
並列処理 歩 (1960 年
SIMD: 1958年 Unger SIMD 提唱
SIMD: 1962年 Solomon 中止
?: 1962年 Burroughs社 軍用 ン D825 表 B5000(1961)
SIMD: 1964年 Illinois大学 ILLIAC IV開 契約 DARPA 結ぶ FP: 1964年 CDC6600出荷 10個 並列動作 機能 ニ
1966年 M.J.Flynn教授 Stanford大学 並列 ン 分類 1967年 Gene M. Amdahl (IBM) Amdahl 法則 表
SM: 1968 年 富士通FACOM 230-60
SM: 1969年 Honeywell社 Multics 表
V: 1969年 IBM社 IBM2938 演算器 売
FP: 1969年 CDC7600出荷
並列処理 歩 1970 年 前半
scalar: 1970年 日立HITAC 8700 表
SM: 1971年 Carnegie Mellon大学 C.mmp開 16 PDP-11 連結
共 キ ン し 10並列 越え 初 ン
V: 1971年 CDC社 STAR-100 表
SIMD: 1972年 Goodyear Aerospace社 STARAN稼動 1 , 4x256 衛星画像解析
V: 1972年 TI社 ン ASC完成 30 MF 11 1号機出荷 計6機製造
SM: 1972年 日立HITAC 8700/8800完成 東大 4並列 SIMD: 1972年 ILLIAC IV う 稼動 本格稼働 1975
SM: 1973年 IBM社S/370 上位 方式付加
SIMD: 1973年頃 Burroughs社商用並列 ン BSP 開 開始 V: 1974年 CDC社STAR-100 納入
2016/6/1 34
並列処理 歩 1970 年 後半
V: 1976年Cray-1 LANL 納入
VLIW: 1976年 FPS社AP-120B 出荷
SM: 1977年春 Carnegie Mellon大学Cm* LSI-11 14
SIMD+scalar: 1977年 Burroughs社 BSP 表 16 AU, 17 memory banks 50 MF 1980年中止
DM: 1977年 Siemens社 独 SMS-201 表128個 8080 結合
SM/DM?: 1977年 ソ連 Elbrus 2 製造 10 初 ン
V: 1977年 富士通FACOM 230/75 APU SM: 1978年 富士通FACOM M-200 表 4
V: 1978年 日立 M-180用 IAP 完成 M-200用 1979年 言語 1978年 A.Hoare CSP 提案
DM: 1979年 星 川合 PACS-9 製作
並列処理 歩 1980 年 前半
DM: 1980年 星 PAX-32 製作 V: 1980年 CDC社Cyber 205 表
非対称SM 1981年 BBN Butterfly出荷
全部 1981年 通産省 ン大 開始 1989年 非対称SM 1981年 Pyamid社設立
DM: 1981年 G.C. Fox Cosmic Cube 開始 64x8086/87
? 1982年 ICOT設立 並列推論 ン 1992年 PV: 1982年 Cray X-MP/2 表
V: 1982年 VP-100/200 びS-810 表
DM: 1982年 大 皓一LINKS-1 256 master-worker SIMD: 1983年 Goodyear Aerospace社 MPP製造 128x128 SM: 1983年 Elxsi 6400 売
V: 1983年 SX-1/2 表
DM: 1983年 星 PAC-128 製作
SM: 1983年 Illinois大学 Cedar 開始 自動並列化 ン 頃NY大学 Ultracomputer 始
V: 1983年 中国 銀河1号完成
SM: 1984年 Sequent社Balance 8000/21000 表 最大20 DM: 1984年 星 PAX-32J 開
2016/6/1 36
並列処理 歩 1980 年 後半
DM: 1985年 Transputer 売 PV: 1985年 Cray-2 売
DM: 1985年 nCUBE 10 r
言語 1985年 D. Gelernter Linda言語 表
DM?: 1985年 SUPRENUM 開始
DM: 1985年 Intel社 iPSC/1 表 SIMD 1986年 TM社 CM-1出荷
DM: 1986年 FPS社 T-series 表 DM: 1986年 Meiko社 CS-1 表 V: 1987年 ETA社ETA-10出荷
DM: 1987年 TM社CM-2 出荷
SIMD: 1990年 MasPar社 MP-1出荷
見 並列処理
• 並列
– 全 処理 記述 (global view)
– 1 個 処理 記述 (local view)
• Global view 問題点
– Von Neumann 並列性記述 抽出
• 並列 並列 …..
– 処理分散 (owner-computes rule?)
– 分散 ン ン
• Local view 問題点 自己責任
– Stencil 計算 簡単 Pax や APE 原点
2016/6/1 38
ソ 技術
• 既存 逐 指示文 追加
並列化
– HPF (High Performance Fortran)
– OpenMP 共 上
– XcalableMP
• 明示的並列化
– MPI (Message Passing Interface)
– Thread 並列化 共 上
ソ 技術
• 並列化
–
– ン
• 並列化
大規模連立方程式 解法
• 化
並列処理向 化 能性
2016/6/1 40