X



(情報科学)技術的特異点と科学技術等 2 (ナノテク)©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001オーバーテクナナシー 転載ダメ©2ch.net
垢版 |
2017/03/19(日) 20:22:23.35ID:cRK6Y+kv
※ このスレは、本家スレから分かれた分家スレです。科学・技術系で『専門的な』話題を特に扱います。

スレ成立のきっかけ
・技術的特異点の関わる分野は非常に幅広く、浅い部分から深い部分までレベルも様々で、多様な人が集まっている
・上記を前提として、科学・技術系で専門的な内容に集中しやすいように、ノイズ(特に不毛な論争)を減らしたい
・これにより、興味がある者同士の意思疎通困難性、過去ログ参照の困難性などが解消される

ただし性質上、本家との区分は厳密には困難です ( むしろ同じ内容が扱われても構いません ) 。
本家は雑談寄り、ここではより専門色を強く、とご理解下さい。

■現在の本家スレと前スレ
(強いAI)技術的特異点/シンギュラリティ63
http://rio2016.2ch.net/test/read.cgi/future/1489471775/
(情報科学)技術的特異点と科学技術等 1 (ナノテク)
http://rio2016.2ch.net/test/read.cgi/future/1475986330/

■関連スレ等
関連書籍・リンク・テンプレ集[必見]
http://singularity-2ch.memo.wiki/
(AI)技術的特異点と経済社会等 9 (BI)
http://rio2016.2ch.net/test/read.cgi/future/1484578214/
人工知能
http://rio2016.2ch.net/test/read.cgi/future/1286353655/
人工知能で自我・魂が作れるか
http://rio2016.2ch.net/test/read.cgi/future/1476229483/
不老不死(不老長寿)を目指すスレ Part32
http://rio2016.2ch.net/test/read.cgi/future/1485781591/
検索
http://google.jp/?q=site:2ch.net/test/read.cgi/future/+tokuiten+cyouju
http://google.jp/search?q=singularity+saron+OR+sinpojiumu&;num=20
0217yamaguti
垢版 |
2018/07/30(月) 06:13:12.48ID:wOzVCFyH?2BP(0)

This is the html version of the file http://atrg.jp/ja/index.php?plugin=attach&;pcmd=open&file=06pezy.pdf&refer=ATTA2016
. Google


Page 1

ZettaScaler/PEZY-SCの紹介と今後の方向性
〜自動チューニング技術の現状と応用に関するシンポジウム発表資料
2016/12/26
PEZY Computing, K.K.
0218>>217
垢版 |
2018/07/30(月) 06:15:12.57ID:wOzVCFyH?2BP(0)

Page 2

PEZYグループ

株式会社PEZY Computing (ペジーコンピューティング)
・独自メニーコア・プロセッサ開発
・同汎用PCIeボード開発
・同独自システムボード開発
・同アプリケーション開発
・半導体2.5次元実装技術開発
・ウェハ極薄化応用技術開発
創業:2010年1月  社員数:23名

UltraMemory株式会社 (ウルトラメモリ)
・超広帯域独自DRAM開発
・DRAM積層技術開発
・磁界結合メモリIF開発
・ウェハ極薄化応用技術開発
・広帯域、高速DRAM開発
・最先端汎用DRAM受託開発
創業:2013年11月  社員数:41名

株式会社ExaScaler (エクサスケーラー)
・液浸冷却技術開発
・HPC液浸システム開発
・液浸スパコンシステム開発
・液浸冷却水槽販売
・液浸冷却システム販売
・液浸冷却用ボード類販売
創業:2014年4月  社員数:13名
0219>>218
垢版 |
2018/07/30(月) 06:16:03.52ID:wOzVCFyH?2BP(0)

PEZY Computing:メニーコア・プロセッサ
UltraMemory:超広帯域積層カスタムDRAM
ExaScaler:液浸冷却システム
? 組み合わせることにより、最終システムとしてスーパーコンピュータを開発
? 各社の要素技術を個別に製品展開


Page 3

主な内容

? ZettaScaler1.x/PEZY-SCの概要
? プログラミング概要
? 今後の展開
? その他の話題


Page 4

ZettaScaler1.x/
PEZY-SCの概要
0220>>219
垢版 |
2018/07/30(月) 06:18:31.10ID:wOzVCFyH?2BP(0)

Page 5

ZettaScaler-1.xシステム

Suiren(睡蓮) ZettaScaler-1.5
2014.10Install 2016.5 Upgrade (32node to 48node)

Shoubu(菖蒲) ZettaScaler-1.6
2015.6Install 2016.5 Upgrade

Suiren Blue(青睡蓮) ZettaScaler
2015.5 Install 2016.5 upgrade

Ajisai(紫陽花) ZettaScaler-1.6
2015.10Install 2016.5Upgrade

Satsuki(皐月) ZettaScaler-1.6
2016.5 Install

Sakura(さくら) ZettaScaler-1.6
2016.5 Install
0221>>220
垢版 |
2018/07/30(月) 06:19:21.12ID:wOzVCFyH?2BP(0)

Page 6

Top500
? 世界で最も高速なコンピュータシステムの上位500位までを定期的にランク付けし、評価するプロジェクト。
1993年に発足し、スーパーコンピュータのリストの更新を年2回発表
? 単位:FLOPS(Floating Operation per Second)浮動小数点命令を1秒間に何回実行するか?
? ハイパフォーマンスコンピューティング(HPC)における傾向を追跡・分析するための基準を提供することを目的とし、
LINPACKと呼ばれる行列計算ベンチマークによりランク付けを行っている。
? 大規模システムを構築するには資金力も必要

Green500
? 世界で最もエネルギー消費効率の良いスーパーコンピュータを定期的にランク付けし評価するプロジェクト
? 単位:FLOPS/W FLOPSあたりの消費電力。
? スーパーコンピュータにおけるグリーンITの指標の1つともされ、
日本では「スーパーコンピュータの省エネ性能ランキング」などと呼ばれる事もある。
? 省電力、高効率実行の技術力が問われる


Page 7

Green500での成果

理研情報基盤センターに設置した菖蒲が 2015/6, 11, 2016/6の3期連続で首位
皐月も2位を獲得
0222>>221
垢版 |
2018/07/30(月) 06:20:27.16ID:wOzVCFyH?2BP(0)

Page 8

ZettaScaler-1.xのキーテクノロジー

液浸冷却技術“ESLiC”
1,024メニーコアプロセッサ, “PEZY-SC”
液浸サーバー“Brick”高密度実装技術
0223>>222
垢版 |
2018/07/30(月) 06:21:08.85ID:wOzVCFyH?2BP(0)

Page 9

菖蒲ZettaScaler-1.6システム

? ノード:1つのXeon に4個のPEZY-SCnp が接続されている

Intel Xeon E5-2618L v3
DDR4 LP 32GB DDR4 LP 32GB DDR4 LP 32GB DDR4 LP 32GB

PEZY-SCnp DDR4 32GB
PCIe Gen3 8Lane
PEZY-SCnp DDR4 32GB
PCIe Gen3 8Lane
PEZY-SCnp DDR4 32GB
PCIe Gen3 8Lane
PEZY-SCnp DDR4 32GB
PCIe Gen3 8Lane

PCH C612
DMI2

BMC
RS-232C
SPI
VGA

USB SATA SATA

Infiniband FDR
PCIe 8Lane

PEZY-SCnpはPEZY-SCの半導体部分は変更せずに パッケージとしての信号品質と電源品質を向上したもの
0224>>223
垢版 |
2018/07/30(月) 06:21:52.86ID:wOzVCFyH?2BP(0)

Page 10

菖蒲ZettaScaler-1.6システム

? ブリック:4ノードの集合体
? 液浸層:16ブリックから構成
? 全体システム:5 液浸層から構成


Page 11
0225>>224
垢版 |
2018/07/30(月) 06:22:43.07ID:wOzVCFyH?2BP(0)

第2世代プロセッサ「PEZY-SC」

Name  PEZY-SC

製造プロセス  TSMC28HPM

コア性能
動作周波数  733MHz(Target)
キャッシュ  L1: 1MB, L2: 4MB, L3: 8MB

周辺回路
動作周波数  66MHz

IPs
内蔵CPU  ARM926 x 2  Cache L1:32KB*2, L2: 64KB
PCIe    PCIe Gen3 x 8Lane 4Port  (8GB/s x 4 = 32GB/s)
DDR    DDR4 64bit 2,400MHz 8Port  (19.2GB/s x 8 = 153.6GB/s)

コア(PE)数  1,024 PE

演算性能
3.0T Flops (単精度浮動小数点)
1.5T Flops (倍精度浮動小数点)

消費電力
70W (Leak: 10W, Dynamic: 60W)
46W@533MHz (PEZY-1以下)

パッケージ
DDR版  47.5*47.5mm (2,112pin)
Wide-IO版  20*60mm CSP (#pin: TBD)
0226>>225
垢版 |
2018/07/30(月) 06:23:33.00ID:wOzVCFyH?2BP(0)

Page 12

PEZY-SCの特徴

? 高性能
  ? 8スレッドSMT(Simultaneous Multi-threading)
    ? 4スレッドを順番に切り替え x 2面
    ? 8スレッド分のレジスタファイルを用意
  ? Deep pipelining (16Stages)
  ? 潤沢なオンチップキャッシュ、メモリ

? 低消費電力、高密度実装
  ? 極端に高い周波数は狙わない
  ? 各PEはシンプルに
    ? In-order 2way SuperScaler
    ? 分岐予測なし
    ? キャッシュ間コンシステンシはソフトウェア責任
    ? 独自ISAによる必要命令の絞り込み
0227>>226
垢版 |
2018/07/30(月) 06:24:33.15ID:wOzVCFyH?2BP(0)

Page 13

PEZY-SCのブロック図

ARM0  ARM1    PTILE  PTILE  PTILE  PTILE
Local Bus / Config Bus
PEZY-SC Core    DDR4C  DDR4C  DDR4C  DDR4C  DDR4C  DDR4C  DDR4C  DDR4C
RSTGen
CLKGen
INTC
SRAM
SPI
PIT
PIT
UART
WDT
GPIO

? PTILE: PCIe Gen3
? ARM926は2個搭載 役割分担に対する制約はない
  ? L1I 16KB / L1D 16KB / L2 32KB
  ? ITCM 16KB / DTCM 16KB
  ? MMU
0228>>227
垢版 |
2018/07/30(月) 06:25:31.86ID:wOzVCFyH?2BP(0)

Page 14

PEZY-SCプロセッサ全体構成

3レイヤーの階層構造を持ったMIMD型メニコアプロセッサ
  (4PE x 4(village) x 16(city) x 4(prefecture) = 1024PE)

PE

Program Counter (8set)
L1 I- Cache (2KB)
ALU 4FpOps/Cycle
Register File 32b x 32w x 8set
Local Memory (16KB)

Village (4PE)

PE
PE
L1 D- Cache (2KB)
PE
PE
L1 D- Cache (2KB)

City ( 16 PE )

Special Function Unit
Village (4PE)  Village (4PE)
Village (4PE)  Village (4PE)
L2 I-Cache (32KB)
L2 D-Cache (64KB)
0229>>228
垢版 |
2018/07/30(月) 06:31:21.90ID:wOzVCFyH?2BP(0)

Prefecture
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
L3 I-Cache (128KB)
L3 D-Cache (2MB)
0230>>229
垢版 |
2018/07/30(月) 06:32:07.83ID:wOzVCFyH?2BP(0)

Prefecture
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
L3 I-Cache (128KB)
L3 D-Cache (2MB)
0231>>229-230
垢版 |
2018/07/30(月) 06:32:50.77ID:wOzVCFyH?2BP(0)

Prefecture
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
L3 I-Cache (128KB)
L3 D-Cache (2MB)
0232>>229-231
垢版 |
2018/07/30(月) 06:33:48.30ID:wOzVCFyH?2BP(0)

Prefecture
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
City (16PE)  City (16PE)  City (16PE)  City (16PE)
L3 I-Cache (128KB)
L3 D-Cache (2MB)
0233>>229
垢版 |
2018/07/30(月) 06:45:42.46ID:wOzVCFyH?2BP(0)

DDR4-I/F 64 bit 2400MHz  DDR4-I/F 64 bit 2400MHz
0234>>230
垢版 |
2018/07/30(月) 06:46:14.12ID:wOzVCFyH?2BP(0)

DDR4-I/F 64 bit 2400MHz  DDR4-I/F 64 bit 2400MHz
0235>>231
垢版 |
2018/07/30(月) 06:47:10.62ID:wOzVCFyH?2BP(0)

DDR4-I/F 64 bit 2400MHz  DDR4-I/F 64 bit 2400MHz
0236>>232
垢版 |
2018/07/30(月) 06:47:55.24ID:wOzVCFyH?2BP(0)

DDR4-I/F 64 bit 2400MHz  DDR4-I/F 64 bit 2400MHz
0237>>229-236
垢版 |
2018/07/30(月) 06:51:12.91ID:wOzVCFyH?2BP(0)

ARM926
Host I/F & Inter Processor I/F
Host I/F
PCI Express Gen3 x8
Host I/F
PCI Express Gen3 x8
Host I/F
PCI Express Gen3 x8
Host I/F
PCI Express Gen3 x8
UART
SPI BUS
GPIO
0238>>229-237
垢版 |
2018/07/30(月) 06:54:34.12ID:wOzVCFyH?2BP(0)

Page 15

階層構造と同期メカニズム

? スレッドを階層管理
? 同期レベル(バリア同期)
  ? Level 0 :スレッドレベル、 PE内の0-3スレッド、または4-7スレッド
  ? Level 1 : PEレベル、PE内の8スレッド
  ? Level 2 : Villageレベル、4つのPEとL1キャッシュ
  ? Level 3 : Cityレベル、16のPEとL1/L2キャッシュまで
  ? Level 4 : Prefectureレベル、256のPEとL1/L2/L3キャッシュまで
  ? Level 5 : PEZY-SCレベル、1024のPEとL1/L2/L3キャッシュまで

Sync Level
0  Thread 0-3  Thread 4-7
1    PE  PE  PE  PE
      L1 Cache
2        Village  Village  Village  Village
          L2 Cache
3            City
              L3 Cache
4                Prefecture
5                  PEZYSC Core
0239>>238
垢版 |
2018/07/30(月) 06:55:38.03ID:wOzVCFyH?2BP(0)

Page 16

オンチップキャッシュ

  level  Size(B)  Chip Total(B)  Way  Entry  Line 長(B)  接続
データキャッシュ
  L1  2K  1M  8  4  64  2PEに1つ
  L2  64k  4M  8  32  256  Ciry毎 L1 8 個に対して
  L3  2M  8M  8  256  1k  Prefecture毎 L2 16 個に対して
命令キャッシュ
  L1  2K  2M  8  2  128  PE毎
  L2  32K  2M  4  32  256  City毎 PE 16個
  L3  128K  512K  4  32  1K  Prefecture毎 L2 16 個

複数PE間のメモリコンシステンシはソフトウェア責任、 PE毎に16KBのローカルメモリを備える


Page 17

プログラミング概要
0240>>239
垢版 |
2018/07/30(月) 06:56:30.65ID:wOzVCFyH?2BP(0)

Page 18

プログラミング対象

Xeon
  PEZY-SC
  PEZY-SC
  PEZY-SC
  PEZY-SC
    <演算リソース>
      ・1024個の演算コア(PE)
      ・1PEあたり8個のスレッド
    <メモリ>
      ・32GBのデバイスメモリ
      ・1PEあたり16KBのローカルメモリ
0241>>240
垢版 |
2018/07/30(月) 06:57:53.49ID:wOzVCFyH?2BP(0)

Page 19

作成するプログラム

? 2種類のプログラムを作成する必要がある
  ? CPU上のプログラム(C++で記述)
  ? PEZY-SC上のカーネルプログラム(PZCLで記述)
    ※PZCL=カーネルプログラムを記述するPEZY独自仕様の言語
    コンパイラはllvmを用いている。

main関数呼び出し
  CPU プログラム
    起動  終了
      カーネルプログラム1
    起動  終了
      カーネルプログラム2

上図のようにCPUプログラムからカーネルプログラムを起動する
0242>>241
垢版 |
2018/07/30(月) 06:58:54.95ID:wOzVCFyH?2BP(0)

Page 20

特殊な関数

? カーネルプログラムで利用可能な、PEZY-SC制御に必要な組み込み関数がある。

  ? sync_L1 (L1キャッシュにアクセスする単位でのスレッド同期)
  ? sync_L2 (L2キャッシュにアクセスする単位でのスレッド同期)
  ? sync_L3 (L3キャッシュにアクセスする単位でのスレッド同期)
  ? sync (sync_L3と同等)

  ? flush_L1 (L1キャッシュのフラッシュ)
  ? flush_L2 (L2キャッシュのフラッシュ)
  ? flush_L3 (L3キャッシュのフラッシュ)
  ? flush (flush_L3と同等)

  ? get_pid (PE ID取得)
  ? get_tid (PE内スレッドID取得)
  ? chgthread (PE内スレッドの表裏切り替え)
0243>>242
垢版 |
2018/07/30(月) 06:59:40.84ID:wOzVCFyH?2BP(0)

Page 21

カーネルプログラムの構造

? 基本的な構造
  void pzc_foo(…)
  {
    ? PE ID取得(get_pid)
    ? PE内スレッドID取得(get_tid)
    ? 自スレッドに割り当てられた処理の実行
    ? 出力バッファフラッシュ(flush)
  }


Page 22

pzcAddサンプル

? カーネルは起動するとユニークな tid,pid を持って、 CPUから指定されたスレッド分実行される。

tid=0,pid=0
  void pzc_Add(float* a, float* b, float* c, int count)
  {
    int tid = get_tid();
    int pid = get_pid();
    int index = pid * get_maxtid() + tid;
    if(index >= count) return;
    c[index] = a[index] + b[index];
    flush(); // cache flush
  }
0244>>243
垢版 |
2018/07/30(月) 07:00:23.57ID:wOzVCFyH?2BP(0)

tid=1,pid=0
  void pzc_Add(float* a, float* b, float* c, int count)
  {
    int tid = get_tid();
    int pid = get_pid();
    int index = pid * get_maxtid() + tid;
    if(index >= count) return;
    c[index] = a[index] + b[index];
    flush(); // cache flush
  }

tid=7,pid=N
  void pzc_Add(float* a, float* b, float* c, int count)
  {
    int tid = get_tid();
    int pid = get_pid();
    int index = pid * get_maxtid() + tid;
    if(index >= count) return;
    c[index] = a[index] + b[index];
    flush(); // cache flush
  }

? 1つのPEには8スレッドが存在する
  ? スレッド数を128で起動した場合、128/8=16個のPEが実行される
? 8192を超えるスレッド数で起動する場合、CPUから複数回に分けて起動される
0245>>244
垢版 |
2018/07/30(月) 07:01:00.85ID:wOzVCFyH?2BP(0)

Page 23

簡単な最適化の説明

? 前述のpzcAddサンプルを用いて、PEZY-SC内での簡単な最適化の説明を行う
? ここでは以下のような最適化を行っている
  ? カーネル呼び出しのオーバヘッドの削減
  ? chgthreadを用いたレイテンシーの隠蔽
  ? 同期を用いたキャッシュアクセスの効率化


Page 24

オーバヘッド削減(1/2)

? 以下のコードをスレッド数=要素数として起動する場合、
8192を超えるサイズを処理しようとした場合にカーネルが複数回起動されるため、カーネル呼び出しのオーバヘッドが増加する

void pzc_Add(float* a, float* b, float* c, int count)
{
  int tid = get_tid(); // thread ID (0 - 7)
  int pid = get_pid(); // PE ID
  int index = pid * get_maxtid() + tid;
  if(index >= count) return;
  c[index] = a[index] + b[index];
  flush(); // cache flush
}
0246>>245
垢版 |
2018/07/30(月) 07:03:04.06ID:wOzVCFyH?2BP(0)

Page 25

オーバヘッド削減(2/2)

? 以下のようにカーネルコードを修正し、CPUからの呼び出し時のスレッド数を固定にしても、
1回のカーネル呼び出しで全要素の処理を行えることとなる。
? これによってオーバヘッドを減らすことができる。

void pzc_Add(float* a, float* b, float* c, int count)
{
  int tid = get_tid(); // thread ID (0 - 7)
  int pid = get_pid(); // PE ID
  int offset = pid * get_maxtid() + tid;
  int step = get_maxtid() * get_maxpid();
  for(int pos = offset; pos < count; pos += step) {
    c[pos] = a[pos] + b[pos];
  }
  flush();
}
0247>>246
垢版 |
2018/07/30(月) 07:03:40.68ID:wOzVCFyH?2BP(0)

Page 26

寄り道:CPUエミュレート

? このようにカーネルの中でループさせることは別のメリットもある。
? CPUで1スレッドでの動作として、この関数を同じように動作させることができる
→ソースを共有したデバッグに有効

void pzc_Add(float* a, float* b, float* c, int count)
{
  int tid = get_tid(); // thread ID (0 - 7)
  int pid = get_pid(); // PE ID
  int offset = pid * get_maxtid() + tid;
  int step = get_maxtid() * get_maxpid();
  for(int pos = offset; pos < count; pos += step) {
    c[pos] = a[pos] + b[pos];
  }
  flush();
}

CPUでは
  get_tid() … 常に0
  get_pid() … 常に0
  get_maxtid() … 1
  get_maxpid() … 1
0248>>247
垢版 |
2018/07/30(月) 07:04:41.29ID:wOzVCFyH?2BP(0)

Page 27

スレッドの切り替え (1/3)

? 1つのPEに8スレッド存在するが、一度には4スレッドのみが動作する。
  ? 表裏で4スレッドずつ。
? sync/flushなどの同期やchgthreadを使用しないと、表裏が切り替わらない。
0249>>248
垢版 |
2018/07/30(月) 07:05:33.12ID:wOzVCFyH?2BP(0)

Page 28

スレッドの切り替え (2/3)

? 以下の実装では、ループの中にスレッドが切り替わる命令が無いので
現在実行中の各スレッドが flushにたどり着くまで裏スレッドは処理されない。
? アクセスのアドレスが不連続になり、キャッシュ効率が悪い
? メモリアクセスのレイテンシーを隠蔽できない

void pzc_Add(float* a, float* b, float* c, int count)
{
  int tid = get_tid(); // thread ID (0 - 7)
  int pid = get_pid(); // PE ID
  int offset = pid * get_maxtid() + tid;
  int step = get_maxtid() * get_maxpid();
  for(int pos = offset; pos < count; pos += step) {
    c[pos] = a[pos] + b[pos];
  }
  flush();
}

    memory
  ↑ request    ↓
t0    stall      flush
t4
0250>>249
垢版 |
2018/07/30(月) 07:06:07.72ID:wOzVCFyH?2BP(0)

Page 29

スレッドの切り替え (3/3)

? 以下のようにa, bの読み込み後にchgthreadを入れる事で改善される。

void pzc_Add(float* a, float* b, float* c, int count)
{
  int tid = get_tid(); // thread ID (0 - 7)
  int pid = get_pid(); // PE ID
  int offset = pid * get_maxtid() + tid;
  int step = get_maxtid() * get_maxpid();
  for(int pos = offset; pos < count; pos += step) {
    float a_ = a[pos];
    float b_ = b[pos];
    chgthread();
    c[pos] = a_ + b_;
  }
  flush();
}

    memory
  ↑ request    ↓
t0    stall      flush
   ↓ chgthread
t4
0251>>250
垢版 |
2018/07/30(月) 07:06:50.07ID:wOzVCFyH?2BP(0)

Page 30

メモリアクセスの同期(1/2)

? 以下の実装だと、各スレッドがメモリレイテンシーの状況によって進行度がばらばらになり、
キャッシュアクセスが非効率となる場合がある。

void pzc_Add(float* a, float* b, float* c, int count)
{
  int tid = get_tid(); // thread ID (0 - 7)
  int pid = get_pid(); // PE ID
  int offset = pid * get_maxtid() + tid;
  int step = get_maxtid() * get_maxpid();
  for(int pos = offset; pos < count; pos += step) {
    float a_ = a[pos];
    float b_ = b[pos];
    chgthread();
    c[pos] = a_ + b_;
  }
  flush();
}

  memory request
t0 ↑
t1  ↑

t7 ↑
0252>>251
垢版 |
2018/07/30(月) 07:07:24.21ID:wOzVCFyH?2BP(0)

Page 31

メモリアクセスの同期(2/2)

? 以下のようにメモリアクセス前に同期を入れることにより、メモリアクセス性能が向上する場合がある
ただし同期自体のペナルティがあるため、利用する/しない、あるいは同期レベルの選択に注意が必要

void pzc_Add(float* a, float* b, float* c, int count)
{
  int tid = get_tid(); // thread ID (0 - 7)
  int pid = get_pid(); // PE ID
  int offset = pid * get_maxtid() + tid;
  int step = get_maxtid() * get_maxpid();
  for(int pos = offset; pos < count; pos += step) {
    sync_L2();
    float a_ = a[pos];
    float b_ = b[pos];
    chgthread();
    c[pos] = a_ + b_;
  }
  flush();
}

  memory request
t0 →  ↑
t1  →  ↑
…  sync
t7 →    ↑
0253>>252
垢版 |
2018/07/30(月) 07:08:00.62ID:wOzVCFyH?2BP(0)

Page 32

PEZY-SCの効果的な利用

? スレッド、PE単位の並列性を活かす
? L1~L3キャッシュに優しいメモリ配置を行う
? CPUからカーネルの起動回数を減らす
? chgthread を用いてレイテンシーを隠蔽する
? 同期を適切に用いて、キャッシュの効率を上げる
? ローカルメモリを利用することでメモリアクセスを減らす
? その他各種設定(メモリ書き出し設定・カーネル呼び出し方法設定)→これについては今後必要に応じて情報公開します。


Page 33

ローカルメモリの利用(1/2)

? PE毎に16KBのローカルメモリをカーネルプログラムで利用できる
? デフォルトではPE内の8スレッドのスタック領域として、2KBずつを割り振られている
  0x0000
    スレッド0用スタック領域(2KB)
    スレッド1用スタック領域(2KB)
    スレッド2用スタック領域(2KB)
    スレッド3用スタック領域(2KB)
    スレッド4用スタック領域(2KB)
    スレッド5用スタック領域(2KB)
    スレッド6用スタック領域(2KB)
    スレッド7用スタック領域(2KB)
  0x3fff          16KB
0254>>253
垢版 |
2018/07/30(月) 07:08:43.24ID:wOzVCFyH?2BP(0)

Page 34

ローカルメモリの利用(2/2)

? このままではユーザが利用できないため、スレッド用のスタック領域を削減する
(下図はスレッド毎のスタックサイズを1KBとした場合)
  0x0000
    スレッド0用スタック領域(1KB)
    スレッド1用スタック領域(1KB)
    スレッド2用スタック領域(1KB)
    スレッド3用スタック領域(1KB)
    スレッド4用スタック領域(1KB)
    スレッド5用スタック領域(1KB)
    スレッド6用スタック領域(1KB)
    スレッド7用スタック領域(1KB)
0x2000            8KB
    ユーザ利用可能領域(8KB)
0x3fff            8KB


Page 35

プログラミングのパターン

? PEZY-SCのカーネルプログラムはなるべく全処理を一括で持っていきたい
  ? MIMDでプログラミングに自由度があるので、多少並列度が落ちるところもとりあえずカーネルには載せることは容易

    SC処理1 → CPU処理2 → SC処理3 → CPU処理4 → SC処理5

      ↓

    SC処理1 → SC処理2 → SC処理3 → SC処理4 → SC処理5
0255>>254
垢版 |
2018/07/30(月) 07:09:32.45ID:wOzVCFyH?2BP(0)

Page 36

プログラミングのパターン

? フロントエンドがclangであり、ほとんどのケースではSCとCPUでのソースコードの共有が容易。
? デバッグ時には細かい単位で切り替えながら不具合を特定することが非常に有効

  CPU処理1 ⇔ SC処理1
      ↓
  CPU処理2 ⇔ SC処理2
      ↓
  CPU処理3 ⇔ SC処理3
      ↓
  CPU処理4 ⇔ SC処理4
      ↓
  CPU処理5 ⇔ SC処理5


Page 37

プログラミングのパターン

? 最終的な実行はなるべくカーネル処理だけとする
  CPU処理1 SC処理1
        ↓
  CPU処理2 SC処理2
        ↓
  CPU処理3 SC処理3
        ↓
  CPU処理4 SC処理4
        ↓
  CPU処理5 SC処理5
0256>>255
垢版 |
2018/07/30(月) 07:10:04.32ID:wOzVCFyH?2BP(0)

Page 38

その他の話題


Page 39

共同開発のパターン

? そもそもPEZY-SCは利用できそうだろうか?
? 自分のところで評価するのは負荷が高い。。。


Page 40

共同開発のパターン1

? そもそもPEZY-SCは利用できそうだろうか?
? 自分のところで評価するのは負荷が高い。。。
→(可能な範囲で)実装に必要な情報をご提供頂き、PEZY側で(可能な範囲で)評価を行う(基本はNDAベース)
  A社/大学/研究所
実装に必要な情報  ↑
  ↓      評価結果
    PEZY
0257>>256
垢版 |
2018/07/30(月) 07:10:59.53ID:wOzVCFyH?2BP(0)

Page 41

共同開発のパターン2

? そもそもPEZY-SCは利用できそうだろうか?

? まずは簡単に触ってみたい。。。
? PEZY-SCを空冷環境下でご提供
  ? ただし、開発途上のものなので十分な情報やサポートを保証できるものではありません。
  (弊社側で可能な範囲でのご提供となります)

  A社/大学/研究所
    ↑    ↑
PEZY-SC空冷環境  評価結果
    PEZY
0258>>257
垢版 |
2018/07/30(月) 07:12:26.60ID:wOzVCFyH?2BP(0)

Page 42

PEZY-SC評価システム例

LIANLI ATX PC-T60A
  ASUS X99E WS
    Intel? Xeon? Processor E5-2650 v3 (25M Cache, 2.30 GHz)
    Samsung DDR4-2133 8GB×4
    Crucial 2.5” SSD CT250BX100SSD1
    PEZY-SC Dual Board x 2 株式会社 PEZY Computing 社製品
  RA-750S
  Optional
    120 mm / 140 mm Fan Cooler Model: T60-1
0259>>258
垢版 |
2018/07/30(月) 07:13:17.14ID:wOzVCFyH?2BP(0)

Page 43

共同開発のパターン3

? そもそもPEZY-SCは利用できそうだろうか?
? 液浸環境下でスパコン構成を試してみたい。 →菖蒲システムの利用公募
http://accc.riken.jp/news1/2016-07-01/
こちらも十分な情報やサポートを保証できるものではありません(可能な範囲でのご提供となります)
研究開発用途で開発情報を公開可能ならばお勧め!
個人でも応募可!!


Page 44

菖蒲システムでできること

? 複数のコンピュートノードを用いた大規模な並列計算が可能。MPIの利用が可能。
? 現状は1タンク=16ブリック=256ノードが開発者に常時提供されている。
必要に応じて全システムでの利用も可能。
? ジョブ管理システムslurmの利用が可能。
? フロントエンド、コンピュートノードともに linux(centOS7)が入っており、
一般的なlinuxのライブラリやツールが利用可能。
0260>>259
垢版 |
2018/07/30(月) 07:14:05.52ID:wOzVCFyH?2BP(0)

Page 45

菖蒲の構成

? フロントエンドとコンピュートノードから構成される。
? 4つのコンピュートノードは1つのブリックを構成する。
? また、各コンピュートノードはそれぞれ1個のXeonと4個のPEZY-SCを所持する。
? フロントエンド、コンピュートノードはInfinibandにより結合されている。
shoubu
  t1n011 t1n012 t1n013 t1n014  1ブリック
  t1n021
  ‥‥


Page 46

ジョブ管理システムの利用

? 複数の人が菖蒲システムを利用するためにジョブシステム (slurm)が導入されている。
これにより特定のコンピュートノードを意識せずに利用ができる。
  ? ssh shoubu.riken.jp のようにしてフロントエンドにログインする。
  ? フロントエンド上でプログラムの編集、ビルドを行う。
  ? sbatch ?nodes <ノード数> --ntasks-per-node <ノードあたりの MPIプロセス数> tst.sh

    #!/bin/sh
    #SBATCH ?p debug
    #SBATCH ?exclusive

    mpirun ... //MPIを用いる場合
0261>>260
垢版 |
2018/07/30(月) 07:14:44.17ID:wOzVCFyH?2BP(0)

Page 47

今後の展開


Page 48

今後の展開

? 新プロセッサ PEZY-SC2の開発
  ? 2,048コアの演算PE+MIPSプロセッサ内蔵
  ? TCIインタフェースによる、メモリ帯域の飛躍的拡大

? Brickボード、液浸冷却システムのブラッシュアップ
  ? 新ブリック構成で冷却効率を向上

? ZettaScaler-2.xシリーズ
  ? これらの新規開発要素を組み合わせた、新しいスーパーコンピュータの実現
0262>>261
垢版 |
2018/07/30(月) 07:15:27.78ID:wOzVCFyH?2BP(0)

Page 49

PEZY-SC2の特徴

? CPUがMIPSとなりSC2とメモリ空間を共有する
→従来XeonとSCの間で必要であったメモリ転送が必要なくなる。

メモリ
↑ Xeon
↓ SC SC SC SC
メモリ メモリ メモリ メモリ

  ↓

メモリ
  MIPS
  SC2


Page 50

PEZY-SC2の特徴

? CPUとSC2の協調動作の強化
? 各種命令セットの補強
? (大きな変更なく)SCのプログラムをそのままコンパイル・実行できる
0263>>262
垢版 |
2018/07/30(月) 07:16:03.73ID:wOzVCFyH?2BP(0)

Page 51

外部に公開している情報

? 若干のサンプルプログラム
? Doxygenで自動生成されたAPIリファレンス
? 簡単なアーキテクチャ説明資料
? 簡単なプログラミングマニュアル


Page 52

外部に公開している情報

? 若干のサンプルプログラム
? Doxygenで自動生成されたAPIリファレンス
? 簡単なアーキテクチャ説明資料
? 簡単なプログラミングマニュアル



? ユーザポータルを作成してここに各種情報を集約していく予定です(2017/1予定)
  ? PEZYと個別にNDAのやり取りを行い、その後に参加して頂くようになります。
0264>>263
垢版 |
2018/07/30(月) 07:17:26.14ID:wOzVCFyH?2BP(0)

Page 53

開発中/予定のソフトウェア

? 物理系シミュレーション
? 開発環境
  ? OpenACC/OpenCL/PUDA(!)・・・
? 量子計算シミュレーション
? メタゲノム解析ツール
? ニューラルネット
  ? Caffe/・・・
? 数値計算ライブラリ
  ? BLAS/FFT・・・
? ・・・


Page 54

ご興味がありましたら
ishikawaATpezy.co.jp
お気軽にご連絡ください
0266>>265
垢版 |
2018/07/30(月) 07:23:57.02ID:wOzVCFyH?2BP(0)

>831 オryー 180706 1751 H22QHp/d
> 第51回のTop500は米国のSummitが中国から首位を奪回 | マイナビニュース
>http://news.mynavi.jp/article/20180706-659829/
:
>。もし運用 ry 、20.41PFlopsでTop500 5位 ry 、幻 ry 。ExaScalerでは、暁光を設置 ry 主体を募集 ry 、きちんと運用 ry 、国内でなくても良い

>832 オryー 0706 2235 kFCxLR3J
> 中国だな
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況