私は複数のスレッドを起動するWindows環境のC++プロジェクト(VS2105)で作業しています。 PCには2つのNVIDIA GeForce GTX 1080があります。各スレッドはGPUモードで異なるCaffeクラシファイアを使用します。caffe multi-gpu CUDNN_STATUS_EXECUTION_FAILED
すべてのスレッドで1つのGPUが使用されている場合、プログラムは正常に動作しています。 GPU 0またはGPU 1の両方を使ってうまく動作します。問題は、スレッドごとに異なるGPUを使用する場合に発生します。例えば、プログラムがスレッド1で2つのトレッドと分類器を起動する場合は、GPU 0(Caffe::SetDevice(0);
)を使用し、スレッド2の分類器は、GPU 1(Caffe::SetDevice(1);
)を使用して、予測が作業を開始したが、突然、私はエラーcudnn_conv_layer.cu:28] Check failed: status == CUDNN_STATUS_SUCCESS (8 vs. 0) CUDNN_STATUS_EXECUTION_FAILED
を取得し、私は似て見てきました1つのGPUで動作するCuDNNスレッドセーフの問題に関連するPythonインターフェイスを備えたマルチスレッドプロジェクトで作業している人のエラーですが、単一のGPUではプログラムが正常に動作します。
私のモデルは単一のGPUで訓練されています。私はGPU 0とGPU 1で別々のモデルをトレーニングすべきですか? multiGPUマルチスレッド環境で使用するには、特別な方法で分類器を設定する必要がありますか。
私はCUDA 8.0のCaffeのWindowsブランチを使用し、CaffeのC++インターフェイスをプロジェクトにスタティックライブラリとしてリンクして使用しています。