[[ASAP Top]] #contents ---- * Multi-GPU system with ExpEther [#r3e8633e] ExpEtherという仮想化技術により、ホスト(CPU)と複数のデバイス(GPU)を10Gb Ethernetで接続するシステムである (以下、Express systemとする)。 ExpEtherではPCIeのパケットをEthernetのフレームにカプセル化するということを行っている。 そのため、このシステムのユーザからはホストのマザーボードに直接GPUが挿さっているように見える。 GPU-BOXはこれのプロトタイプで、8個のExpEther NICと3000Wの電源が付いた箱のことを言う。 最大8台のGPUを搭載することができる。 このGPU-BOXは、2013年度卒の野村先輩(通称のむさん)から脈々と実機評価@NECで使われていた。 しかし、2015年2月から市販品のExpEther I/O拡張ユニット (N8000-1005) が使われるようになる。 基本的には入れ物が変わっただけで、ExpEther NICに変化は無いため、性能に差はない。 このシステムの売りは主に拡張性にある。 ExpEther I/O拡張ユニットをEthernet switchにつなぐだけでGPUの増設が簡単に行えるからである。 「この拡張性が既存のデータセンタに光をもたらす」とか云々言って論文のIntroductionが始まるのである。 ** 実機環境 [#ydb6ae69] - 2015/02/{02,09} |CPU|[[Intel Xeon E5-1650 @ 3.20GHz:http://ark.intel.com/ja/products/64601/Intel-Xeon-Processor-E5-1650-12M-Cache-3_20-GHz-0_0-GTs-Intel-QPI]]| |Host Memory|16GB| |OS|CentOS 6.3| |CUDA|Toolkit 5.5| |GPU|[[NVIDIA Tesla K20c:http://www.nvidia.com/object/tesla-servers.html]] x4| |ExpEther board|[[NEC N8007-104:http://support.express.nec.co.jp/workstation/detail.php?options=4948]]| |I/O expansion box|[[NEC N8000-1005:http://support.express.nec.co.jp/workstation/detail.php?options=5560]] x2| |Switch|[[Mellanox SX1012:http://jp.mellanox.com/page/products_dyn?product_family=163&mtag=sx1012]] x2| |Network|10Gb Ethernet x2| ** これまでにやってきたこと [#i69a1697] - のむさん -- 主に通信関連のマイクロベンチマークを取る -- GPU-BOXが複数ノード構成のマルチGPUシステムよりも優れていることを示す - 三石 -- CUDA版Linpackで評価を取る --- 意外と通信しまくっていたため性能が悪かった --- 結局excelにまとめただけでお蔵入り -- Graph500を用いてBFSの高速化 --- 通信量の削減と通信の隠蔽 ** 一般的なシングルホストマルチGPUシステム (conventional system) との違い [#s03e4407] ** 一般的なシングルホストマルチGPUシステム (common system) との違い [#s03e4407] ここでいうconventional systemとは、1つのマザーボードのPCIeスロットに複数のGPUが付いているシステムのことを指す。 ここでいうcommon systemとは、1つのマザーボードのPCIeスロットに複数のGPUが付いているシステムのことを指す。 基本的にconventional systemでできることはExpress systemでもできる。 つまり、conventional systemのコードがそのままExpress systemでも利用でき、正しく動くということ。 基本的にcommon systemでできることはExpress systemでもできる。 つまり、common systemのコードがそのままExpress systemでも利用でき、正しく動くということ。 ただし、そのまま利用できるからといって性能的に使い物になるとは限らない。 PCIeの帯域幅と10Gb Ethernetの帯域幅に大きな差があるためである。 - 10Gb Ethernetの帯域幅 = 1.25GB/sec (10Gbps) - PCIeの帯域幅 = 6GB/sec (50Gbps) (これはPCIeの世代やマシンの構成によって異なる) //このことを考慮していないコードが性能的に使い物にならないということは容易に想像がつくだろう。 そのため、高速化のためには通信量の削減や通信の隠蔽などが必要になる。 ** Express systemを使うときの注意事項 [#ye4d86b6] - [[Multi-GPU system with ExpEther/注意事項]] ** 実機評価@NECで覚えておくと便利なコマンド [#e1ebe920] - lspci -tvv: デバイスの確認 - nvidia-smi: デバイスの確認 - /usr/local/cuda/samples/1_Utilities/deviceQuery/deviceQuery: GPU IDの確認 - ifconfig: 実機評価@NECでデータのやり取りを行うのに使う。eth16かeth17で迷う $ ifconfig eth16 down $ ifconfig eth16 192.168.0.3 $ ifconfig eth16 up //** 参考 [#xa3de05f] //- [[PCI Express wikipedia:http://ja.wikipedia.org/wiki/PCI_Express]] //- [[パソコンの森:PCI-Expressについて:http://pcnomori.blog.fc2.com/blog-entry-116.html]] written by mits(2015-02-14)