Manipulate mxGPUArrays in conjunction with shared C libraries

1 回表示 (過去 30 日間)
Matt J
Matt J 2015 年 7 月 7 日
コメント済み: Matt J 2015 年 7 月 21 日
I'm asking this question on behalf of someone else more technically proficient in the issue than me. If I understand him, though, the goal is to know how to pass (set and get) data between an mxGPUArray object (corresponding to a gpuArray object in the MATLAB workspace) and a loaded C shared library (MEX-compiled). Also, to know how to create a new mxGPUArray object or resize/repopulate an existing one from said library. Finally, it is desirable to do this entirely on the GPU, so that data doesn't have to go through the host.
Is there a way to do all of the above? If so, what is the best way?

採用された回答

Edric Ellis
Edric Ellis 2015 年 7 月 8 日
Yes, all of this should be possible. You can extract the underlying pointer to the data of a gpuArray. I suggest starting with this section in the documentation, and examining the referenced example code which shows how to first get hold of an mxGPUArray object from the mxArray, and from there how to get hold of the underlying data (e.g. double *) from the mxGPUArray. Once you've got a pointer to the underlying data, you can call external CUDA code with that pointer. You can use mxGPUCreateGPUArray to create a new gpuArray, and then once you've filled out the contents, use mxGPUCreateMxArrayOnGPU to create an mxArray to return back to MATLAB.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGPU CUDA and MEX Programming についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by