高性能計算(high performance...

12
分散並行処理研究室:上級准教授 中里直人 (242B) 高性能計算(High Performance Computing) マルチコア・メニーコア・並列計算機にかかわる全般の研究 GPUによるシミュレーションの高速化の実現 研究テーマの例 電力効率のよいプロセッサの設計 FPGA/ASICによる並列計算プロセッサの実現 HPCによる大規模宇宙シミュレーション 多倍長精度演算アルゴリズムの高速化 1

Upload: others

Post on 28-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

  • 分散並行処理研究室:上級准教授 中里直人 (242B)

     高性能計算(High Performance Computing) マルチコア・メニーコア・並列計算機にかかわる全般の研究 GPUによるシミュレーションの高速化の実現

     研究テーマの例  電力効率のよいプロセッサの設計   FPGA/ASICによる並列計算プロセッサの実現  HPCによる大規模宇宙シミュレーション  多倍長精度演算アルゴリズムの高速化

    1

  • 2

    身近に使える並列計算機

     マルチコアCPU  文書作成やWeb処理に向いている   2 – 8 core

     GPU  コンピュータグラフィックス処理に向いている  数値シミュレーションにも

     メニーコアCPU  二つの特性をあわせたようなもの

    OpenCLでプログラミングできる

  • 3

    倍精度演算プロセッサの進化:省電力化が必須

  • 4

    OpenCLによる並列計算:流体シミュレーション

  • 5

    OpenCLによる並列計算:宇宙のシミュレーション 白色矮星の合体:超新星爆発の起源説

  • 6

    OpenCLの応用例:行列計算の高速化

  • 7

    津波シミュレーションの高速化

     津波が発生した際に波の到達を予測したい  MOST法シミュレーションによる予測

    MOST法による津波シミュレーション OpenMP並列化と性能評価

    会津大学大学院コンピュータ理工学研究科

    概要・目的

    河野郁也, 中里直人, 林憲作, Alexander Vazhenin, Stanislav Sedukhin

    ・MOST による津波シミュレーション 高速化 ・様々な並列プログラミング環境下で プログラム並列化と評価を行う ・実時間 津波伝搬よりも速い計算完了を目指す ・本稿で OpenMPによる並列化で,MIC(Many Core Integrated)アーキテクチャ環境下における性能を評価

    支配方程式 「浅水方程式」と呼 れる偏微分方程式

    η      :波高 D :水深 H :D  +  η  (全波高) u,v :波 速度成分 g :重力加速度

    MOST(Method of Splitting Tsunami) 2次元配列上 波 速度(緯度,経度方向)と高さを,1方向ずつ差分法および陽なオイラー法による時間積分を適用して更新

    横(経度)方向:1行分 各データをコピーした後,そ 行における緯度による補正(地球 曲率に由来)を計算.コピーした配列に対して更新を行い,再び2次元配列に戻す.

    縦(緯度)方向:1列分 各データをコピーした後,コピーした配列に対して更新を行い,再び2次元配列に戻す.オリジナルコードで,各要素で緯度補正を計算している.

    ベンチマーク・評価方法 ・1ステップに1秒 刻みで300ステップ 計算にかかる時間を計測 ・太平洋全域 水深データ(2581×2879, 右図)を用いる ・OpenMPで ,各時間ステップにおいて更新する1行および1列分 データを選択する最も外側 for文 を並列化を行う ・コンパイラ icc を用い,Intel Xeon Phi上で実行 単純にOpenMP化したも (Ⅰ),緯度方向計算 前後に転置処理を入れたも (Ⅱ),2次元配列を一度にコピーし更新するも (Ⅲ)

    3種類 コードでベンチマークを行う.

    計算機環境 (MIC, Intel Xeon Phi)

    結果 アルゴリズム 修正 (Ⅱ)転置処理 導入 オリジナルコードで ,緯度方向 計算において 配列 列アクセスが発生し,性能低下 原因となる.計算 前後に単純に(i,j)成分と(j,i)成分を順に入れ替えていく転置を挟み,行アクセスで計算できるようにした.(転置処理もOpenMP化) (Ⅲ)2次元配列を一度にまとめて処理 これ 今後行うGPU計算で十分な並列性能を得るため 修正である.これまで 1行また 1列を選んで2次元配列からコピーし,そ コピーしてきた1次元配列に対して更新 処理をしていたが,こ 変更で 2次元配列をそ ままコピーして更新に必要な処理を全配列要素に対して一度に行う.

    各コード 実行時間 (単位:時間)

    各コード 1スレッド実行に対する速度向上

    icc 最適化オプション O2 における実行結果を示す.

    ・単純にOpenMP化したコード(Ⅰ)でシリアル実行で2.7時間かかる

    ・32スレッド以降, 性能向上しなかった ・転置を行うコード(Ⅱ)で シリアル実行で2.6時間 ・ 32スレッド以降でも性能が向上し, 240スレッドで 約100倍 Speed-up

    ・2次元配列を一度に処理するコード(Ⅲ) で シリアル実行で約4.7時間と遅い ・240スレッドで コード(Ⅱ)と同等 向上

    また,コード(Ⅱ)で 緯度方向 計算時間短縮を目的に転置処理を実装したが, 実際 経度方向 計算時間が大幅に短縮される結果となった. ⇒単純な転置による2次元配列 全アクセスによりキャッシュヒットが起き, 2ステップ目以降 経度方向計算におけるメモリアクセスが高速化されたことが可能性

    1つとして考えられる.(今後,転置 アルゴリズムを変更して差が出るか検証)

    3つ コードで ,転置処理を挟んだも (Ⅱ)が最も高速に計算できる.

    IPSJ SIG Technical Report

    λ1 = u,λ2 = u+√

    gH,λ3 = u−√

    gH (8)

    (3) A

    A =

    ⎜⎝λ1 0 0

    0 λ2 0

    0 0 λ3

    ⎟⎠

    W = (v′, p, q), F = (0, gDx, gDx)

    Wn+1i −Wni∆t

    +AWni+1 −Wni−1

    2∆x

    −A∆tA(Wni+1 −Wni )−A(Wni −Wni−1)

    2∆x2

    =Fi+1 − Fi−1

    2∆x−A∆tFi+1 − 2Fi − Fi−1

    2∆x2(9)

    2.5

    1

    u, v

    NetCDF

    2 3

    MOST NetCDF

    [7]

    2

    6000m -4000m

    3

    40m -10m

    3. OpenMP

    MOST

    OpenMP

    1

    2 2581×28791 7.5×7.5 km2

    3

    •– 2 1

    1

    – 1

    9

    – 1

    •– 1

    – 9

    – 1

    1

    OpenMP

    c⃝ 1959 Information Processing Society of Japan 3

  • 8

  •  数値計算では倍精度演算が利用されている  仮数部 53 bit, 指数部 11 bit, 符号部 1bit

     「たいてい」は倍精度で十分 ○ 多くのアルゴリズムは倍精度であれば安定

     プログラムが容易  倍精度まではハードウエア実装 ○ 半導体プロセスの進化にしたがって高速化してきた ○ 最新のCPU ~ 384 GFLOPS (8 cores) ○ 最新のGPU ~ 2.5 TFLOPS ○ 単精度演算はこの倍の演算性能

    浮動小数点演算とHigh Performance Computing

  • 10

    様々な演算精度による効率的な数値計算

    単精度変数

    倍精度変数

    四倍精度変数 : ソフトウエア実行が必要

    半精度変数 : 特にモバイルプロセッサで利用される

  •  拡張された精度に最適な演算プロセッサを設計

    高精度演算専用プロセッサの開発

    Application of GRAPE9-MPX H. Daisaka et al.

    evaluation of the endpoint part in the numerical integration due to the limitation of the lengthof the exponent. In order to see the behavior of errors regarding to the length of the exponentbit, we plot the contribution from the endpoint part estimated by the minimum abscissa,xmin = φ(tmin), and present it in Fig.2.1 for this example. In double precision arithmeticwith 11-bit exponent, only the rectangular light blue area in Fig.2.1 can be computed and theminimum error becomes about 2−31 with xmin = 2−511 for η = 2−4. However, in quadrupleprecision with 15-bit exponent, the computable area is extended to the whole area and theminimum error becomes 2−64 with xmin = 2−8191 for η = 2−7 . In DCM we need the precisenumerical results for Eq.(2) with errors below 2−31 even for smaller η than 2−5 to get theprecise result after extrapolation in the limit of η → 0. Using 15bit-exponent we can evaluatethe integration for the smaller xmin and the smaller η. This example clearly shows that thelength of the exponent plays an important role in the numerical integration of loop integralswith an endpoint singularity.

    3 Overview of GRAPE9-MPX

    GRAPE9-MPX system, which is the latest system we have been developing ([4], [5], [6]), isan accelerator with multiple FPGA boards connected to a host computer, on which the MPprocessor is implemented. The MP processor contains PEs which form a SIMD processor. EachPE has a floating-point multiply unit and an add unit for quadruple, hexuple, and octuple-precision (hereafter MP4, MP6, and MP8) which can perform an operation in every clockcycle. The system includes not only hardware but also Goose compiler which provides simpleprogramming interface. For details, see Daisaka et al. [4] and Nakasato et al. [5].

    Figure 3.1: Schematic diagram (left) and picture (right) of GRAPE9-MPX.

    One of features of GRAPE9-MPX hardware is that the system consists of multiple FPGAboards by using a PCI Express extender board (G9MG from KFCR [10]). Figure 3.1 shows aschematic diagram of the basic system and a picture of the current GRAPE9-MPX system. Forthe FPGA board, we used Altera ArriaV board which has logic resources enough to implementmore than 10 PEs. Table 3.1 summarizes our current implementation and performance of MP4,MP6, MP8 per a single board. The peak performance of MP4 with 12 boards is 79.2 Gflops.

    In order to increase the performance and improve the efficiency when the number of FPGAboards increases, we have improved the GRAPE9-MPX system as follows. One is to use twoG9MG boards which enable us to integrate 16 FPGA boards. Another improvement is tooptimize I/O interface which makes data transfer from each board to a host computer inparallel. This is realized by utilizing OpenMP, and each thread created by OpenMP handleseach FPGA board. With this optimization, it can be expected to improve scalability in the

    4

    情報処理学会研究報告IPSJ SIG Technical Report

    p1

    p2

    p3

    p4

    x1

    x3

    x2

    x5x7

    x4

    x6

    図 4 6 次元積分となる 2 ループダイアグラム.

    である [11]. 性能評価には, この 6次元積分を二重指数関数

    図 5 図 4に対応する 2ループダイアグラム積分の式. ここで, ξ′i はξ′i = 1− ξi.

    型数値積分公式で数値計算する C++コードを用いた.

    演算の種類 演算数ADD 20

    SUB 9

    MUL 61

    DIV 1

    演算数の合計 91表 4 分点数単位における演算数の内訳.

    この 2 ループダイアグラム積分の演算種類毎の演算量は表 4 の通りである. この演算量 (91)とホスト計算機やGRAPE9-MPX での処理, データ転送に要した時間から,実効性能を求めた. これまでは, 各処理に要した時間は,Gooseが生成する.c ファイルに時間計測用の関数を挿入して計測していたが, Gooseを拡張し, オプションによって時間計測用が行えるようにした. MPプロセッサ内メモリからのロード/ストアや除算をニュートンラプソン法により求めることを考慮するとカーネルの実行命令数は 128である.演算時間は, 基本的に積分区間の分点数に依存する.

    GRAPE9-MPXのハードウェア特性を活かすために, 6次元積分のための演算ループは, それぞれ 3次元づつループ融合を行い, 2重ループ演算に置き換えられている. ここでは, 2重ループ演算の外側 (i-loop)の分点数 (Ni)を 218

    に固定し, 内側のループ (j-loop)の分点数 (Nj)を 24 から213まで 2倍づつ変えて, 異なる問題サイズの演算性能測定を行った. さらに, GRAPE9-MPX上の FPGAボードの枚数を 1, 2, 4, 8, 12枚と変えて計測を行った.

    4.2 実効性能

    CPU Intel Xeon 2687W(3.4GHz, 8 コア/16 スレッド)MB ASRock X79 Xtreme11

    MEM 64 GB (1600MHz ECC 付き)OS Scientific Linux 6.5

    表 5 GRAPE9-MPX のホスト計算機の仕様.

    表 5は性能評価を行ったシステムのホスト計算機の仕様である. 8ボードと 12ボードを使った計算の性能測定では, 測定毎での結果の揺らぎが大きいため, 同じ計算を 5回計測し, 各Nj で性能が最大となる結果を採用している. 揺らぎが大きい理由は,生成されるスレッド数が物理コア数(8)と同じかそれ以上になったときに,データ変換を含めたデータ転送の時間が大きく影響を受けるためである.1ボードの場合でNj を変えた場合の性能評価の結果を図

    6に示す. 今回扱った最大問題サイズ (Ni = 218, Nj = 213,総分点数 231)で実効性能は, 4倍精度で 2.29GFlops, 6倍精度で 1.12GFlops, 8倍精度で 0.589GFlops であった. これらの値は, 理論性能の約 36%である. 現在の GRAPE9-MPXのアセンブラが 1クロック 1演算に制限していること, 除算に 19命令必要なことやメモリからの転送命令を考慮すると, この数値は妥当なものである. 12ボードの場合の結果を図 7に示す. 最大問題サイズでの性能は,それぞれ, 4倍精度で 26.5GFlops, 6倍精度で 13.2GFlops, 8倍精度で 6.36GFlops であった.図 6や図 7から明らかなように, 問題サイズが小さいところでは実効性能は悪くなる. これは [4], [5]で指摘されているように, 問題サイズの小さいところでは GRAPE9-MPX上での計算時間が短くなる一方で,ホスト計算機と FPGAボード間の通信はそれほど変わらないため, 通信が実効性能を律速するようになるからである.今回の性能評価では, ボード枚数を増やしたときの性能の向上は, どの問題サイズにおいても, 概ね, 使用するボードの枚数に比例した. MP4の場合, 最大問題サイズでの 12ボードの性能は 1ボードの場合に比べて約 11.6倍であり,通信が大きく影響する最小問題サイズでも約 9.3倍となっている. この結果は, 我々の過去の結果から大きく改善されている点である. これはホスト計算機と各 FPGAボードの通信を並列化したことによる, 通信の最適化の効果のためである.この通信の最適化の効果は図 8で見ることができる. この図は 4ボードを用いた時の iデータ点あたりの計算時間を, 通信を並列化した場合と, これまでの実装のシリアルで通信をした場合を比較したものである. GRAPE9-MPX上での計算時間が律速する Nj が大きい領域では両者は変わらないが, 通信時間が律速する Nj が小さい領域では, 通信を並列化した現在の実装の方が計算時間が短くなり, 実効性能が改善される.

    c⃝ 1959 Information Processing Society of Japan 4

  • 12

    まとめ

     研究室(241-E) 所属学生: 大学院生 修士課程 1名 博士課程 3名(2016年度) 学部生 2 名(2016年度卒業研究) 3 名(2017年度卒業研究予定) + 4名まで

     研究テーマの例   HPCによる大規模宇宙シミュレーション  多倍長精度演算アルゴリズムの高速化  電力効率のよいプロセッサの設計   FPGA/ASICによる並列計算プロセッサの実現

    Web pages http://galaxy.u-aizu.ac.jp/note/ http://galaxy.u-aizu.ac.jp/PPL/