リファレンス
CUDALink を使うと,GPU(グラフィカルプロセッシングユニット)上のCUDA並列計算アーキテクチャがWolfram言語から利用できるようになる.CUDALink にはCUDA対応のGPUを使って線形代数,金融シミュレーション,画像処理など多くの分野におけるパフォーマンスを向上させる関数を含んでいる.CUDALink はCUDAと既存のWolfram言語開発ツールを統合し,高度な自動化と制御を可能にする.
Wolfram言語関数
ここでは CUDALink が提供するWolfram言語関数について述べる.
クエリ
| CUDAQ | CUDALink がサポートされているかどうかを判断する |
| CUDAInformation | 全デバイス情報を列挙する |
| CUDADriverVersion | ビデオドライバの情報を与える |
| $CUDADeviceCount | システム上のデバイス数 |
| $CUDALinkPath | CUDALink アプリケーションへのパス |
| $CUDADevice | CUDALink 計算で使われるデバイス |
リソースのインストール
| CUDAResourcesInstall | CUDAリソースをインストールする |
| CUDAResourcesInformation | インストールされたCUDAリソースの情報を与える |
| CUDAResourcesUninstall | CUDAリソースをアンインストールする |
CUDALink リソースをインストール,アンインストールする関数
画像処理
| CUDAImageConvolve | 画像を指定のカーネルでたたみ込む |
| CUDABoxFilter | 画像にボックスフィルタを適用する |
| CUDADilation | 画像にモルフォロジー膨張を適用する |
| CUDAErosion | 画像にモルフォロジー収縮を適用する |
| CUDAClosing | 画像にモルフォロジークロージングを適用する |
| CUDAOpening | 画像にモルフォロジーオープニングを適用する |
| CUDAImageAdd | 2つの画像を加算する |
| CUDAImageSubtract | 2つの画像を減算する |
| CUDAImageMultiply | 2つの画像を乗算する |
| CUDAImageDivide | 2つの画像を除算する |
| CUDAClamp | 画像の値を指定の範囲の間に収める |
| CUDAColorNegate | 画像を反転する |
フーリエ(Fourier)変換
| CUDAFourier | フーリエ変換を求める |
| CUDAInverseFourier | 逆フーリエ変換を求める |
線形代数
| CUDADot | ベクトルと行列の積を与える |
| CUDATranspose | 入力行列を転置する |
| CUDAArgMaxList | 最大絶対要素の指標を与える |
| CUDAArgMinList | 最小絶対要素の指標を与える |
| CUDATotal | ベクトルの絶対値の合計を与える |
CUDALink プログラミング
| CUDAFunction | CUDAFunctionLoadでロードされたCUDA関数へのハンドル |
| CUDAFunctionLoad | CUDAFunctionをWolfram言語にロードする |
| CUDAFunctionInformation | CUDAFunction情報を取得する |
| NVCCCompiler | NVIDIA CUDAコンパイラを使ってコードをコンパイルする |
| CUDACCompilers | システムにインストールされた,サポートされているCコンパイラのリストを与える |
| SymbolicCUDAFunction | CUDA関数の記号表現 |
| SymbolicCUDABlockIndex | CUDAのブロックインデックス呼出しの記号表現 |
| SymbolicCUDAThreadIndex | CUDAのスレッドインデックス呼出しの記号表現 |
| SymbolicCUDABlockDimension | CUDAのブロック次元呼出しの記号表現 |
| SymbolicCUDACalculateKernelIndex | CUDAのインデックス計算の記号表現 |
| SymbolicCUDADeclareIndexBlock | CUDAのインデックス宣言の記号表現 |
メモリ
| CUDAMemory | CUDAMemoryLoadまたはCUDAMemoryAllocateを使って登録されたCUDAメモリへのハンドル |
| CUDAMemoryLoad | Wolfram言語メモリを CUDALink にロードし,CUDAMemoryを返す |
| CUDAMemoryAllocate | CUDALink 用にメモリを割当て,CUDAMemoryを返す |
| CUDAMemoryGet | CUDAMemoryをWolfram言語にコピーする |
| CUDAMemoryUnload | CUDAMemoryハンドルをアンロードして削除する |
| CUDAMemoryInformation | CUDAMemoryハンドル情報を取得する |
| CUDAMemoryCopyToHost | CUDAMemoryをGPUからCPUにコピーする |
| CUDAMemoryCopyToDevice | CUDAMemoryをCPUからGPUにコピーする |
CUDALink の例
| CUDAFinancialDerivative | 金融オプションの査定 |
| CUDAMap | 入力リストの各要素に関数を適用する |
| CUDASort | 入力要素をソートする |
| CUDAFold | 入力要素をたたむ |
| CUDAFoldList | 入力要素をたたんでリストにする |
| CUDAVolumetricDataRead | 描画する生の体積データを読み取る |
| CUDAVolumetricRender | 読み取られた体積データを描画する |
| CUDAFluidDynamics | 流体力学シミュレーションを計算して描画する |
CUDAQとCUDAInformation
CUDAInformationを使うとハードウェア情報が調べられる.これを使うには,まず CUDALink アプリケーションをロードする.
他のWolfram言語Q関数と同様に,CUDAQはエラーや失敗は返さない.CUDAInformationを実行するとなぜCUDAが失敗したかを示すエラーが返される.
CUDALink が失敗すると,以下のようなエラーが返される.
| insys | システムでCUDALinkがサポートされていない.サポートされているのは"Linux","Linux-x86-64","Windows","Windows-x86-64","MacOSX-x86","MacOSX-x86-64"のみである |
| invdevnm | ビデオカードの名前から判断すると,ビデオカードは CUDALink でサポートされていない |
| invdirv | NVIDIAドライバライブラリが見付からず,CUDALink はNVIDIAドライバライブラリパスを確定することができなかった |
| invdrivp | NVIDIAドライバがNVIDIAライブラリパスで見付からなかった |
| invdrivver | NVIDIAドライバは見付かったが,バージョン情報が特定できなかった |
| invdrivverv | NVIDIAドライバは見付かったが,サポートされていないバージョンである |
| invdrivverd | NVIDIAドライバは見付かったが,バージョンディレクトリが特定できなかった |
| syslibfld | CUDAランタイムライブラリのロードに失敗した |
| initlib | CUDALink ライブラリのロードに失敗した |
| init | CUDALink ライブラリはロードされたが,初期化に失敗した |
| nodev | CUDALink はCUDA対応のデバイスを見付けることができなかった |
必要なシステム条件
CUDALink には対応しているオペレーティングシステム,ハードウェア,ドライバソフトウェアが必要である.このセクションではそれらはどのようなものであるか,そしてそれをどのようにして確認するのかについて述べる.
オペレーティングシステム
CUDALink はLinux,Linux-x86-64,Windows,Windows-x86-64,Mac OS X-x86,Mac OS X-x86-64でサポートされている.Mac OS X の場合は少なくともMac OS X 10.6.3が必要である.
Linuxでは,CUDALink はビデオドライバをロードするランレベルで実行する必要がある.これは通常デフォルトレベル5であるが,サーバによっては管理者が手作業で設定する必要があることがある.
GPUハードウェア
CUDALink はCUDAがサポートされているすべてのハードウェアでサポートされる.グラフィックスカードの名前が分からない場合は,グラフィックスカード情報のセクションを参照されたい.
サポートされているデバイスのリストはNVIDIAのCUDAに対応した製品についてのページで見られる.
ATIまたはIntelグラフィックスプロセッサを使っている場合は,CUDAは使えないが,OpenCLLink を使ってOpenCLが使える可能性がある.
グラフィックスカード情報
グラフィックスについての詳細情報は,以下のようにSystemInformationの「デバイス」セクションに示される.
これはシステムにインストールされているグラフィックスカードについての情報を与える.
これを見付けるのに問題がある場合は,システムのドキュメントか以下のいずれかを確認してグラフィックスカードを確認する.
NVIDIAドライバの確認
CUDALink にはドライババージョン検出メカニズムがある.これはCUDADriverVersionでアクセスできる.
このドライバ検出法に代わるものはオペレーティングシステムによって異なる.以下にWindows,Linux,Mac OS Xでドライババージョン情報を得る方法を詳しく述べる.
Windows
NVIDIAドライバがインストールされている場合は,NVIDIAコントロールパネルがぢづyr無のコントロールパネルにあり,その情報を示す.NVIDIAコントロールパネルはスタート ▶ コントロールパネルをクリックするとアクセスできる.
コントロールパネル内に"NVIDIA Control Panel"がある.
それをクリックするとハードウェア設定が編集できるウィンドウが開く.
左下の角の「System Information」をクリックすると以下のウィンドウが開く.
ここにドライババージョンが示される.この例のマシンでは257.21である.
Linux
NVIDIAドライバがインストールされているなら,コマンドラインからnvidia-settingsを実行するとバージョン情報が得られる.以下のスクリーンショットはNVIDIAドライバの256.53バージョンを実行しているシステムのものである.これはシステム情報の「NVIDIA Driver Version」で見られる.
Xが利用できない場合は,次のコマンドでインストールされているドライバのバージョンが分かる.
[abduld@abduldlx ~]$ ls /usr/lib/libnvidia-tls.so.*
/usr/lib/libnvidia-tls.so.2 /usr/lib/libnvidia-tls.so.256.53.15
上の例ではNVIDIAドライバのサポートされていない256.53.15がabduldlxにインストールされていることが分かる.Linuxのバージョンによっては,ドライバは/usr/lib64または別のデフォルトでない場所にインストールされることに注意されたい.
Mac OS X
OS Xでバージョン情報を調べるには,Finderウィンドウを開き,「アプリケーション」に移動する.
「システム環境設定」を開くと,CUDAドライバがインストールされている場合は「CUDA」ボタンが示される.
「CUDA」ボタンをクリックするとCUDAドライバとGPUドライバのバージョンが示される.
CUDALink ではCUDAドライババージョン6.0.0以上が必要である.