Skip to content

Instantly share code, notes, and snippets.

@rej55
Created December 3, 2017 04:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rej55/26405d65fb9a4b3cc6b96a960aeae67a to your computer and use it in GitHub Desktop.
Save rej55/26405d65fb9a4b3cc6b96a960aeae67a to your computer and use it in GitHub Desktop.
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
//変数の定義
const mxGPUArray *src;
mxGPUArray *dst;
const double *d_src;
double *d_dst;
//初期化
mxInitGPU();
//prhs[0]から読み取り専用のmxGPUArrayを生成
src = mxGPUCreateFromMxArray(prhs[0]);
//srcのアドレスを取得
d_src = (const double*)(mxGPUGetDataReadOnly(src));
//GPU上に出力用の領域を確保
dst = mxGPUCreateGPUArray(mxGPUGetNumberOfDimensions(src),
mxGPUGetDimensions(src),
mxGPUGetClassID(src),
mxGPUGetComplexity(src),
MX_GPU_DO_NOT_INITIALIZE);
//dstのアドレスを取得
d_dst = (double *)(mxGPUGetData(dst));
/* カーネル関数の実行など、dstにデータを書き込む */
//dstをMATLABに返すためのmxArrayに変換
plhs[0] = mxGPUCreateMxArrayOnGPU(dst);
//一次的なGPUArrayの解放
mxGPUDestroyGPUArray(src);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment