rtx2080tiと​matlab2019​bでのdeep learningにお​けるCUDA_ERR​OR_ILLEGAL​_ADDRESS

2 vues (au cours des 30 derniers jours)
Hironobu Fujioka
Hironobu Fujioka le 8 Oct 2019
Commenté : michio le 16 Oct 2019
研究でdeep learning toolbox, parallel computing toolboxを使用して
画像のノイズ除去の研究を行っています。
このCNN層を用いたノイズ除去を行っているのですが、cudaエラー CUDA_ERROR_ILLEGAL_ADDRESS
がコマンドウィンドウに出力され、
研究が進みません。
GPUはrtx 2080ti
display driverは436.48
cuda driverは10.1
cuDNNはv7.6.2.24を用いています(最新のバージョン以外も試していますが、同じエラーが出ます。)
改善策を教えていただきたいです。
使用しているプログラムは以下の通りです。
なお、XTrain, YTrainは4-Dの形で格納しています。
layers = [ ...
imageInputLayer([inputSize Timeblock 1],'Name','input')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv1')
batchNormalizationLayer('Name','BNorm1')
reluLayer('Name','relu1')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv2')
batchNormalizationLayer('Name','BNorm2')
reluLayer('Name','relu2')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv3')
batchNormalizationLayer('Name','BNorm3')
reluLayer('Name','relu3')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv4')
batchNormalizationLayer('Name','BNorm4')
reluLayer('Name','relu4')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv5')
batchNormalizationLayer('Name','BNorm5')
reluLayer('Name','relu5')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv6')
batchNormalizationLayer('Name','BNorm6')
reluLayer('Name','relu6')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv7')
batchNormalizationLayer('Name','BNorm7')
reluLayer('Name','relu7')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv8')
batchNormalizationLayer('Name','BNorm8')
reluLayer('Name','relu8')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv9')
batchNormalizationLayer('Name','BNorm9')
reluLayer('Name','relu9')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv10')
batchNormalizationLayer('Name','BNorm10')
reluLayer('Name','relu10')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv11')
batchNormalizationLayer('Name','BNorm11')
reluLayer('Name','relu11')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv12')
batchNormalizationLayer('Name','BNorm12')
reluLayer('Name','relu12')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv13')
batchNormalizationLayer('Name','BNorm13')
reluLayer('Name','relu13')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv14')
batchNormalizationLayer('Name','BNorm14')
reluLayer('Name','relu14')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv15')
batchNormalizationLayer('Name','BNorm15')
reluLayer('Name','relu15')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv16')
batchNormalizationLayer('Name','BNorm16')
reluLayer('Name','relu16')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv17')
batchNormalizationLayer('Name','BNorm17')
reluLayer('Name','relu17')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv18')
batchNormalizationLayer('Name','BNorm18')
reluLayer('Name','relu18')
convolution2dLayer(3,64,'Stride',[1 1],'Padding','same','Name','Conv19')
batchNormalizationLayer('Name','BNorm19')
reluLayer('Name','relu19')
convolution2dLayer(3,1,'Stride',[1 1],'Padding','same','Name','Convfin')
regressionLayer('Name','out')]
lgraph = layerGraph(layers);
options = trainingOptions('adam', ...
'InitialLearnRate',0.0003,...
'MaxEpochs',20, ...
'MiniBatchSize',12, ...
'Shuffle','every-epoch', ...
'L2Regularization', 0.004,...
'ExecutionEnvironment','auto',...
'OutputFcn',@(info)savetrainingplot(info),...
'ValidationData',{XValidation,YValidation}, ...
'ValidationFrequency',250, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropFactor',0.5, ...
'LearnRateDropPeriod',4, ...
'Plots','training-progress')
net=trainNetwork(XTrain,YTrain,lgraph,options);
エラー文は以下の通りです。
警告: CUDA 実行中に予期しないエラーが発生しました。CUDA エラー:
CUDA_ERROR_ILLEGAL_ADDRESS
> In nnet.internal.cnn/Trainer/train (line 87)
In trainNetwork>doTrainNetwork (line 260)
In trainNetwork (line 168)
In network_full (line 2092)
エラー: trainNetwork (line 170)
CUDA 実行中に予期しないエラーが発生しました。CUDA エラー:
CUDA_ERROR_ILLEGAL_ADDRESS
エラー: network_full (line 2092)
net=trainNetwork(XTrain,YTrain,lgraph,options);
原因:
エラー: gpuArray/gather
CUDA 実行中に予期しないエラーが発生しました。CUDA エラー:
CUDA_ERROR_ILLEGAL_ADDRESS

Réponses (1)

michio
michio le 9 Oct 2019
プロットなどの表示に関わる処理とネットワークの学習処理、この双方に GPU を使用することがエラーの要因となっているケースが見られます。以下を試して頂いてエラーがでるかどうか確認頂けますでしょうか?
1:コマンドウィンドウで
opengl software
と実行した後に、エラーが発生した処理を再度実行。画像表示関係に GPU を使用しない設定です。設定状況は
opengl info
で確認でき、元の GPU を使う設定に戻す場合は
opengl hardware
を実行します。
2:画像表示関係を最小限に、すなわち trainingOptions 'OutputFcn' [] に、'Plots' 'none' に設定してもエラーが発生しますでしょうか。
3:'MiniBatchSize' を小さくするのも効果があるかもしれません。
  6 commentaires
Hironobu Fujioka
Hironobu Fujioka le 16 Oct 2019
michioさん
コメントありがとうございます。
環境についてですが、cuDNN(CUDA), display driverを
フリーのアンインストーラーで完全に削除し、
各々最新のバージョンでカスタムインストール→クリーンインストールを実行したところ
miniBatchSize=1の状況でですが、無事に動作をするようになりました。
他のminiBatchSizeではまだエラーが出てしまいますが…
現状として、plotも問題なく実行できています。
対応していただきありがとうございました。
もし、今後も改善策などありましたら、教えていただければと思います。
michio
michio le 16 Oct 2019
コメントありがとうございます。気持ちよい解決策が出せず無念です。

Connectez-vous pour commenter.

Catégories

En savoir plus sur イメージを使用した深層学習 dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!