リファレンス

CUDALink を使うと,GPU(グラフィカルプロセッシングユニット)上のCUDA並列計算アーキテクチャがWolfram言語から利用できるようになる.CUDALink にはCUDA対応のGPUを使って線形代数,金融シミュレーション,画像処理など多くの分野におけるパフォーマンスを向上させる関数を含んでいる.CUDALink はCUDAと既存のWolfram言語開発ツールを統合し,高度な自動化と制御を可能にする.

このセクションでは,機能をまとめる.

Wolfram言語関数

ここでは CUDALink が提供するWolfram言語関数について述べる.

クエリ

CUDAQCUDALink がサポートされているかどうかを判断する
CUDAInformation全デバイス情報を列挙する
CUDADriverVersionビデオドライバの情報を与える
$CUDADeviceCountシステム上のデバイス数
$CUDALinkPathCUDALink アプリケーションへのパス
$CUDADeviceCUDALink 計算で使われるデバイス

CUDALink の設定を問い合せる関数

リソースのインストール

CUDAResourcesInstallCUDAリソースをインストールする
CUDAResourcesInformationインストールされたCUDAリソースの情報を与える
CUDAResourcesUninstallCUDAリソースをアンインストールする

CUDALink リソースをインストール,アンインストールする関数

画像処理

CUDAImageConvolve画像を指定のカーネルでたたみ込む
CUDABoxFilter画像にボックスフィルタを適用する

CUDAを使った画像処理のためのフィルタリング関数

CUDADilation画像にモルフォロジー膨張を適用する
CUDAErosion画像にモルフォロジー収縮を適用する
CUDAClosing画像にモルフォロジークロージングを適用する
CUDAOpening画像にモルフォロジーオープニングを適用する

CUDAを使った画像処理のためのモルフォロジー演算関数

CUDAImageAdd2つの画像を加算する
CUDAImageSubtract2つの画像を減算する
CUDAImageMultiply2つの画像を乗算する
CUDAImageDivide2つの画像を除算する
CUDAClamp画像の値を指定の範囲の間に収める
CUDAColorNegate画像を反転する

CUDAを使った画像処理の二項演算

フーリエ(Fourier)変換

CUDAFourierフーリエ変換を求める
CUDAInverseFourier逆フーリエ変換を求める

CUDAを使ったフーリエ変換操作

線形代数

CUDADotベクトルと行列の積を与える
CUDATranspose入力行列を転置する
CUDAArgMaxList最大絶対要素の指標を与える
CUDAArgMinList最小絶対要素の指標を与える
CUDATotalベクトルの絶対値の合計を与える

CUDAを使った線形代数関数

CUDALink プログラミング

CUDAFunctionCUDAFunctionLoadでロードされたCUDA関数へのハンドル
CUDAFunctionLoadCUDAFunctionをWolfram言語にロードする
CUDAFunctionInformationCUDAFunction情報を取得する

CUDA関数の操作

NVCCCompilerNVIDIA CUDAコンパイラを使ってコードをコンパイルする
CUDACCompilersシステムにインストールされた,サポートされているCコンパイラのリストを与える

CUDAコンパイラへのアクセス

SymbolicCUDAFunctionCUDA関数の記号表現
SymbolicCUDABlockIndexCUDAのブロックインデックス呼出しの記号表現
SymbolicCUDAThreadIndexCUDAのスレッドインデックス呼出しの記号表現
SymbolicCUDABlockDimensionCUDAのブロック次元呼出しの記号表現
SymbolicCUDACalculateKernelIndexCUDAのインデックス計算の記号表現
SymbolicCUDADeclareIndexBlockCUDAのインデックス宣言の記号表現

CUDAプログラムの記号表現

メモリ

CUDAMemoryCUDAMemoryLoadまたはCUDAMemoryAllocateを使って登録されたCUDAメモリへのハンドル
CUDAMemoryLoadWolfram言語メモリを CUDALink にロードし,CUDAMemoryを返す
CUDAMemoryAllocateCUDALink 用にメモリを割当て,CUDAMemoryを返す
CUDAMemoryGetCUDAMemoryをWolfram言語にコピーする
CUDAMemoryUnloadCUDAMemoryハンドルをアンロードして削除する
CUDAMemoryInformationCUDAMemoryハンドル情報を取得する
CUDAMemoryCopyToHostCUDAMemoryをGPUからCPUにコピーする
CUDAMemoryCopyToDeviceCUDAMemoryをCPUからGPUにコピーする

CUDAのメモリを操作するための関数

CUDALink の例

CUDAFinancialDerivative金融オプションの査定
CUDAMap入力リストの各要素に関数を適用する
CUDASort入力要素をソートする
CUDAFold入力要素をたたむ
CUDAFoldList入力要素をたたんでリストにする
CUDAVolumetricDataRead描画する生の体積データを読み取る
CUDAVolumetricRender読み取られた体積データを描画する
CUDAFluidDynamics流体力学シミュレーションを計算して描画する

CUDALink の適用例

CUDAQとCUDAInformation

CUDAInformationを使うとハードウェア情報が調べられる.これを使うには,まず CUDALink アプリケーションをロードする.

システム上のCUDAデバイスについての情報を得る.

他のWolfram言語Q関数と同様に,CUDAQはエラーや失敗は返さない.CUDAInformationを実行するとなぜCUDAが失敗したかを示すエラーが返される.

CUDALink が失敗すると,以下のようなエラーが返される.

insysシステムでCUDALinkがサポートされていない.サポートされているのは"Linux","Linux-x86-64","Windows","Windows-x86-64","MacOSX-x86","MacOSX-x86-64"のみである
invdevnmビデオカードの名前から判断すると,ビデオカードは CUDALink でサポートされていない
invdirvNVIDIAドライバライブラリが見付からず,CUDALink はNVIDIAドライバライブラリパスを確定することができなかった
invdrivpNVIDIAドライバがNVIDIAライブラリパスで見付からなかった
invdrivverNVIDIAドライバは見付かったが,バージョン情報が特定できなかった
invdrivvervNVIDIAドライバは見付かったが,サポートされていないバージョンである
invdrivverdNVIDIAドライバは見付かったが,バージョンディレクトリが特定できなかった
syslibfldCUDAランタイムライブラリのロードに失敗した
initlibCUDALink ライブラリのロードに失敗した
initCUDALink ライブラリはロードされたが,初期化に失敗した
nodevCUDALink はCUDA対応のデバイスを見付けることができなかった

CUDALink 検出エラーコード

CUDAQFalseを返すのには主に3つの理由がある.

必要なシステム条件

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以上が必要である.