質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

4679閲覧

cuDNN の役割について

GuielNo4

総合スコア88

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/12/17 12:26

###前提・実現したいこと
chainer の動作環境構築に必要な cuDNN の役割を理解したいので、
後述の2点の質問を解消したいと考えております。
アドバイスよろしくお願い致します。

###発生している問題
http://tadaoyamaoka.hatenablog.com/entry/2017/10/28/230738
http://uluhashi.hatenablog.jp/entry/2017/12/11/124407
https://qiita.com/mitmul/items/1e35fba085eb07a92560
http://anbalab.com/python/windows10chainercuda8

これらのページを参照しながら、
windows10 + python + CUDA + Chainer with GPU の環境構築をおこなっているのですが、
うまくいきません。
(train_mnist.py で -g 0 を指定して GPU を利用しようとすると、cupy.cuda.curand.CURANDError: CURAND_STATUS_LAUNCH_FAILURE が発生してしまいます。)

そもそも環境構築で記載内容の作業は行うのですが、
結局何を行っているのか理解していないことが原因と考え、
疑問に思っていることをここで聞いたほうがいいと思い質問することにしました。

###知りたいこと「その1」
ググってもよくわからないのが「cuDNN」で、

  1. \NVIDIA GPU Computing Toolkit\CUDA\v9.1 にコピーしたヤツ
  2. pip install cupy の cupy.cudnn

の2つについて、
「1) は python の環境でも必要なものなのか」
「1) が入っていれば 2) は必要ないものなのか」
というように、1)と2) がそもそも何なのか、どうゆう関係にあるのか、
どなたかご存知の方がいらっしゃいましたらご教授願います。

###知りたいこと「その2」
現環境の数値情報は以下の通りで、
Cuda compilation tools, release 9.1, V9.1.85
python chainer_version.py -> 3.2.0
python -V -> Python 3.6.3 :: Anaconda custom (64-bit)

  1. は include にあるヘッダファイルの記述から、7.0.5 であることは分かったのですが、
  2. の cudnn は cupy.cudnn なので、そもそもバージョンを調べるとかゆう概念で、環境構築が「正しい」「間違っている」と判断するものではない気がして質問することにしました。

そもそも、python環境に必要な cuDNN は cupy 以外に何か別なモノが必要だったりしますでしょうか?
というのも「cudnnenv」というものを見つけたので試したのですが、
「Unsupported platform: "win32"」とwindows環境では利用できなかったのですが、
そもそも「このようなものがある」ということは
「cupy のインストールだけではダメということなのでは?」と考えた次第です。

以上2点、ご存知の方がいらっしゃいましたらご教授願います。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

知りたいこと「その1」
「1) は python の環境でも必要なものなのか」

「1) が入っていれば 2) は必要ないものなのか」

まず、上記ですが、前者の

「1) は python の環境でも必要なもの」

になります。
CUDAはGPGPUのプラットフォームであり、これを使うことでGPUを使った並列計算が可能になるためそれに向いたタスク(画像処理関連とか)の高速化が可能になります。
通常CUDAはそれ用にコーディングしたソースコード(基本C言語を拡張したもの)をnvccというCUDAに付属するコンパイラで処理して動作させています。
cuDNNはCUDAの機能を使ってDNNで用いる計算を高速化するための各種APIを提供する拡張ライブラリです。これをインストールすることで、各種畳み込み演算等を高速に動作させるAPIが使用可能になります。

次にcupyですが、chainerと言うか開発元のPFNの方の言い方を借りると、「CUDA上で演算を行うnumpyのサブセットライブラリ」になります。

CuPy解説

このcupyは中で、CUDAの提供する各種APIを叩くことでGPU上での計算を行います。
なので、cupy自体はCUDAが適切にインストールされており、使えることが使用するに当たっての前提条件となります。
これと同様の話で、cupy.cudnnの中で提供される各処理はCUDAのcuDNNライブラリが提供するAPIのpythonラッパーの位置づけになるため、実際の中の処理はcuDNNライブラリが提供するAPIの中で行われます。

長くなりましたが、

「CUDAのcuDNNライブラリで提供されるAPIをpythonから叩くので、cupy.cudnnの処理ではcuDNNライブラリ自体が必要になる」

と認識してもらえればいいと思います。

知りたいこと「その2」

こちらは、イマイチ何処が聞きたい部分なのかが不明瞭なのですが。。。

そもそも、python環境に必要な cuDNN は cupy 以外に何か別なモノが必要だったりしますでしょうか?

上記、一文でいいですか??

cupyのインストールと言う観点において必要なのは、以下のライブラリが適切にインストールされていることになります。

  • CUDA
  • cuDNN (現行は必須なのかどうかを把握してませんが、入れたほうが高速です)

最近はwindowsで環境を立ち上げてないので、正確でない部分があるかもしれませんが、現状のchainerのインストールとしては

  1. CUDAのインストール
  2. cuDNNライブラリの追加
  3. cupyのインストール
  4. chianerのインストール

の順に行う必要があります。
cupy自体のビルド&インストールがうまく行っているようなら、ドライバやCUDAのバージョン等の確認も必要になるかもしれません。

投稿2017/12/19 10:08

diningyo

総合スコア379

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GuielNo4

2017/12/19 12:11

回答ありがとうございました。 「その1」のご教授ありがとうございました。 「cupy.cudnnはラッパー」ということでスッキリしました。ありがとうございました。
GuielNo4

2017/12/19 12:13

「その2」に関しましては、CPUでは動作するのですが、GPUを指定するとエラーになるため 質問させて頂きました。
GuielNo4

2017/12/19 12:15

ご指摘の通り 3.cupyのインストール が正しく行えていないのでは?と考えた次第です。 https://qiita.com/mitmul/items/1e35fba085eb07a92560 このページのように cudnnenv なるものが必要なのかなと... 「その2」はまた別の質問にしたいと思います。 アドバイスありがとうございました。 とても助かりました。
diningyo

2017/12/19 15:23

動き的にはcupy自体は入ってそうに見えたんですよね(インストール成功してないと、importでコケるので) おそらく、お使いのGPU等の環境に起因するエラーなのかな、と思いました。 たとえば、GTX1080TiとかはCUDAのバージョンが違うとエラーが出たり、、、、なんて報告もありましたし。別質問にされるとのことなので、その際にはCUDAのバージョン等まで言及すると、回答が得られるかもしれません。 cudnnenvはご紹介いただき初めて知ったんですが、やってる事自体は「cuDNNをダウンロード→該当フォルダに格納、を肩代わりしてくれてる」なので、適切なバージョンを選んで入れていれば、必要ではない気がします。ただ、tensorflowみたいにcuDNNのバージョンまで指定される場合にすごく便利そうです。 情報ありがとうございました。
GuielNo4

2017/12/21 07:15

>その際にはCUDAのバージョン等まで言及すると、回答が得られるかもしれません。 アドバイスありがとうございます。 もう少し関連ドキュメントを探読して問題点を推測後、次回の質問を行いたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問