Cupyのガページコレクションについて

1,141 views
Skip to first unread message

Yokokawa Hideaki

unread,
Jul 3, 2018, 12:25:14 AM7/3/18
to CuPy Japanese User Group
グループ各位

お世話になっております

おかげさまで、cupyを入れることができました。
ありがとうございます

少しchainerを用いて、gpu計算でmnistを動かしてみましたが、何回か動かすと、syslogで、GPUが例外を吐きます。
(実際は、コマンドライン上にログを吐き、coreをdumpした旨のメッセージが出ます)
その後は、GPUは認識できない状態になります。
#そうなるので、当方、ubuntuをCLIで動かしています。

これはGPU内のメモリアロケートに起因すると推測されますが
cupy内ではガページコレクションされておられるのでしょうか?

#本体のPythonがガページコレクションの仕様になっていると思いますのでお聞きしている次第です。
#そもそもcudaがガページコレクションに対応していない?ということも考えられますが..

このあたりの知見がありましたら教えていただきたいと思います。
#cudaの仕様を見れば分かることかもしれません。

素人質問で申し訳ございません。
宜しくお願いいたします


Kenichi Maehashi

unread,
Jul 5, 2018, 2:08:01 AM7/5/18
to CuPy Japanese User Group
前橋です。

CuPyではGPUメモリの割当/解放をメモリプールが自動的に行いますので、
基本的にメモリ管理をユーザ側で意識していただく必要はありません。
エラーメッセージの内容を貼っていただけると助かります。
よろしくお願いいたします。

Yokokawa Hideaki

unread,
Jul 11, 2018, 12:14:39 AM7/11/18
to CuPy Japanese User Group
グループ各位

前橋様

お世話になっております
少しGPUドライバーの問題などがあったようで、そこを解決しておりました。

表記問題、
こちらで、計算したところ、やはりメモリアロケートと思しき問題がありましたので
調べていただければ幸いです

以下に、貼ります

 File "learn_cuda.py", line 83, in <module>
    main('c1OK.txt')
  File "learn_cuda.py", line 71, in main
    print(ct,loss.data)
  File "cupy/core/core.pyx", line 1644, in cupy.core.core.ndarray.__str__
  File "cupy/core/core.pyx", line 1691, in cupy.core.core.ndarray.get
  File "cupy/cuda/memory.pyx", line 372, in cupy.cuda.memory.MemoryPointer.copy_to_host
  File "cupy/cuda/runtime.pyx", line 255, in cupy.cuda.runtime.memcpy
  File "cupy/cuda/runtime.pyx", line 135, in cupy.cuda.runtime.check_status
cupy.cuda.runtime.CUDARuntimeError: cudaErrorLaunchFailure: unspecified launch failure

nvidia-smiを実行しますと、

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.37                 Driver Version: 396.37                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Quadro P6000        Off  | 00000000:65:00.0  On |                  Off |
|ERR!   61C    P0   ERR! / 250W |    190MiB / 24446MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1534      G   /usr/lib/xorg/Xorg                           143MiB |
+-----------------------------------------------------------------------------+

このようになりまして、その後、同じスクリプトを実行したところ以下のようになりました。

Traceback (most recent call last):
  File "learn_cuda.py", line 83, in <module>
    main('c1OK.txt')
  File "learn_cuda.py", line 31, in main
    cuda.get_device(gpu_device).use()
  File "cupy/cuda/device.pyx", line 118, in cupy.cuda.device.Device.use
  File "cupy/cuda/device.pyx", line 124, in cupy.cuda.device.Device.use
  File "cupy/cuda/runtime.pyx", line 183, in cupy.cuda.runtime.setDevice
  File "cupy/cuda/runtime.pyx", line 135, in cupy.cuda.runtime.check_status
cupy.cuda.runtime.CUDARuntimeError: cudaErrorUnknown: unknown error

unknown errorです。

実行スクリプトは、opencvで画像を取り入れ、numpy上に展開し、numpy上の行列を切り取り、numpyからcupy(from chainer import cuda)に渡しています。

いかがでしょうか?
宜しくお願いいたします

横川

Kenichi Maehashi

unread,
Jul 11, 2018, 1:52:09 AM7/11/18
to CuPy Japanese User Group
前橋です。

エラーメッセージの共有ありがとうございます。

> cupy.cuda.runtime.CUDARuntimeError: cudaErrorLaunchFailure: unspecified launch failure

ということなのでカーネル起動時のエラーのようです。
使用されているコードを共有していただければこちらでも再現確認してみますが、
こちらで再現できない場合は環境依存またはハードの問題の可能性が高いように思います。

dmesgにXidのメッセージが出ている場合はこちらのページもご参考ください。

よろしくお願いいたします。
Reply all
Reply to author
Forward
0 new messages