CUDALink の設定

このセクションでは,CUDALink を使用中のマシン用に設定する方法について説明する.設定中によく起る問題とその解決方法も述べる.

前提条件

CUDAがサポートしているGPUハードウェアがあることを確認しなければならない.確信できない場合は,「GPUハードウェア」セクションのサポートされているハードウェアリストで確認できる.また,オペレーティングシステムがサポートされているかどうかも確認しなければならない.サポートされているハードウェアがない場合は,CUDALink を完全には使うことができない.

CUDALink を使うためには,NVIDIA CUDA Toolkit対応するCUDAドライバが必要である.便宜のため,NVIDIAのツールキットには,対応するCUDAドライバが含まれている.

CUDAインストールパッケージはCUDAダウンロードページから入手できる.

WindowsとLinuxのインストールガイドは以下で入手できる:

Windowsインストールガイド

Linuxインストールガイド

NVIDIAはmacOSはサポートしていない.

CUDALink アプリケーションをロードする:

This checks if CUDALink がサポートされているかどうかを確認する.以下のようにSuccessオブジェクトが返されたら,CUDALink が使えるということである.

CUDALinkとNVIDIA CUDA Toolkitの対応性

関数CUDAToolkitCompatibilityInformationでユーザがインストールしたNVIDIA CUDA Toolkitに CUDALink が対応しているかどうかが確認できる:

コアとなる設定と検証

CUDALink はWolfram言語のインストール後,特別な設定をしなくても自動的に動作するように設計されている.これはCUDAQ関数を使って検証できる.関数CUDAQCUDALink がサポートされているかどうかが確認できる.以下のようにTrueが返されたら,CUDALink が使えるということである.

CUDAQTrueを返さない場合は,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コンパイラがシステムにインストールされてなければならない:

Windows

Linux

コンパイラが標準インストールではない場合,非デフォルトのインストールを使うためのオプション"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 の設定にいての詳細は「

」を参照されたい.