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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Chainer

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

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3858閲覧

cupyが機能していることを確認する方法

picker413

総合スコア18

Chainer

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

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/05/13 08:05

cupyが機能していることを確認する方法

Cupyの導入を検討していて、試しに手元の環境GTX-750でcupyのサンプルプログラムを動かしてみました。

Mnistを学習させるやつで学習は5分くらいで終了しました。ただ、実行中いつもと違うファンが動いている気はしたのですが、体感そんなに変化がなくちゃんと並列処理できているの疑問に感じました。

Numpyで行っていた行列計算もやらせたのですが、与えた行列が小さいためか、必ずcupyで実行したほうが数秒遅いという結果になりました。

nvidia-smiで確認した実行中のGPUの様子はこんな感じです。

+-----------------------------------------------------------------------------+ | NVIDIA-SMI 384.130 Driver Version: 384.130 | |-------------------------------+----------------------+----------------------+ | 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 750 Ti Off | 00000000:03:00.0 On | N/A | | 22% 32C P8 1W / 38W | 226MiB / 1995MiB | 6% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 1075 G /usr/lib/xorg/Xorg 130MiB | | 0 2553 G compiz 89MiB | | 0 3387 G unity-control-center 1MiB | +-----------------------------------------------------------------------------+

どうすればちゃんと動いているって確証を得られますが、まだ導入するか決めかねている(扱うでデータが小さくバッチ化していないので恩恵が・・・)のでサックとわかる方法が知りたいです。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/05/13 09:23

GPUで動作していることは実行中に`nvidia-smi -l`とかを見てればなんとなく分かると思います。 ちゃんと確認するなら/proc/{pid}/mapにlibcuda.soとlibcudnn.soがあるかもしれません。 パフォーマンスが出ることを確認したいのなら、100万*100万くらいの行列で何かしらelement-wiseな計算をやれば充分体感できると思います。 ただ、mnistで体感できないのはちょっと気になりますね。
picker413

2019/05/14 04:21 編集

サンプルプログラムでnvidia-smi -lを試したところfunもmemoryも変化がなくproocessの欄も実行前と実行後に変化がありませんでした。 ご指摘通り大きめのランダムの行列をnumpyとcupyで計算したところ確かに積の計算が早くなりprosessにもjob番号が出てきたのでcupyの問題というよりはサンプルコードの問題だと思います。 mnistを使う予定はないのでこれで良しとします。 ありがとうございました。
guest

回答1

0

自己解決

python

1import numpy as np 2import chainer 3import cupy as cp 4import time 5 6n = 2000 7t1 = time.time() 8a = np.random.rand(n,n) 9b = np.random.rand(n,n) 10np.dot(a,b) 11t2 = time.time() 12a = cp.random.rand(n,n) 13b = cp.random.rand(n,n) 14cp.dot(a,b) 15t3 = time.time() 16print ('np:',t2-t1) 17print ('cp:',t3-t2)

np: 0.6335668563842773
cp: 0.0008411407470703125

2000*2000行列の積で速度が出ているので良しとしました。
サンプルプログラムではGPUは動かなかったのですが、cupyとは別に問題があると思ってます。

投稿2019/05/14 04:24

picker413

総合スコア18

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問