[petsc-users] Problem when using MatLoad
    Barry Smith 
    bsmith at mcs.anl.gov
       
    Fri Apr 10 15:27:27 CDT 2015
    
    
  
  Fixed in the branch barry/fix-matload-mpidense-denseinfile and next will put into master after testing.
  I couldn't put my fix into maint (the release version), I recommend you upgrade to the development version for this feature or you can manually
fix by editing MatLoad_MPIDense_DenseInFile() and using MPI_Reduce() to communicate the largest size needed to be passed to the malloc() instead of using the size from the first process.
  Thanks for letting us know about the bug.
  Barry
> On Apr 9, 2015, at 6:02 AM, Matteo Aletti <matteo.aletti at inria.fr> wrote:
> 
> 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
    
    
More information about the petsc-users
mailing list