CUDALink の設定
このセクションでは,CUDALink を使用中のマシン用に設定する方法について説明する.設定中によく起る問題とその解決方法も述べる.
前提条件
CUDAがサポートしているGPUハードウェアがあることを確認しなければならない.確信できない場合は,「GPUハードウェア」セクションのサポートされているハードウェアリストで確認できる.また,オペレーティングシステムがサポートされているかどうかも確認しなければならない.サポートされているハードウェアがない場合は,CUDALink を完全には使うことができない.
CUDALink を使うためには,NVIDIA CUDA Toolkitと対応するCUDAドライバが必要である.便宜のため,NVIDIAのツールキットには,対応するCUDAドライバが含まれている.
CUDAインストールパッケージはCUDAダウンロードページから入手できる.
WindowsとLinuxのインストールガイドは以下で入手できる:
This checks if CUDALink がサポートされているかどうかを確認する.以下のようにSuccessオブジェクトが返されたら,CUDALink が使えるということである.
CUDALinkとNVIDIA CUDA Toolkitの対応性
関数CUDAToolkitCompatibilityInformationでユーザがインストールしたNVIDIA CUDA Toolkitに CUDALink が対応しているかどうかが確認できる:
コアとなる設定と検証
CUDALink はWolfram言語のインストール後,特別な設定をしなくても自動的に動作するように設計されている.これはCUDAQ関数を使って検証できる.関数CUDAQで CUDALink がサポートされているかどうかが確認できる.以下のようにTrueが返されたら,CUDALink が使えるということである.
CUDAQがTrueを返さない場合は,CUDALink は使えない.しかし,使用中のマシンを設定してこれを直すことができるかもしれない.このセクションの残りの部分では,CUDALink が使えるようにするために実行してみるステップについて述べる.
CUDAのドライバ
CUDALink が使えるようにするためには,最新のドライバが必要である.これはCUDADriverVersionを実行して確認することができる.
また,「NVIDIAドライバの確認」に記載されているように,ドライバ情報はコンピュータから直接確認することもできる.
詳細設定
CUDAQを実行してTrueが返されたら, CUDALink が動作していることが確認できる.しかし,さらに詳細設定とテストを行うと,特にCUDAFunctionLoadを使いたいときに便利である.
使用中のハードウェアについての詳細情報は,SystemInformationの「Links」セクションで見られる.サンプルを以下に示す.
ここにはハードウェアについての詳しい情報が表示される.例えば,コアはいくつ利用できるか,倍精度計算がサポートされているかどうか等である.また,マシンにCUDAデバイスがいくつインストールされており,どれが一番速いかも分かる.
Cコンパイラ
独自のCUDAカーネルをCUDAFunctionLoadで実行する場合は,Cコンパイラも必要となる.CUDACCompilersを使うと適切なCコンパイラが利用できるかどうかが確認できる.
デフォルトでないインストール
CUDALink は多くのシステムチェックを行い,システムがサポートされているかどうかを検証する.CUDAQ等の関数が呼ばれる前に,NVIDIA CUDA Toolkitルートディレクトリ,NVIDIAドライバライブラリ,NVIDIAドライバのバージョン,CUDAライブラリのパス,CUDAライブラリのバージョン,CUDALink ランタイムライブラリがロードできるかどうかが確認される.想定される場所にファイルが見付からなかったり,ファイルがサポートされているバージョンでなかったり等,一つでも条件を満たさないと,エラーメッセージが生成され,CUDAQは失敗する.
デフォルトでは CUDALink は標準のインストール場所を検索する.しかし,システム環境変数を設定して,別の場所を選ぶこともできる.システムがCUDA対応のカードを装備しており,適切なソフトウェアがインストールされている場合,ドライバまたはNVIDIA CUDA Toolkitが標準でない場所にされていることがしばしばある.以下のセクションでは,確認される環境変数の詳細を述べる.
CUDA_PATH
これはNVIDIA CUDA Toolkitルートディレクトリへのパスである.
"Windows-x86-64" | "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.2" |
"Linux-x86-64" | "/usr/local/cuda-11.2" |
が定義されていない場合のNVIDA CUDA Toolkitルートディレクトリへのデフォルトパス
NVIDIA_DRIVER_LIBRARY_PATH
NVIDIAドライバライブラリへの絶対パス.ライブラリはNVIDIAドライバダウンロードWebサイトからダウンロードされたNVIDIAドライバパッケージによってインストールされる.
"Windows" | "C:\\Windows\\System32\\nvapi.dll" |
"Windows-x86-64" | "C:\\Windows\\System32\\nvapi64.dll" |
"Linux" | "/usr/lib/libnvidia-tls.so.*" |
"Linux-x86-64" | "/usr/lib64/libnvidia-tls.so.*" |
"MacOSX-x86" | "/Library/Frameworks/CUDA.framework/Versions/Current/CUDA" |
"MacOSX-x86-64" | "/Library/Frameworks/CUDA.framework/Versions/Current/CUDA" |
が定義されていない場合のNVIDIAドライバライブラリへのデフォルトパス
CUDA_LIBRARY_PATH
CUDAライブラリへの絶対パス.ライブラリはNVIDIAドライバダウンロードWebサイトからダウンロードされたNVIDIAドライバパッケージによってインストールされる.
"Windows" | "C:\\Windows\\System32\\nvcuda.dll" |
"Windows-x86-64" | "C:\\Windows\\System32\\nvcuda.dll" |
"Linux" | "/usr/lib/libcuda.so" |
"Linux-x86-64" | "/usr/lib64/libcuda.so" |
"MacOSX-x86" | "/usr/local/cuda/lib/libcuda.dylib" |
"MacOSX-x86-64" | "/usr/local/cuda/lib/libcuda.dylib" |
が定義されていない場合のCUDAライブラリへのデフォルトパス
一般的なエラー
NVCCコンパイラがない場合
CUDAコードをコンパイルする関数は"CompilerInstallation"を受け取る.このオプションは既存のNVCCコンパイラの場所に設定できる.ここではC:\CUDAにあるNVCCコンパイラを使ってコンパイルする.
Cコンパイラがない場合
NVCCコンパイラはCコンパイラを必要とする.有効なCコンパイラがないと,NVCCコンパイラは検出されない.
サポートされているCコンパイラはWindowsのMicrosoft Visual StudioとLinuxのGCCである.
CUDALink を使うためには,サポートされているCコンパイラがシステムにインストールされてなければならない:
コンパイラが標準インストールではない場合,非デフォルトのインストールを使うためのオプション"CompilerIntallation"が使える.これについては「別のコンパイラの設定」を参照のこと.
製造元の異なるGPUを持つシステム
複数のGPUデバイスを持つシステムでは,NVIDIAドライバは最後にインストールされなければならない.これにより,オペレーティングシステムは適切なドライバを使ってCUDAカードが実行できるようになる.
自動ビデオカード切換え(例えばIntelとNVIDIAのカード間等)を行うラップトップでは CUDALink がCUDAデバイスを初期化するのが妨げられることがある.そのようなシステムでは,ビデオカード切換えを無効にするか,ユーザがメニューバーから切り換えられるツール(「デュアルGPU切換え」とオペレーティングシステム名でWebを検索するとよい)を使うかすることができる.
リモートデスクトップを介して CUDALink を使う
CUDALink はWindows Remote Desktop (RDP)を介しては使えない.リモート計算を行うには,VNC等の他のプロトコルが使える.UnixユーザはSSHまたはXトンネリングが使える.
VNCに代わる方法として推奨されるのは,リモートカーネルを設定する方法である.これにより,フロントエンドのインタラクティブ機能を利用できる一方で,リモートのCUDAマシン上でカーネルが実行できる.リモートカーネルの設定方法に浮いては「
」のドキュメントページを参照されたい.バーチャルマシン内で CUDALink を使う
多くのバーチャルマシンはビデオカードをエミュレートするので,CUDA計算のためにGPUにアクセスすることはできない.バーチャルマシンソフトウェアがGPU計算をサポートしており,バーチャルマシンでGPUが使えるようにマシンが設定されていない限り,CUDALink はバーチャルマシン上ではサポートされない.
複数のCUDAデバイス
CUDALink はWolfram言語の並列ツールを使って複数のデバイス上でサポートされている.ワーカーカーネルは各GPUに対して起動できる.サポートされているGPUの最大数はユーザが起動できるカーネル数によってのみ制限される.
」を参照されたい.ヘッドレスターミナル
CUDALink はヘッドレスターミナル上でサポートされている.Linux上ではシステム設定によりNVIDIAデバイスは適切な許可が得られないこともある.ヘッドレスターミナル上での CUDALink の設定にいての詳細は「
」を参照されたい.