低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
Upcoming SlideShare
Loading in...5
×
 

低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について

on

  • 1,172 views

今日のHPCにおいて急速な普及を見せているGPUコンピューティングは基本的に, ...

今日のHPCにおいて急速な普及を見せているGPUコンピューティングは基本的に,
1.CPUメモリからGPUメモリに演算データを転送する
2.GPU上の大量の並列プロセッサ上で同一のプロセスを起動して演算データを処理する
3.GPUメモリからCPUメモリに演算結果を転送する
というプロセスを通じて演算を行う.
単一のGPUによる処理能力では不足がある場合,多数のGPUを並列に使うこととなるが,そのとき演算データを転送するバス転送能力もまた並列的に確保する必要があり,CPUと主メモリもまた並列化することとなる.その際,CPU間のメモリ転送を行うMPIライブラリと高速のインターコネクトも同時に必要となる.
代表的な大規模並列GPUコンピュータである東京工業大学のTSUBAMEではインターコネクトにInfiniBandを用いている[2].InfiniBandはその低遅延性と広帯域の伝送能力から,HPC領域においては最適なインターコネクト技術と認知されている.しかし,特にIPベースの既存の装置・ソリューションとの相互接続において弱点がある.
この論文においては,インターコネクト技術として10Gb Ethernet,中でも特に低遅延性で知られるSolarflare[3]社のネットワークインターフェイスを用いることとする.
その上で以下の点をそれぞれ検討して最適な設定や手法を割り出し,結果として得られる性能を評価する.

Statistics

Views

Total Views
1,172
Views on SlideShare
1,170
Embed Views
2

Actions

Likes
3
Downloads
7
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について 低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について Presentation Transcript

    • 低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について 株式会社エルザジャパン 鈴木篤志
    • なぜ  10Gb  Ethernet  なのか?InfiniBand  ではなく?•  MPI通信の基本性能はInfiniBandが優勢•  QDRで3〜~3.5GB/s,  FDRで5.0〜~5.4GB/s•  10GbE  2ポートNICを使った場合で合計  2.5GB/s•  広範な10GbEインフラストラクチャーとの相互接続•  NAS/SAN・VDI・GbE/WiFi・Campus,  Metro〜~Global  WAN•  HFT等で発達しているFPGA  NIC技術•  SoC化の発達  (ARM  Cortex  /  intel  Atom)•  InfiniBandに匹敵する遅延性能・メッセージレートを達成
    • 10GbE  ポートフォリオSolarflare  サーバーアダプター  /  OpenOnload3ラインレート性能を持った多種のNICと,ユーザー空間で動作する低遅延オープンソースソフトスタック
    • ⾦金金融業界で⽤用いられているFPGA  NIC顧客からの発注/約定通知証券取引所との発注/価格取得CPUによる複雑な処理FPGA上にスタックおよびアプリを実装 CPU・I/Oバスを通過せずFPGAの上だけでアプリケーションを動作させるHFTの10GbE技術
    • SolarflareのFPGA  NICApplication  Onload  Engine  と  FDK5AOE ユニバーシティプログラム•  HW+開発キットを実効的な教育向けディスカウント価格で提供•  世界中の大学・教育研究機関に所属する教職員・学生を対象•  OpenOnload® 対応OpenOnload対応のASIC NICとのハイブリッドで,特定のパケットに対してFPGAアプリの動作が可能
    • 10GbE  /  40GbE  ポートフォリオGnodal  GSシリーズスイッチGS7200 GS4008 GS001872×10GbE SFP+ 40×10GbE SFP+8×40GbE QSFP18×40GbE QSFPポート数 ホップ数 Gnodal10GbEGnodal40GbE72 1 150ns 150nsinterswitch+1 66ns 66ns720 * 3 282ns 282ns6480 * 5 414ns 414nsスイッチ間66nsの遅延と, マルチパス対応トポロジー,64Kノードまでのスケーラビリティ
    • GnodalスイッチASIC同士により自動的に経路制御・輻輳回避Gnodal  ファブリック  Ethernetでエッジを構成!
    • 10GbE  関連製品ポートフォリオBOSTON Viridis•  Boston Viridis –  電⼒力力効率率率に⾮非常に優れたサーバーの誕⽣生–  Calxeda EnergyCore プロセッサーを採⽤用•  Cortex  A9  1.1〜~1.4GHz  4コア  の  EnergyCore  ECX-‐‑‒1000•  1枚のサーバーモジュールに4基のEnergyCoreプロセッサを搭載•  2Uサイズのサーバー筐体に48基のEnergyCoreプロセッサを集約  –  192コア–  各EnergyCore SoCには4GBまでのDRAMを接続可能–  各々のSoCが10GbEスイッチを内蔵しメッシュ型のトポロジーをシャーシ内に構成
    • BOSTON  Viridisシステムボードによるファブリックシャーシ内でメッシュトポロジーの10GbEファブリックを実現。外部スイッチ不要。
    • EnergyCore  SoCCortex  A15世代での向上点メモリバス幅が64bit→128bit,アドレス幅が40bitに最⾼高動作クロックが1.4GHzから2.5GHzに倍精度度浮動⼩小数点演算性能1.5倍前後向上HPCで求められる浮動小数点演算性能ではトータル2.5〜3倍の性能向上見込み
    • PhoronixによるCortex  A15性能評価FFTE  v5.0  –  N=64,  1D  Complex  FFT
    • InfiniBandによるGPUクラスタの例例CPU MemoryForCUDAmemcpyInfiniBandFabric IB転送 CPU MemoryForCUDAmemcpy多重ピンロック を回避する必要
    • NVidia  GPU  DirectRDMA転送とGPUへのDMA転送の衝突を回避
    • GPU  Direct  の現状  CPU MemoryForCUDAmemcpy  CPU MemoryForCUDAmemcpyInfiniBand Fabric IB転送が可能に GPU-DirectP2P ※同⼀一IOH内のみ
    • GPU  Direct  P2Pの制約異異なるIOH下のGPU間での直接転送は出来ない
    • Intel® QDR-80 ソリューションでGPU・InfiniBand・NUMAのAffinity問題を⼀一気に解決QPI 2 QPI 1 • Xeon E5-2600より、PCIeコントローラーがオンチップ化。 • 2ソケットサーバーではリモートソケット参照が発生。(遅延 1.16us → 1.71us)• QDR-80により、CPUソケット数分のIBを用意すれば、リモートソケット参照は回避可能• 遅延およびInterruptハンドリング性能を劇的に改善• Intel® Data Direct I/O (DDIO)のメリットを享受• Intel InfiniBandスタックは多重ピンロック問題の回避が容易(Send/Recv)MPI bufferForCUDAmemcpyMPI bufferForCUDAmemcpy
    • QDR-80を実現しているPSMの動作QPI 2 QPI 1 Rank 0 Rank 1 Rank 1QPI 2 QPI 1 Rank 2 Rank 3 Rank 3NUMAAffinityを確保するようプロセスを移動する NUMAAffinityを確保するようプロセスを移動する
    • Solarflare 10GbE NIC と  OpenOnload でQDR-80により近い構成を構築QPI 2 QPI 1 • Xeon E5 モデルのサーバーを採用• 1µs前後の遅延が生じるQPI経由の通信を極力回避• CPUソケットからローカルなSolarflare NICの特定ポートを選択する• たとえばopenmpiではrankfileにより各rankが動作するCPUコアを指定できるので自らのrank番号により使用すべきIPアドレスを特定できるMPI bufferForCUDAmemcpyMPI bufferForCUDAmemcpy
    • GPUによる⾏行行列列演算•  問題を単純化し、32k×32kの⼆二次元⾏行行列列の積の演算  M×N=Pを⾏行行う•  M,  N⾏行行列列を32×32のタイルに分割し、タイル対ごとに積を求め、結果を⾜足し合わせてPのタイルとする。–  M⾏行行列列の縦y番⽬目横i番⽬目と、N⾏行行列列の縦i番⽬目横x番⽬目の積を求める–  iを1〜~kの範囲で繰り返し、各々で求まるPxy(i)を⾜足し合わせる1blockが受け持つ部分行列
(タイル)•  M,  N⾏行行列列の必要な部分をGPUのGlobal Memoryに転送•  各blockは担当するタイルをShared  memoryに転送し、積を求め、結果をGlobal  memoryにストアする•  Global  memory上の結果のタイルを⾜足し合わせる
    • GPUへのデータ転送のパイプライン化(1) 未転送の場合、32x32のタイルを1024個転送することで一つの行をMPI転送する。 (2) 同様に未転送の場合、32x32のタイルを1024個転送することで一つの列をMPI転送する。 (3) GPUに演算元データを転送する (4) GPUによる演算を行うカーネル関数を起動する (5) 演算結果タイルのデータをGPUから転送する (6)  演算結果タイルのデータをMPI転送する この一連のを2列のパイプラインを組んで並列的に動作させる。
    • Solarflare  OpenOnloadホストスタックユーザー空間で動作する仕組み•  割り込みはデフォルトで禁⽌止されている•  次のようなstack_̲poll関数を呼び出して、受信されている信号を得るstack_poll() {reprime_hw_timer();handle_network_events();refill_rx_ring();refill_tx_ring();process_timers();}•  実際のソケット関数  recv(),send(), poll(), select() から必要に応じ  stack_poll() 関数が呼ばれる
    • OpenOnloadのチューニングOpenOnloadのチューニングパラメータとして以下のような値を/usr/libexec/onload/profiles/latency に設定する:onload_set EF_POLL_USEC=100000onload_set EF_TCP_FASTSTART_INIT 0onload_set EF_TCP_FASTSTART_IDLE 0 EF_POLL_USEC: 割り込みでなくspinningで通信待ちを指定数値のµ秒間行う EF_TCP_FASTSTART_INIT/IDLE: 追加的なACK発行を行う設定 アプリケーションがOpenOnloadスタックを用いるよう指定するには次の二つの方法がある•  onload <プログラムパス> …•  /etc/profile.d/openonload.sh などで LD_PRELOAD 環境変数を設定する•  export LD_PRELOAD=libonload.so
    • OpenMPIのPTLとしてTCPを指定しOpenOnloadに適したチューニングを⾏行行うOpenMPIの起動オプションとして以下のようにTCPを指定する % onload –profile=latency mpirun --mca btl tcp,self …TCP使用時の代表的なチューニングパラメータ MCA btl: parameter "btl_tcp_free_list_num" (current value: "8")MCA btl: parameter "btl_tcp_free_list_max" (current value: "-1")MCA btl: parameter "btl_tcp_free_list_inc" (current value: "32")MCA btl: parameter "btl_tcp_sndbuf" (current value: "131072")MCA btl: parameter "btl_tcp_rcvbuf" (current value: "131072")MCA btl: parameter "btl_tcp_endpoint_cache" (current value: "30720")MCA btl: parameter "btl_tcp_exclusivity" (current value: "0")MCA btl: parameter "btl_tcp_eager_limit" (current value: "65536")MCA btl: parameter "btl_tcp_min_send_size" (current value: "65536")MCA btl: parameter "btl_tcp_max_send_size" (current value: "131072")MCA btl: parameter "btl_tcp_flags" (current value: "122“)MCA btl: parameter "btl_tcp_priority" (current value: "0")
    • OpenMPIのPTLとしてTCPを指定しOpenOnloadに適したチューニングを⾏行行うOpenMPIのスタックとしてOpenOnloadを用いるときのチューニングパラメータ[/etc/openmpi-x86_64/openmpi-mca-params.conf] btl_tcp_if_include = eth4,eth5 btl_tcp_if_exclude = lo,eth0,eth1 btl_tcp_bandwidth = 12500 btl_tcp_latency = 1
    • InfiniBandとの⽐比較  –  レイテンシー25message size
(bytes) Solarflare
port1 Solarflare
port2 Mellanox IB 0 4.21 4.19 1.22 1 4.35 4.34 1.15 2 4.35 4.35 1.15 4 4.34 4.34 1.15 8 4.35 4.34 1.18 16 4.35 4.35 1.18 32 4.39 4.39 1.21 64 4.45 4.45 1.3 128 4.62 4.62 1.96 256 4.92 4.94 2.12 512 5.53 5.6 2.42 1024 6.6 6.66 3.03 2048 8.16 8.26 4.15 4096 10.01 10.28 5.1 8192 14.28 14.6 7.19 16384 22.49 28.39 9.95 32768 40.45 49.09 15.03 65536 82.11 104.5 25.31 131072 96.01 123.38 45.73 262144 192.61 222.62 86.54 524288 418.5 452.02 168.04 1048576 880.6 949.9 331.42 2097152 2037.82 2048.71 657.8 4194304 4068.6 3859.8 1311.4 110100100010000Solarflareport1Solarflareport2Mellanox  IBレイテンシーにおいてはInfiniBandの性能が非常に高い
    • InfiniBandとの⽐比較  –  帯域 26message size
(bytes) Solarflare
port1 Solarflare
port2 Mellanox IB 1 1.41 1.37 1.84 2 2.84 2.76 3.68 4 5.67 5.6 6.89 8 11.5 11.24 27.39 16 22.87 22.43 53.67 32 45.83 44.74 102.97 64 88.79 87.46 199.23 128 174.97 171.66 354.33 256 337.04 335.74 639.49 512 618.15 620.38 1103.31 1024 975.82 1031.24 1764.64 2048 1086.39 1139.46 2360.89 4096 1155.17 1173.95 2755.94 8192 1164.02 1168.38 2926.22 16384 1166.13 1178.85 3051.34 32768 1178.9 1176.36 3137.6 65536 1171.97 1173.63 3175.34 131072 1178.65 1174.27 3194.5 262144 1177.23 1174.83 3202.03 524288 1180.2 1169.95 3208.58 1048576 1175.45 1175.67 3211.02 2097152 1174.35 1174.56 3211.92 4194304 1078.1 1077.61 3212.26 0500100015002000250030003500Solarflareport1Solarflareport2Mellanox  IBSolarflare NIC 2ポート同時使用でもラインレートの帯域が得られ、各コアに1ポート割り当てられる
    • ご⽤用命は…•  エルザジャパンにお問い合わせください。–  Solarflare製品の⽇日本国内のVARです。–  技術部  (担当:鈴鈴⽊木)  –  Tel. (03) 5765-7391–  E-mail: hpc@elsa-jp.co.jp–  URL: http://www.elsa-jp.co.jp•  プレゼンテーション、デモ、および検証作業のご協⼒力力に伺います。–  ターゲットアプリケーション、評価の規模などをあらかじめ教えていただければ、Solarflare と連携し、最適な構成を⽤用意して検証いただけるようセットアップします。–  技術的質問・改修のご要望など、Solarflare とのやりとりはすべてエルザジャパンにてご対応いたします。
    • 28