15
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS EC2 p2.16xlarge でCUDAを使用する際に16GPUは同時に使用できない

Last updated at Posted at 2016-10-30

注意 : これを書いている時点の情報です。

普段はTensorFlowで将棋を指す取り組みをしています。マルチGPU環境が欲しいためAWS EC2 p2.16xlargeインスタンスを試しました。

結論としてはp2.16xlargeはK80(GPU x2) x8で16GPUを搭載しているが1プロセスで使用できるGPUの数が8基に制限されるため使いにくいということになります。カジュアルな用途では p2.8xlarge までにとどめておくのが無難だと思います。

やったことと起きたこと

  • p2.16xlarge に Ubuntu 16.04 をインストールし nvidia ドライバ、CUDA、TensorFlowをインストールした
  • TensorFlowを使用した自作プログラムを動かそうとした
  • CUDA_ERROR_TOO_MANY_PEERS を含むエラーが発生してプログラムが動かなかった( tf.Session() でエラーが発生する )

16GPUを同時に使用できない

参考リンク

何が起きているか

どうやら9基以上のGPUを1つのプロセスで使おうとするとGPU間のP2P通信が失敗するようです。CUDA toolkitに同梱されているテストプログラム simpleP2P でエラーが発生しなくても実プログラムでエラーになります。参考リンクのnvidiaの掲示板では TensorFlow と Torch でエラーが出ています。これはハードウェアの制限のようです。

それでどうするの?

掲示板では CUDA_VISIBLE_DEVICES を設定して1プロセスが使用するGPUを8基に制限した上で同一マシンに8基のGPUを使用するプロセスを2つ作りクラスタ化する方法が提案されています。自分は試していないので上手くいくかどうかはわかりません。

自分はクラスタ化をまだ身につけていないので p2.8xlarge を使用して1プロセスマルチGPUで製作していこうと思います。p2.8xlargeでは8GPUですので自作プログラムが正常に動作しました。またp2.8xlargeの環境作成では P2インスタンスにpip3でTensorFlowを入れる を参考にしました。今まではグラフィクスドライバからインストールしていましたがdpkgaptでCUDAをインストールするだけでGPUが使用できるようになったようです。

15
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?