Info
此问题已关闭。 请重新打开它进行编辑或回答。
Is there a data size limited in the mex of cell format?
1 次查看(过去 30 天)
显示 更早的评论
I am trying to pass some large cell arrays from mex to Matlab. I found it may stuck Matlab if the output cell array is large. Is there a limitation of cell format capacity? I know little knowledge of it. Do I use the cell format in wrong way? Any suggestion would be appreciated.
Here is an example.
In matlab
r = test1((ones(1e8,1)));% matlab crash or stuck
The cu file to build mex.
%% test1.cu
void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{
mxInitGPU();
mxGPUArray const *a0 = mxGPUCreateFromMxArray(prhs[0]);
double *d_a0 = (double*)mxGPUGetDataReadOnly(a0);
int K = 1;
prhs[0] = mxCreateCellMatrix(K,1);
mxArray * R;
for(int i = 0;i<K;i++)
{
R = mxGPUCreateMxArrayOnCPU(a0);
mxSetCell(RESULT,i,R);
}
mxGPUDestroyGPUArray(a0);
mxDestroyArray(R);
}
If I output the result without cell, like below.
r = test2((ones(1e8,1))); % good
%% test2.cu
void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{
mxInitGPU();
mxGPUArray const *a0 = mxGPUCreateFromMxArray(prhs[0]);
double *d_a0 = (double*)mxGPUGetDataReadOnly(a0);
plhs[0] = mxGPUCreateMxArrayOnCPU(a0);
mxGPUDestroyGPUArray(a0);
}
1 个评论
回答(0 个)
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!