CUDALink の設定
This feature is not supported on the Wolfram Cloud.

このセクションでは,CUDALink を使用中のマシン用に設定する方法について取り上げる.問題を見付けて正すのにも役立つだろう.

コアとなる設定と検証

CUDALink はWolfram言語のインストール後,特別な設定をしなくても自動的に動作するように設計されている.これはCUDAQ関数を使って検証できる.

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

In[1]:=
Click for copyable input

CUDALink がサポートされているかどうかを確認する.以下のようにTrueが返された場合は,CUDALink が使える.

In[2]:=
Click for copyable input
Out[2]=

CUDAQTrueを返さない場合は,CUDALink は使えない.しかし,使用中のマシンを設定してこれを直すことができるかもしれない.このセクションの残りの部分では,CUDALink が使えるようにするために実行してみるステップについて述べる.

CUDA GPU

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

サポートされているハードウェアがない場合は,CUDALink を使うことはできない.

CUDAのドライバ

CUDALink が使えるようにするためには,最新のドライバが必要である.これはCUDADriverVersionを実行して確認することができる.

まずCUDALink をロードする必要がある.

In[1]:=
Click for copyable input

CUDADriverVersionはCUDAドライバのバージョン情報を返す.

In[2]:=
Click for copyable input
Out[2]=

CUDALink を使うためには,Windowsではドライバは301.32以上である必要がある.Mac OS Xでは,ドライバは4.2.10以上である必要がある.Linuxでは295.41以上のバージョンのドライバが必要である.ドライバが最新でない場合は,NVIDIAドライバダウンロードウェブサイトからアップデートできることがある.

また,「NVIDIAドライバの確認」に記載されているように,ドライバ情報はコンピュータから直接確認することもできる.

CUDAのリソース

CUDALinkCUDAQ等,最初に CUDALink 関数を使ったときに,機能の一部を自動的にダウンロードしてインストールする.リソースのダウンロードについての情報(約80 MB)を実際に見ることができる.

例えばインターネットに接続していなかったり,Wolfram言語のインターネットアクセスを許可していなかったりする場合等,特定の状況下では,ダウンロードは行われない.CUDAResourcesInformationを使うと,リソースがインストールされたかどうかが確認できる.

In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=

結果が空のリストの場合は,リソースはインストールされていない.これは CUDALink を使う前に修正しておかなければならない.

インターネット接続が回復したら,以下のようにCUDAResourcesInstallを使ってリソースをダウンロードし,インストールすることができる.

In[3]:=
Click for copyable input
Out[3]=

また,手作業でリソースをインストールすることもできる.Wolfram ResearchのCUDAResourcesのWebページから,使用中のマシンに適した最新リソースファイルがダウンロードできる.

リソースをダウンロードしたら,ダウンロードファイルのパスを使ってそれをCUDAResourcesInstallでWolfram言語にインストールする.

In[4]:=
Click for copyable input

これで,CUDAResourcesInformationを実行するとインストールが確認できる.

詳細設定

CUDAQを実行してTrueが返されたら, CUDALink が動作していることが確認できる.しかし,さらに詳細設定とテストを行うと,特にCUDAFunctionLoadを使いたいときに便利である.

使用中のハードウェアについての詳細情報は,SystemInformationの「Links」セクションで見られる.サンプルを以下に示す.

In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=

ここにはハードウェアについての詳しい情報が表示される.例えば,コアはいくつ利用できるか,倍精度計算がサポートされているかどうか等である.また,マシンにCUDAデバイスがいくつインストールされており,どれが一番速いかも分かる.

Cコンパイラ

独自のCUDAカーネルをCUDAFunctionLoadで実行する場合は,Cコンパイラも必要となる.CUDACCompilersを使うと適切なCコンパイラが利用できるかどうかが確認できる.

In[1]:=
Click for copyable input

適切なコンパイラのリストが返される.

In[2]:=
Click for copyable input
Out[2]=

CUDAリソースの更新

CUDALinkCUDAQ等,最初に CUDALink 関数を使ったときに,機能の一部を自動的にダウンロードしてインストールする.リソースのダウンロードについての情報(約400MB)を実際に見ることができる.「CUDAのリソース」セクションには,インストールを検証して実行する方法について記載されている.

また,CUDAのリソースをアンインストールしてからインストールすることで更新することもできる.これは以下に示すようにCUDAResourcesUninstallCUDAResourcesInstallを使ってできる.

In[1]:=
Click for copyable input

利用できる更新があるかどうか,Wolfram ResearchのWebサイトで確認する.

In[2]:=
Click for copyable input

また,新しいバージョンが利用できるかどうかもCUDAResourcesのWebページで確認できる.

デフォルトでないインストール

CUDALink は多くのシステムチェックを行い,システムがサポートされているかどうかを検証する.CUDAQ等の関数が呼ばれる前に,NVIDIAドライバライブラリ,NVIDIAドライバのバージョン,CUDAライブラリのパス,CUDAライブラリのバージョン,CUDALink ランタイムライブラリがロードできるかどうかが確認される.想定される場所にファイルが見付からなかったり,ファイルがサポートされているバージョンでなかったり等,一つでも条件を満たさないと,エラーメッセージが生成され,CUDAQは失敗する.

デフォルトでは CUDALink はインストールが行われた特別な場所を使用する.しかし,システム環境変数を設定して,別の場所を選ぶこともできる.システムがCUDA対応のカードを装備しており,適切なソフトウェアがインストールされている場合,ドライバが標準でない場所にインストールされていることがしばしばある.以下のセクションでは,確認される環境変数の詳細を述べる.

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ライブラリへのデフォルトパス

検出の後,結果はに保管される.

一般的なエラー

タイムアウト

システムによっては,システムが打ち切るまでにGPU計算を実行できる秒数が設定によって制限されていることがある.Windows Vistaと7では,タイムアウトはデフォルトで2秒に設定されている.

計算が打ち切られると,スクリーンが短時間黒くなり,タスクバーにポップアップが表示されることがある.

Windowsユーザがこれを経験するのは,GPUでの計算に2秒以上かかったときである.これはMicrosoft WDDMガイドに従うことで無効にすることができる.

Wolframシステム内では,管理者として以下を実行すると,タイムアウトまでが7秒になるようにレジストリキーが設定される.

Developer`WriteRegistryKeyValues["HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\GraphicsDrivers",{"TdrDelay"7}]

デフォルトの値は2である.その他のオペレーティングシステムでも同様の制限と,それを無効にするためのオプションがある.

CUDALink については,グラフィックス計算の強制終了はクラッシュに等しい.そのためCUDALink はGPUの現在の状態を有効ではないと見なし,Wolfram言語カーネルの再起動によってのみ状態がリセットされる.

深刻な状況では,オペレーティングシステムによる矯正終了によってシステムがハングすることがある.

NVCCコンパイラがない場合

CUDAツールキットはに含まれており,自動的にインストールされる.インストールされているツールキットのバージョンは以下のようにして確認できる.

In[2]:=
Click for copyable input
Out[2]=

CUDAコードをコンパイルする関数はを受け取る.このオプションは既存のNVCCコンパイラの場所に設定できる.ここではC:\CUDAにあるNVCCコンパイラを使ってコンパイルする.

In[3]:=
Click for copyable input
In[4]:=
Click for copyable input
Out[4]=

Cコンパイラがない場合

NVCCコンパイラはCコンパイラを必要とするため,有効なCコンパイラがない場合はNVCCコンパイラは検出されない.

CUDALink はサポートされているCコンパイラがシステムにインストールされていることを必要とする.サポートされているCコンパイラとは,WindowsではMicrosoft Visual Studio 2005,2008,および2010,ほとんどのLinuxではGCC 4.4または4.5,OS XではGCC 4.2.1である.Mac OS XユーザはOS X開発パッケージ(これにはXCode等,他のツールも含まれている)からコンパイラが取得できる.

コンパイラが標準インストールでない場合は,非デフォルトインストールを使うための"CompilerInstallation"オプションが使える.

コンパイラが標準インストールではない場合,非デフォルトのインストールを使うためのオプション"CompilerIntallation"が使える.これについては「別のコンパイラの設定」を参照のこと.

製造元の異なるGPUを持つシステム

複数のGPUデバイスを持つシステムでは,NVIDIAドライバは最後にインストールされなければならない.これにより,オペレーティングシステムは適切なドライバを使ってCUDAカードが実行できるようになる.Windows Vista等,オペレーティングシステムによっては,製造元の異なる2つのビデオカードを使うことはできない

自動ビデオカード切換え(例えば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 の設定にいての詳細は「

」を参照されたい.