<div dir="ltr">Dear All:<br> <br><div>I am solving a huge system AX=b, A is a sparse matrix but its number of non-zeros is 3.29*10^9. I noticed that the 32-bit integer upper limit is ~2.15*10^9. <br><br></div><div>A is in COO format here. When I prepare the input *.bin file for Petsc, the line<br>
<br>ierr = MatCreateSeqAIJ(PETSC_COMM_WORLD,m,n,0,cnt,&A);CHKERRQ(ierr);<br> <br></div><div>can not pass.<br><br></div><div>m =n =39979380 here, cnt is an array holding the number of non-zeros per row. The error message is:<br>
<span style="background-color:rgb(255,255,255)"><br><span style="color:rgb(0,0,0)">[0]PETSC ERROR: Out of memory. This could be due to allocating<br>[0]PETSC ERROR: too large an object or bleeding by not properly<br>[0]PETSC ERROR: destroying unneeded objects.<br>
[0]PETSC ERROR: Memory allocated 0 Memory used by process 492802048<br>[0]PETSC ERROR: Try running with -malloc_dump or -malloc_log for info.<br>[0]PETSC ERROR: Memory requested 18446744061813993472!<br><br></span></span></div>
<div><span style="color:rgb(0,0,0)">Calling MatCreateSeqAIJ() doesn't involve NNZ information there, m/n/cnt are all integers less than 32-bit integer limit.<br></span></div><div>And the total size of data in COO format: nnz*8 bytes(values)+nnz*4 bytes(rows)+nnz*4 bytes(cols) are less than the memory limit of our system. <br>
<br></div><div>The code works on a system with half size of this failed one. <br><br></div><div>I am wondering, Does this because MatCreateSeqAIJ() might do some 'internal' counting things which exceeds the integer limit in this case?<br>
<br></div><div>Thanks<br><br></div><div>Qiyue Lu<br></div></div>