Hello,

I was trying to use the function MatLoad to read an mpi dense (square) matrix from a binary file.
I got an error related to a memory problem (in parallel).
I tried to locate the problem using gdb and I think it is in the function /MatLoad_MPIDense_DenseInFile//.
/The master cannot execute the line /
/

   /  ierr = PetscFree(vals);CHKERRQ(ierr);/

without an error. The other processors can.

For me, the error is in the allocation of the /vals/ array: each processor allocates it with m*N number of elements, where N is the same for all of the procs and m is the local number of rows, which in my case is already given in the matrix.

The master uses the array vals to read its own data, but also the other processors' data. The problem is that, in my case, one processor has a higher number of rows than the master and therefore vals is too short to store those values. For me the master should allocate it with size m_max*N , where m_max is the maximum number of local rows between all procs.

Thanks,
Best,
Matteo

Reply via email to