ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

parallel.gpu.CUDAKernel

PTX および CU コードから GPU CUDA カーネル オブジェクトを作成する

構文

KERN = parallel.gpu.CUDAKernel(PTXFILE,CPROTO)
KERN = parallel.gpu.CUDAKernel(PTXFILE,CPROTO,FUNC)
KERN = parallel.gpu.CUDAKernel(PTXFILE,CUFILE)
KERN = parallel.gpu.CUDAKernel(PTXFILE,CUFILE,FUNC)

説明

KERN = parallel.gpu.CUDAKernel(PTXFILE,CPROTO)KERN = parallel.gpu.CUDAKernel(PTXFILE,CPROTO,FUNC) は、GPU 上で CUDA カーネルの呼び出しに使用できる CUDAKernel オブジェクトを作成します。PTXFILE は、PTX コード、つまり PTX ファイルの内容を文字ベクトルとして含むファイルの名前です。また、CPROTOKERN で表されるカーネル呼び出しの C プロトタイプです。FUNC を指定する場合、これは PTX ファイル内で適切なカーネル エントリ名を明確に定義する文字ベクトルでなければなりません。FUNC を省略した場合、PTX ファイルには単一のエントリ ポイントのみが含まれます。

KERN = parallel.gpu.CUDAKernel(PTXFILE,CUFILE)KERN = parallel.gpu.CUDAKernel(PTXFILE,CUFILE,FUNC) は GPU で CUDA カーネルの呼び出しに使用できるカーネル オブジェクトを作成します。また、これらは CUDA ソース ファイル CUFILE を読み取り、'__global__' で始まるカーネル定義を検索して、PTXFILE で定義されている CUDA カーネルの関数プロトタイプを見つけます。

カーネル オブジェクトの実行についての詳細は、CUDAKernel の実行を参照してください。

simpleEx.cu に以下が含まれるとします。

/*
* Add a constant to a vector.
*/
__global__ void addToVector(float * pi, float c, int vecLen)  {
   int idx = blockIdx.x * blockDim.x + threadIdx.x;
   if (idx < vecLen) {
       pi[idx] += c;
   }
}

また、simpleEx.ptx には simpleEx.cu を PTX にコンパイルした結果が含まれるとします。この場合、以下のステートメントは、addToVector CUDA カーネルの呼び出しに使用できるカーネル オブジェクトを返します。

kern = parallel.gpu.CUDAKernel('simpleEx.ptx', ...
                                             'simpleEx.cu');
kern = parallel.gpu.CUDAKernel('simpleEx.ptx', ...
                                     'float *,float,int');

R2010b で導入