0

docker とは何か、使い方は独学で学んでいます。私はdockerを初めて使用するので、ここでいくつかの基本を学びたいと思っています。

nvidia-docker (インストール ガイドに従って) と tensorflow/tensorflow:nightly-gpu-py3 ( nightly-gpu、GPU (CUDA) コンテナーを開始) をコンピューターにインストールしました。

  • Docker: NVIDIA Docker 2.0.3、バージョン: 17.12.1-ce
  • ホスト OS: Ubuntu 16.04 デスクトップ
  • ホスト アーチ: amd64

私の問題

cifar10_multi_gpu_train ( tensorflowを使用して Python で記述) と単純なモンテカルロ シミュレーション (純粋な cuda で記述) の両方が実行に失敗します (致命的なエラー: curand.h がありません) fdm (純粋な cuda で記述) または単純な行列乗算 (python で記述) tensorflow を使用) コンテナー内で動作します (tensorflow/tensorflow:nightly-gpu-py3)。

CPU のみを使用するコード ( a3cなど) は、テンソルフローで正常に動作します。

GPU を使用する一部のコードは、エラー メッセージを返します。(コード使用時<curand.h>)

詳細

コンテナー (tensorflow/tensorflow:nightly-gpu-py3) で、モンテカルロ シミュレーションを実行すると、次のエラーが発生します。

fatal error: curand.h: No such file or directory


locate curand.h何も返しませんが、試してみるlocate curandと次のようになります。

/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcurand.so.9.0
/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcurand.so.9.0.176
/usr/share/doc/cuda-curand-9-0
/usr/share/doc/cuda-curand-9-0/changelog.Debian.gz
/usr/share/doc/cuda-curand-9-0/copyright
/var/lib/dpkg/info/cuda-curand-9-0.list
/var/lib/dpkg/info/cuda-curand-9-0.md5sums
/var/lib/dpkg/info/cuda-curand-9-0.postinst
/var/lib/dpkg/info/cuda-curand-9-0.postrm
/var/lib/dpkg/info/cuda-curand-9-0.shlibs

およびlocate cudnn.h:

/usr/local/lib/python3.5/dist-packages/tensorflow/include/tensorflow/core/util/use_cudnn.h

の場合locate cuda.h:

/usr/include/linux/cuda.h
/usr/local/cuda-9.0/targets/x86_64-linux/include/cuda.h
/usr/local/cuda-9.0/targets/x86_64-linux/include/dynlink_cuda.h
/usr/local/cuda-9.0/targets/x86_64-linux/include/dynlink_cuda_cuda.h
/usr/local/lib/python3.5/dist-packages/tensorflow/include/tensorflow/core/platform/cuda.h
/usr/local/lib/python3.5/dist-packages/tensorflow/include/tensorflow/core/platform/stream_executor_no_cuda.h


nvcc --version戻り値:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176


ホスト(コンテナの外側)で、試してみるとnvidia-docker run nvidia/cuda nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.30                 Driver Version: 390.30                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 00000000:03:00.0  On |                  N/A |
|  0%   48C    P8    22W / 250W |    301MiB / 11177MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 108...  Off  | 00000000:81:00.0 Off |                  N/A |
|  0%   51C    P8    22W / 250W |      2MiB / 11178MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

私がしたこと

  1. nvidia-docker、nightly-gpu-py3 を再インストールして#include <curand.h>--> 失敗しました

  2. nightly-gpu-py3 コンテナーで、cuda/cuda ツールキを再インストールして#include <curand.h>--> 失敗しました

  3. docker を使用しない他のマシンですべてのコードを実行しようとしましたが、cuda/tensorflow-gpu は既にインストールされています。彼らは正常に動作します。

nvidia-docker の概念とイメージ/コンテナーの機能を完全に誤解していると思います。

質問

  1. nvidia-docker をインストールしたら、nvidia-docker run <myImage>. Dockerイメージは、依存関係(PATH、パッケージなど)を保存して特定のコード(私の場合は、を使用するコード)を実行できることを意味していません<curand.h>か?(そしてコンテナは実際の仕事をしますか?)
  2. tensorflow/tensorflow:nightly-gpu-py3 イメージには CUDA Toolkit/cuDNN がありますか? nightly-gpu-py3の no<curand.h>は、nvidia-docker/nightly-gpu-py3 を不適切にインストール/ダウンロードしたことを意味しますか?
  3. コンテナ (nightly-gpu-py3) 内での CUDA ツールキットのインストールまたは cuda の再インストールが失敗しました (ここのプロセスに従いました)。<curand.h>コンテナー (nightly-gpu-py3) 内で使用できる方法はありますか?
  4. sudo nvidia-docker run -it --rm -p 8888:8888 -p 6006:6006 <image> /bin/bash指定されたイメージで新しいコンテナーを開始するコマンドです。それは問題になるでしょうか?

4

0 に答える 0