web-dev-qa-db-ja.com

CUDAの問題-cudaGetDevice()を解決するためにWin 10にCUDAをクリーンインストールする方法が失敗しました

私は以前、このWin 10 64ビットホームシステムでCUDA 9.xを実行していた(1080Tiカードをターゲットにした)が、TensorFlow 2のCUDA 10.0に更新する必要があった。後になって初めてCUDA 10であることが判明しました。

動作しません...

TFをテストするために、これを実行してインストールを検証しました(Anacondaを介したJupyterノートブック-新しく構築されたTF2環境)

import tensforflow as tf
print(tf.reduce_sum(tf.random.normal([1000, 1000])))

基本的なPythonテストでこのエラーが発生します

InternalError:cudaGetDevice()が失敗しました。ステータス:cudaGetErrorStringシンボルが見つかりません

これは、キーファイルが見つからないことを示していますが、根本的な原因を特定することはできません。そのエラー情報にヒットすることはほとんどなく、どれも役に立ちませんでした。

現在の構成

CUDA 10.0がNvidiaドライバー436.48のゲーム対応ドライバーをインストール

潜在的な問題とこれまでの解決策

明らかに、どれも修正されたものはありません

  1. 古いCUDAインストール-9.0、9.1、10.0、10.1:10.0を除くすべてがアンインストールされ、PCが再起動されました。 10.0インストーラーを実行する
  2. Cudnnファイルの更新:最初に元のファイルを試し、次にcudnnファイルv7.6.3.30をbin、include、libにコピーしました
  3. ゲーム対応ドライバーから「スタジオ」ドライバーに切り替える
  4. すべての環境変数をチェックします-CUDAを参照するすべてを削除しました!= 10.0
  5. pdate system32でnvcuda.dllの名前を.oldに変更し、CUDA 10.0インストーラーを再実行しました...新しいnvcudaが生成されましたnot
  6. pdate 2ドライバーストアでnvcuda64.dll v 10.0.132を見つけ、system32のnvcuda.dllをそれに置き換えました。再起動後、nvidia-smiはCUDAバージョンをまったく報告しないようになりました:(

既知の奇数

  1. [更新2に置き換わる] nvidia-smi.exeはCUDA 10.1を報告します(はい、Win 10で利用可能です)-レジストリを確認しても、CUDA 10.1が残っていることを示唆するものは何も見つかりませんそこに...pdate C:\ Windows\System32にあります

  2. アンインストールにもかかわらず、レジストリのComputer\HKEY_USERS.DEFAULT\Software\Microsoft\VisualStudio\14.0_Config\InstalledProductsの下にXYZ = 90、91、100、101のCudaXYZWizardsPackageが残っていますが、これはTFの問題だと思いますPython;)pdate C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\NVIDIAには何もありません10.0なので、Orphan regエントリのみです。

その他の情報

  1. すべてのアンインストールなどを行う前に、VS 2017でNvidiaサンプルクロックプロジェクトを正常にビルドして実行したので、基本は問題ありませんでした(そして)

質問

  1. CUDAのすべての痕跡を完全に削除して、白紙の状態から再開するにはどうすればよいですか?
  2. 問題がどこにあるか/何をすべきかを解決するために将来どのようにそのような問題を診断できますか
  3. この特定の問題をより簡単に解決できますか?
  4. (新規)nvcuda.dll 10.0をsystem32のどこで置き換えることができますか? -Answer 1つの可能性はC:\ Windows\System32\DriverStore\FileRepositoryからです
2
Julian Moore

@diegoが更新を要求するため、これは主に拡張コメントです...

CUDA 10.0がインストールされ、nVidiaコントロールパネルでnvcuda.dllがv 10.0.132と報告される

C:\ ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\1_Utilities\deviceQuery(vs.exeがC:\ ProgramData \で終わることに注意してください)のvsソリューションからVisual Studio 2017を使用して推奨デモdevicequery.exeを構築しましたNVIDIA Corporation\CUDA Samples\v10.0\bin\win64\Debug)

次に、プログラムはcmdプロンプトから実行され、次の出力が表示されました。

devicequeryを開始しています...

CUDAデバイスクエリ(ランタイムAPI)バージョン(CUDART静的リンク)

1 CUDA対応デバイスが検出されました

デバイス0: "GeForce GTX 1080 Ti" CUDAドライバーバージョン/ランタイムバージョン10.0/10.0 CUDA機能メジャー/マイナーバージョン番号:6.1グローバルメモリの総容量:11264 Mバイト(11811160064バイト)(28)マルチプロセッサー、(128)CUDAコア/ MP:3584 CUDAコアGPU最大クロック速度:
1607 MHz(1.61 GHz)メモリクロックレート:
5505 Mhzメモリバス幅:352ビットL2キャッシュサイズ:2883584バイト最大テクスチャディメンションサイズ(x、y、z)1D =(131072)、2D =(131072、65536)、3D =(16384、 16384、16384)最大レイヤード1Dテクスチャサイズ、(num)レイヤー1D =(32768)、2048レイヤー最大レイヤード2Dテクスチャサイズ、(num)レイヤー2D =(32768、32768)、2048レイヤー定数メモリの総容量:65536バイトブロックごとの共有メモリの総量:49152バイトブロックごとに使用可能なレジスタの総数:65536ワープサイズ:
32マルチプロセッサあたりの最大スレッド数:2048ブロックあたりの最大スレッド数:1024スレッドブロックの最大ディメンションサイズ(x、y、z):(1024、1024、64)グリッドの最大ディメンションサイズサイズ(x、y、z):(2147483647、65535、65535)最大メモリピッチ:
2147483647バイトテクスチャアライメント:512バイト同時コピーとカーネル実行:2つのコピーエンジンで可カーネルでの実行時間制限:はい
統合されたGPU共有ホストメモリ:サポートなしホストページロックメモリマッピング:はいサーフェスのアライメント要件:はいデバイスはECCサポートを備えています:
無効なCUDAデバイスドライバーモード(TCCまたはWDDM):WDDM(Windowsディスプレイドライバーモデル)デバイスは統合アドレッシング(UVA)をサポートします:はいデバイスは計算プリエンプションをサポートします:いいえ
協同カーネルの起動をサポートします:マルチデバイス共同カーネルの起動をサポートしません:デバイスなしPCIドメインID /バスID /ロケーションID:0/1/0計算モード:<デフォルト(複数のホストスレッドが:: cudaSetDeviceを使用できます()デバイスと同時に)>

deviceQuery、CUDAドライバー= CUDART、CUDAドライバーバージョン= 10.0、CUDAランタイムバージョン= 10.0、NumDevs = 1結果= PASS

これを達成するために私は何をしましたか?成功したことに気付いていなかったので具体的にはわかりませんが、ディスプレイドライバーをVGAに設定し、再起動(安全のために2回)してからCUDA 10.0をアンインストールし、再起動して10.0をインストールしたことを思い出しました。

VsQueryソリューションを使用してdeviceQueryを構築したことに気づきましたが、ソリューションオープン時にVSを更新することに同意しました。

0
Julian Moore