日本語で失礼致します。
ChainerのGPUメモリ使用量に関してです。
現在、複数のPCにChainerをセットアップし動作の確認をしております。
その際にCNNを用いているのですが、同一GPU,同一ソフトウェア構成のPCで
同一のプログラムを実行したところ、GPUメモリの使用量に大きく差があるという事象が発生しました。
そのため、あるPCで動いたプログラムが別PCではメモリ不足で以下の様なエラーを出す場合があります。
Traceback (most recent call last):
(中略)
h = self.conv1(x)
File "/home/user/anaconda/lib/python2.7/site-packages/chainer/function.py", line 174, in __call__
outputs = self.forward(in_data)
File "/home/user/anaconda/lib/python2.7/site-packages/chainer/function.py", line 236, in forward
return self.forward_gpu(inputs)
File "/home/user/anaconda/lib/python2.7/site-packages/chainer/functions/connection/convolution_2d.py", line 222, in forward_gpu
y_mats[i] = W_mat.dot(col_mats[i])
File "/home/user/anaconda/lib/python2.7/site-packages/cupy/__init__.py", line 1039, in dot
return dot(self, b, out)
File "/home/user/anaconda/lib/python2.7/site-packages/cupy/linalg/product.py", line 72, in dot
return _tensordot_core(a, b, out, n, m, k, ret_shape)
File "/home/user/anaconda/lib/python2.7/site-packages/cupy/linalg/product.py", line 305, in _tensordot_core
handle = cuda.Device().cublas_handle
File "/home/user/anaconda/lib/python2.7/site-packages/cupy/cuda/device.py", line 97, in cublas_handle
handle = cublas.create()
File "/home/user/anaconda/lib/python2.7/site-packages/cupy/cuda/cublas.py", line 73, in create
check_status(status)
File "/home/user/anaconda/lib/python2.7/site-packages/cupy/cuda/cublas.py", line 60, in check_status
raise CUBLASError(status)
raise CUBLASError(status)
cupy.cuda.cublas.CUBLASError: CUBLAS_STATUS_NOT_INITIALIZED
Exception cupy.cuda.driver.CUDADriverError: CUDADriverError('CUDA_ERROR_ILLEGAL_ADDRESS: an illegal memory access was encountered',) in <bound method Module.__del__ of <cupy.cuda.module.Module object at 0x7ff75acf9e90>> ignored
(後略)
実行環境は以下となります。
使用GPU:
Titan X
PC間の差異:
チップセット:PC_1:X99
PC_2:Z170
他、メモリやCPUはほぼ同等
ソフトウェアバージョン:
Ubuntu 14.04
Chainer 1.3.2
CUDA 7.5
使用したネットワーク:
5層CNN,
画像サイズ:150前後
Batch数:約100000
GPUメモリ使用量:
minibatch数:20の場合
PC_1: 約6GB
PC_2: 約1GB
minibatch数:100の場合
PC_1: メモリエラーで落ちるため計測不能
PC_2: 約6GB
MNISTサンプルプログラムではGPUメモリ使用量はPC_1で190MB,PC_2で183MBと、大きくは変わりませんでした。
また、GPUメモリ使用量が使用可能範囲に収まっていれば正常に計算でき、結果もPC間で同等になっていることは確認しております。
現状十分な確認・検証が出来ていないためChainer依存の問題ではない可能性も高く恐縮ですが、
同一プログラムが環境により大きくメモリ使用量が変わるということは起こりえるでしょうか。