前提・実現したいこと
Anacondaを用いてpythonを使っています。この度GPUを用いた計算を行おうと思い、cupyをインストールしました。
こちらのサイトChainer 10.Cupy入門を参考にして、上から順にcupyの動作確認を行っていたのですが、参考ページのプログラム[12]が実行できず困っています。
途中までは計算できているので、根本的にcupyのインストールが失敗しているわけではないと思います。
個人的には「cupy.cuda.runtime.CUDARuntimeError: cudaErrorLaunchFailure: unspecified launch failure」が怪しいと思い多少調べて「メモリの確保量が足りない」などの原因の候補が上がったものの、どう対処すればよいかわからずじまいになっています。
発生している問題・エラーメッセージ
(環境名) C:\Users\ユーザ名>python num_cupy.py N= 10: 1.51558 sec N= 100: 0.00000 sec N= 1000: 0.06250 sec #ここまで出力結果、以下エラーコード Traceback (most recent call last): File "num_cupy.py", line 38, in <module> cp.cuda.Stream.null.synchronize() File "cupy\cuda\stream.pyx", line 207, in cupy.cuda.stream.Stream.synchronize File "cupy\cuda\runtime.pyx", line 353, in cupy.cuda.runtime.streamSynchronize File "cupy\cuda\runtime.pyx", line 356, in cupy.cuda.runtime.streamSynchronize File "cupy\cuda\runtime.pyx", line 145, in cupy.cuda.runtime.check_status cupy.cuda.runtime.CUDARuntimeError: cudaErrorLaunchFailure: unspecified launch failure Traceback (most recent call last): File "cupy\cuda\driver.pyx", line 193, in cupy.cuda.driver.moduleUnload File "cupy\cuda\driver.pyx", line 82, in cupy.cuda.driver.check_status TypeError: 'NoneType' object is not callable Exception ignored in: 'cupy.cuda.function.Module.__dealloc__' Traceback (most recent call last): File "cupy\cuda\driver.pyx", line 193, in cupy.cuda.driver.moduleUnload File "cupy\cuda\driver.pyx", line 82, in cupy.cuda.driver.check_status TypeError: 'NoneType' object is not callable Error in sys.excepthook: Original exception was:
該当のソースコード
python
1import numpy as np 2import cupy as cp 3import time 4 5def get_w_np(x, t): 6 xx = np.dot(x.T, x) 7 xx_inv = np.linalg.inv(xx) 8 xt = np.dot(x.T, t) 9 w = np.dot(xx_inv, xt) 10 return w 11 12def get_w_cp(x, t): 13 xx = cp.dot(x.T, x) 14 xx_inv = cp.linalg.inv(xx) 15 xt = cp.dot(x.T, t) 16 w = cp.dot(xx_inv, xt) 17 return w 18 19times_cpu = [] # CPUの計算時間保存用 20 21times_gpu = [] # GPUの計算時間保存用 22 23for N in [10, 100, 1000, 10000]: 24 cp.random.seed(0) 25 x = cp.random.rand(N, N) 26 t = cp.random.rand(N, 1) 27 28 # GPU 上での処理が終わるのを待機 29 cp.cuda.Stream.null.synchronize() 30 31 time_start = time.time() 32 33 # - - - 処理 - - - 34 w = get_w_cp(x, t) 35 # - - - - - - - - - 36 37 # GPU 上での処理が終わるのを待機 38 cp.cuda.Stream.null.synchronize() 39 40 time_end = time.time() 41 42 elapsed_time = time_end - time_start # 経過時間 43 44 print('N={:>5}:{:>8.5f} sec'.format(N, elapsed_time)) 45 46 times_gpu.append(elapsed_time)
試したこと
違うページに紹介されているgithubのコードを試してみても、途中までは計算できても「cupy.cuda.runtime.CUDARuntimeError: cudaErrorLaunchFailure: unspecified launch failure」のエラーが出てしまいました。
補足情報(FW/ツールのバージョンなど)
python:3.6.9
GPU:GeForce GTX 1060 6GB
CUDA:バージョン10.0
Cupy:cupy-cuda100
Tensorflow-gpu:2.0.0
numpy:1.17.4
fastrlock:0.4
当初はimport cupyもまともに動かず、numpyをインストールしなおし、このサイトを参考にfastrlockもインストールしなおして今に至ります。
Chainerはインストールしておらず、これを入れたら解決するかもしれないとは思うのですが、CUDAインストールで悪戦苦闘した私にとって、今のところ順調にできているこの状況を変えてしまうような行動は手が出せずにいます。
何か不足している情報などあれば言ってください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。