HPC143

Similar documents
HPC146

XACCの概要

研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI, MPICH, MVAPICH, MPI.NET プログラミングコストが高いため 生産性が悪い 新しい並

Microsoft PowerPoint - sps14_kogi6.pptx

1.overview

XcalableMP入門

XMPによる並列化実装2

PowerPoint プレゼンテーション

GPU チュートリアル :OpenACC 篇 Himeno benchmark を例題として 高エネルギー加速器研究機構 (KEK) 松古栄夫 (Hideo Matsufuru) 1 December 2018 HPC-Phys 理化学研究所 共通コードプロジェクト

新しい並列プログラミング言語である 分散メモリ環境において OpenMPのようにMPI とは異なるシンプルな言語構文と指示文による並列化を目指している ベース言語は Fortran 言語とC 言語となっており 2011 年 6 月に発足したPC クラスタコンソーシアム XcalableMP 規格部会

Microsoft PowerPoint - 演習1:並列化と評価.pptx

XACC講習会

PowerPoint プレゼンテーション

Microsoft Word - HOKUSAI_system_overview_ja.docx

Microsoft Word - openmp-txt.doc

製品開発の現場では 各種のセンサーや測定環境を利用したデータ解析が行われ シミュレーションや動作検証等に役立てられています しかし 日々収集されるデータ量は増加し 解析も複雑化しており データ解析の負荷は徐々に重くなっています 例えば自動車の車両計測データを解析する場合 取得したデータをそのまま解析

Microsoft Word ●IntelクアッドコアCPUでのベンチマーク_吉岡_ _更新__ doc

NVIDIA Tesla K20/K20X GPU アクセラレータ アプリケーション パフォーマンス テクニカル ブリーフ

並列・高速化を実現するための 高速化サービスの概要と事例紹介

RICCについて

CCS HPCサマーセミナー 並列数値計算アルゴリズム

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

hpc141_shirahata.pdf

Microsoft PowerPoint - sales2.ppt

名称 : 日本 GPU コンピューティングパートナーシップ (G-DEP) 所在 : 東京都文京区本郷 7 丁目 3 番 1 号東京大学アントレプレナープラザ, 他工場 URL アライアンスパートナー コアテクノロジーパートナー NVIDIA JAPAN ソリュ

高生産 高性能プログラミング のための並列言語 XcalableMP 佐藤三久 筑波大学計算科学研究センター

NUMAの構成

Microsoft PowerPoint - 6.pptx

スライド 1

コードのチューニング

CUDA 連携とライブラリの活用 2

nakao

PowerPoint Presentation

AICS 村井均 RIKEN AICS HPC Summer School /6/2013 1

memo

(Microsoft PowerPoint \215u\213`4\201i\221\272\210\344\201j.pptx)

TSUBAME2.0 における GPU の 活用方法 東京工業大学学術国際情報センター丸山直也第 10 回 GPU コンピューティング講習会 2011 年 9 月 28 日

IPSJ SIG Technical Report Vol.2012-ARC-202 No.13 Vol.2012-HPC-137 No /12/13 Tightly Coupled Accelerators 1,a) 1,b) 1,c) 1,d) GPU HA-PACS

Software-Defined Tester(SDT) を用いた高精度遅延測定による SDN/NFV 品質向上 富士通アドバンストテクノロジ株式会社システム技術統括部大久保克彦 0 Copyright 2017 FUJITSU AD

スライド 1

GPGPUクラスタの性能評価

Microsoft PowerPoint - XMP-AICS-Cafe ppt [互換モード]

最新の並列計算事情とCAE

Microsoft PowerPoint - CAEworkshop_ _01.ver1.3

並列計算導入.pptx

GPUを用いたN体計算

3次多項式パラメタ推定計算の CUDAを用いた実装 (CUDAプログラミングの練習として) Implementation of the Estimation of the parameters of 3rd-order-Polynomial with CUDA

<4D F736F F F696E74202D D F95C097F D834F E F93FC96E5284D F96E291E85F8DE391E52E >

Microsoft PowerPoint - 05.pptx

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

SimscapeプラントモデルのFPGAアクセラレーション

演習1: 演習準備

ex04_2012.ppt

Microsoft PowerPoint ppt

about MPI

038_h01.pdf

GPUコンピューティング講習会パート1

Slide 1

スライド 1

enshu5_6.key

<4D F736F F D20332E322E332E819C97AC91CC89F090CD82A982E78CA982E9466F E393082CC8D5C91A291CC90AB945C955D89BF5F8D8296D85F F8D F5F E646F63>

4 倍精度基本線形代数ルーチン群 QPBLAS の紹介 [index] 1. Introduction 2. Double-double algorithm 3. QPBLAS 4. QPBLAS-GPU 5. Summary 佐々成正 1, 山田進 1, 町田昌彦 1, 今村俊幸 2, 奥田洋司

PowerPoint プレゼンテーション

pp2018-pp9base

Vol.214-HPC-145 No /7/3 C #pragma acc directive-name [clause [[,] clause] ] new-line structured block Fortran!$acc directive-name [clause [[,] c

01_OpenMP_osx.indd

ストリームを用いたコンカレントカーネルプログラミングと最適化 エヌビディアジャパン CUDAエンジニア森野慎也 GTC Japan 2014

Microsoft PowerPoint ppt

Microsoft PowerPoint - 11.pptx

PowerPoint Presentation

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

第8回講義(2016年12月6日)

熊本大学学術リポジトリ Kumamoto University Repositor Title GPGPU による高速演算について Author(s) 榎本, 昌一 Citation Issue date Type URL Presentation

GeoFEM開発の経験から

Microsoft PowerPoint - OpenMP入門.pptx

Hadoop LZO圧縮機能の検証

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - C++_第1回.pptx

TopSE並行システム はじめに

NUMAの構成

PowerPoint Template

生成された C コードの理解 コメント元になった MATLAB コードを C コード内にコメントとして追加しておくと その C コードの由来をより簡単に理解できることがよくありま [ 詳細設定 ] [ コード外観 ] を選択 C コードのカスタマイズ より効率的な C コードを生成するベストプラクテ

Microsoft PowerPoint - compsys2-06.ppt

2014 年電子情報通信学会総合大会ネットワークシステム B DNS ラウンドロビンと OpenFlow スイッチを用いた省電力法 Electric Power Reduc8on by DNS round- robin with OpenFlow switches 池田賢斗, 後藤滋樹

enshu5_4.key

プログラミングI第10回

スライド 1

PowerPoint プレゼンテーション

MATLAB® における並列・分散コンピューティング ~ Parallel Computing Toolbox™ & MATLAB Distributed Computing Server™ ~

Total View Debugger 利用の手引 東京工業大学学術国際情報センター version 1.0

PowerPoint プレゼンテーション

CSPの紹介

Microsoft PowerPoint - 09.pptx

JACi400のご紹介~RPGとHTMLで簡単Web化~

Prog1_10th

PowerPoint プレゼンテーション

Microsoft PowerPoint ppt

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

Transcription:

研究背景 GPUクラスタ 高性能 高いエネルギー効率 低価格 様々なHPCアプリケーションで用いられている TCA (Tightly Coupled Accelerators) 密結合並列演算加速機構 筑波大学HA-PACSクラスタ アクセラレータ GPU 間の直接通信 低レイテンシ 今後のHPCアプリは強スケーリングも重要 TCAとアクセラレータを搭載したシステムに おけるプログラミングモデル 例 (CUDA or OpenACC) + MPI + TCAのAPI TCAのインタフェースボード PEACH2 他の選択肢として高生産性なプログラミングモデルも用意しよう!2

研究目的 本研究の最終目標 TCAとアクセラレータを搭載したクラスタのための高生産プログラミング モデルの提案! 本発表の研究内容 上記のプロトタイプの提案とその初期評価 並列言語XcalableMPを拡張し TCAの利用に必要な処理の自動化 拡張したXcalableMPとOpenACCの連携により TCAと アクセラレータを搭載したクラスタに対するプログラミングの簡易化 ベンチマークプログラムを用いた生産性と性能の初期評価!3

この後の発表の流れ 1. TCAを用いたプログラミング 2. プログラミングモデルのプロトタイプの提案と実装 3. ベンチマークプログラムによる生産性と性能の初期評価 ラプラス方程式 地震波シミュレーションコード FDTD法 4. 考察と関連研究 5. まとめと今後の課題!4

TCAの詳細 PCIeの技術を応用 PEACH2 TCA用インタフェースボード HA-PACS/TCA 筑波大で利用 Altera社Stratix IV GX FPGA PCIe Gen2 x8レーン x4ポート PEACH2同士を PCIe外部ケーブルで相互接続 GPU 16ノードのサブクラスタ ステンシル計算に向いている 計算ノード 一 PCIe外部ケーブル TCA GPU TCA CPU CPU NIC NIC SW!5

TCAを使ったプログラミング TCAが提供するAPIを用いて下記の操作を行う 1. GPU上にメモリ領域を確保する OpenACCのdata構文 or cudamalloc() or tcamalloc()など 2. 1.の領域のアドレスを用いてTCAのハンドルの生成 3. 送信ノードと受信ノードとでTCAハンドルの交換 4. 送信データの登録 送信先 転送データサイズ ストライドの幅など 5. データ送信 これらの操作は低レベルのAPIを 用いる!6

この後の発表の流れ 1. TCAを用いたプログラミング 2. プログラミングモデルのプロトタイプの提案と実装 3. ベンチマークプログラムによる生産性と性能の初期評価 ラプラス方程式 地震波シミュレーションコード FDTD法 4. 考察と関連研究 5. まとめと今後の課題!7

OpenACCとXcalableMP OpenACC 指示文ベースのアクセラレータプログラミングモデル 逐次コードのイメージを保ったまま 処理をオフロード可能 単体ノード用 XcalableMP XMP 指示文ベースの分散メモリ型システム用並列プログラミングモデル 逐次コードのイメージを保ったまま 並列アプリケーションを作成可能 ステンシル計算を簡易に記述するための構文も提供 OpenACCとXMPを組合せ さらにステンシル計算にTCAを利用するように XMPを拡張することで 逐次コードのイメージを保ったまま TCAと アクセラレータを搭載したクラスタ用のプログラミングが行えるのではないか!8

提案プログラミングモデルのイメージ 逐次コード +XMP指示文 +TCA用のXMP指示文 +OpenACC指示文 分散メモリ用 コード +OpenACC指示文 XMPコンパイラ TCAとアクセラ レータを搭載した クラスタ用 実行ファイル OpenACCコンパイラ TCA用のXMP指示文 XMPのステンシル計算用の機能をTCA用に拡張 TCAの利用に必要なハンドルの操作などを自動的に行う!9

提案モデルのプログラム例 double u[xsize][ysize], uu[xsize][ysize]; #pragma xmp nodes p(x, y) #pragma xmp template t(0:ysize 1, 0:XSIZE 1) #pragma xmp distribute t(block, block) onto p #pragma xmp align [j][i] with t(i, j) :: u, uu #pragma xmp shadow uu[1:1][1:1] #pragma acc data copy(u) copyin(uu) { for(k=0; k<max_iter; k++){ #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) uu[x][y] = u[x][y];! #pragma xmp reflect_tca (uu)! 2次元ラプラス方程式 袖を含んだ分散配列の定義 分散配列をアクセラレータの メモリに転送 XMP指示文で分散された配列を OpenACC指示文が分散して処理 TCAを用いた配列uuの袖の同期 #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) u[x][y] = (uu[x- 1][y]+uu[x+1][y]+ uu[x][y- 1]+uu[x][y+1])/4.0; } // end k } // end data!10

実装について 1/2 double u[xsize][ysize], uu[xsize][ysize]; #pragma xmp nodes p(x, y) #pragma xmp template t(0:ysize 1, 0:XSIZE 1) #pragma xmp distribute t(block, block) onto p #pragma xmp align [j][i] with t(i, j) :: u, uu #pragma xmp shadow uu[1:1][1:1] #pragma acc data copy(u) copyin(uu) { for(k=0; k<max_iter; k++){ #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) uu[x][y] = u[x][y];! #pragma xmp reflect_tca (uu)! #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) u[x][y] = (uu[x- 1][y]+uu[x+1][y]+ uu[x][y- 1]+uu[x][y+1])/4.0; } // end k } // end data Omni XMP Compiler AICSと筑波大で開発して いるリファレンス実装 オープンソース source-to-source このコンパイラをベースに 提案モデルを実装中 TCAを用いた配列uuの袖の同期 1. ハンドルの生成と共有 2. 配列の袖領域を登録 shadow文から情報入手 3. 1と2の情報をキャッシュ 4. 同期実行!11

実装について 2/2 OpenACCのdata指示文の分散配列の対応 OpenACCの仕様上 動的に確保された配列は開始番号と長さを指定する int a[n]; #pragma xmp nodes p(4) #pragma xmp template t(0:n- 1) #pragma xmp distribute t(block) onto p #pragma xmp align a[i] with t(i) #pragma acc data copy (a) { } // // int a[]は各ノードで必要な要素のみ // malloc()で確保される // int min = int length = #pragma acc data copy (a[min:length]) { OpenACCのloop指示文をfor文の直前に挿入する 各ノードのイテレーションはXMPランタイムライブラリが計算しているから #pragma xmp loop on t(i) #pragma acc parallel loop for(int i=0;i<n;i++){ } int XMP_init i, _XMP_cond_i, XMP_step_i; XMP_sched_loop_template_BLOCK(0, N, 1, &(_XMP_init_i), &(_XMP_cond_i), &(_XMP_step_i), ); #pragma acc parallel loop for(int i=_xmp_init_i;i<_xmp_cond_i;i+=_xmp_step_i){!12

Omni XMP Compilerの変更 逐次コード +XMP指示文 +reflect_tca指示文 +OpenACC指示文 分散メモリ用 コード +OpenACC指示文 XMPコンパイラ XMP指示文の解析 reflect_tca指示文の解析 OpenACC指示文に対する 対応 1. Call TCAとアクセラ レータを搭載した クラスタ用 実行ファイル 2. Call 3. Link Omni XMPの コンパイルドライバ OpenACCコンパイラ 既存のものをそのまま利用 PGI Cray Omniなど XMPランタイムライブラリ TCAライブラリ MPIライブラリ 緑文字が新規開発部分!13

この後の発表の流れ 1. TCAを用いたプログラミング 2. プログラミングモデルのプロトタイプの提案と実装 3. ベンチマークプログラムによる生産性と性能の初期評価 ラプラス方程式 地震波シミュレーションコード FDTD法 4. 考察と関連研究 5. まとめと今後の課題!14

生産性と性能の初期評価 ベンチマーク 2次元ラプラス方程式 地震波シミュレーションコード 時間領域差分法 Finite-difference time-domain Method 逐次版は岡元太郎 先生 東工大 が作成 生産性と性能の評価方法 提案モデルである XMP+OpenACC で記述したコードと MPI+TCAのAPI+OpenACC で記述したコードとの比較 地震波シミュレーションコードについては 性能測定は行えなかった ので 生産性のみの比較!15

2次元ラプラス方程式の生産性の比較 XMP+OpenACC 提案モデル double u[xsize][ysize] double uu[xsize][ysize];! #pragma acc data copy(u) copyin(uu) { for(k=0; k<max_iter; k++){ #pragma xmp reflect_tca (uu)! #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) u[x][y] = (uu[x- 1][y]+uu[x+1][y]+ uu[x][y- 1]+uu[x][y+1])/4.0; MPI+TCA+OpenACC #define Local_XSIZE (XSIZE/X_PROCS+2) double u[local_xsize][local_ysize] double uu[local_xsize][local_ysize]; #pragma acc data copy(u) copyin(uu) { // TCAのハンドルの登録など // 45行! for(k=0; k<max_iter; k++){ // TCAを用いた袖送信とデータ受信完了待ち // 5行! #pragma acc parallel loop collapse(2) for(x=1; x<local_xsize- 1; x++) for(y=1; y<local_ysize- 1; y++) u[x][y] = (uu[x- 1][y]+uu[x+1][y]+ uu[x][y- 1]+uu[x][y+1])/4.0; 提案モデルは 配列の宣言やイテレーションなどを逐次のまま記述可能!16

2次元ラプラス方程式に対する生産性 提案モデルはコードの追加のみで ハイブリッド化可能 逐次コードはそのまま 17+5 = 22行の追加のみ 総行数は68行 MPI+TCA+OpenACC 73+8=81行の追加 13行の既存コードの変更 総行数は127行 good!17

2次元ラプラス方程式に対する性能 性能 HA-PACS/TCA NVIDIA K20X 1process/1node, 1GPU/1process 9" 強スケーリング 8" 提案モデルは MPI+TCA+OpenACCの 98.5%以上の性能 1.5%の差の原因は イテレーションの 計算を時間発展内で 毎回行っているから Time (sec.) 問題サイズ 16384 x 16384 XMP+OpenACC MPI+TCA+OpenACC 7" 6" 5" 4" good 3" 2" 4" 8" 16" Num. of nodes!18

地震波シミュレーション オリジナルはFortran言語の逐次プログラム 東工大 岡元先生 C言語に変更 行数 457行 同期配列数 9 問題空間は3次元で周期境界!19

地震波シミュレーションに対する生産性 提案モデル 追加 33+23 = 56行 変更 13行 削除 86行 周期境界のコードがTCAの 通信で置き換えているから 総行数は427行 MPI+TCA+OpenACC 追加 71+29 = 100行 変更 32行 削除 86行 理由は同上 総行数は471行 good 逐次コード XMP+ OpenACC MPI+TCA+ OpenACC!20

この後の発表の流れ 1. TCAを用いたプログラミング 2. プログラミングモデルのプロトタイプの提案 3. 提案モデルを実現するコンパイラの実装 4. ベンチマークプログラムによる生産性と性能の初期評価 ラプラス方程式 地震波シミュレーションコード FDTD法 5. 考察と関連研究 6. まとめと今後の課題!21

考察 生産性について 既存のコードの変更量は少ない 逐次コードのイメージを保持 端数処理などを含めた インデックス計算を自動化 プログラミングコストの削減 TCAの処理の自動化 同期対象の登録などのハンドルの 操作を行う必要がない プログラミングコストと 学習コストの削減 性能について 追加コストはインデックス計算のみ ループ文の内容が多かったり ループ長が長ければ 相対的に 追加コストは小さくなると考えられる!22

関連研究 X10やChapelなどのGPU対応 ベース言語の文法の拡張 XMP-dev 同上 PGAS並列プログラミング言語XcalableMPにおける演算加速装置を 持つクラスタ向け拡張仕様の提案と試作 ACS論文誌, 2010 上記と比較した今回の提案の利点 アクセラレータ用コードの最適化はOpenACCに任せられる コンパイラの開発コストの削減 OpenACCのコードがあれば TCAを用いた分散アプリケーションを 少ない工数で開発可能!23

まとめと今後の課題 本研究の目的 TCAとアクセラレータを搭載したクラスタのためのプログラミング モデルのプロトタイプの提案と初期評価 明らかにしたこと ラプラス方程式とFDTD法といったステンシル計算において 提案モデル は変更コードの量は少なく 性能はMPIを用いたモデルの98.5%以上を 発揮した 今後の課題 TCAに関する高速化 通信のpack/unpack 他のXMP指示文 broadcastなど のアクセラレータ対応の検討!24