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

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

ただいまの
回答率

90.52%

  • Python 3.x

    6342questions

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

  • Windows 10

    941questions

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

  • Chainer

    142questions

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

cuDNN の役割について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,127

GuielNo4

score 54

前提・実現したいこと

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点、ご存知の方がいらっしゃいましたらご教授願います。
よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

知りたいこと「その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 21:11

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

    キャンセル

  • 2017/12/19 21:13

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

    キャンセル

  • 2017/12/19 21:15

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

    キャンセル

  • 2017/12/20 00:23

    動き的にはcupy自体は入ってそうに見えたんですよね(インストール成功してないと、importでコケるので)
    おそらく、お使いのGPU等の環境に起因するエラーなのかな、と思いました。
    たとえば、GTX1080TiとかはCUDAのバージョンが違うとエラーが出たり、、、、なんて報告もありましたし。別質問にされるとのことなので、その際にはCUDAのバージョン等まで言及すると、回答が得られるかもしれません。

    cudnnenvはご紹介いただき初めて知ったんですが、やってる事自体は「cuDNNをダウンロード→該当フォルダに格納、を肩代わりしてくれてる」なので、適切なバージョンを選んで入れていれば、必要ではない気がします。ただ、tensorflowみたいにcuDNNのバージョンまで指定される場合にすごく便利そうです。
    情報ありがとうございました。

    キャンセル

  • 2017/12/21 16:15

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

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python 3.x

    6342questions

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

  • Windows 10

    941questions

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

  • Chainer

    142questions

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