Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

Is there a data size limited in the mex of cell format?

1 visualización (últimos 30 días)
wei zhang
wei zhang el 12 de Mzo. de 2021
Cerrada: wei zhang el 12 de Mzo. de 2021
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 comentario
wei zhang
wei zhang el 12 de Mzo. de 2021
It should be
mxSetCell(RESULT,i,mxDuplicateArray(R));
Sorry for using wrong format of copy array in cell format. It has nothing to do with the size.

Respuestas (0)

Etiquetas

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by