[petsc-users] Errors from large matrices

Joon hee Choi choi240 at purdue.edu
Sun May 26 15:44:34 CDT 2013


Thank you for your fast reply. I was already checking all error codes with CHKERRQ and -info -mat-view-info, but I got those errors from "ierr = MatConvert(MC, MATBAIJ, MAT_INITIAL_MATRIX, &CC); CHKERRQ(ierr);". Then, what can I do?

Sincerely,
Joon

----- Original Message -----
From: "Matthew Knepley" <knepley at gmail.com>
To: "Choi240" <choi240 at purdue.edu>
Cc: "Barry Smith" <bsmith at mcs.anl.gov>, petsc-users at mcs.anl.gov
Sent: Sunday, May 26, 2013 2:27:01 PM
Subject: Re: [petsc-users] Errors from large matrices


On Sun, May 26, 2013 at 2:10 PM, Choi240 < choi240 at purdue.edu > wrote: 





Thank you for your fast reply. However, I was already using 64 bit pointer. 


Then it sounds like you ar really out of memory. Also, make sure you are checking all error codes 
with CHKERRQ so you do not get follow-on errors. 


Matt 




-------- Original message -------- 
Subject: Re: [petsc-users] Errors from large matrices 
From: Barry Smith < bsmith at mcs.anl.gov > 
To: Joon hee Choi < choi240 at purdue.edu > 
CC: petsc-users at mcs.anl.gov 




On May 26, 2013, at 6:19 AM, Joon hee Choi < choi240 at purdue.edu > wrote: 

> Hello all, 
> 
> I need to multiply a large seqaij matrix(X1) and a maij(or baij) matrix(CC). I set up X1 (size:4273949x108965941330383, nonzeros:143599552) and C (size:25495389x10, nonzeros:254953890) and created a maij matrix CC from C. However, I got errors such as out of memory and Caught signal number 11 SEGV: Segmentation Violation, probably memory access out of range. Is this memory problem, and do I have to change seqaij into mpiaij and use multi processors? Or do I have another methods fixing it? If you know the method, then please let me know it. Thank you. 

http://www.mcs.anl.gov/petsc/documentation/faq.html#with-64-bit-indices 


> 
> Joon 
> 
> 
> Code: 
> ... 
> ierr = MatCreate(PETSC_COMM_SELF, &X1); CHKERRQ(ierr); 
> ierr = MatSetSizes(X1, PETSC_DECIDE, PETSC_DECIDE, I, J*K); CHKERRQ(ierr); 
> ierr = MatSetBlockSizes(X1, I, J); CHKERRQ(ierr); 
> ierr = MatSetType(X1, MATSEQAIJ); CHKERRQ(ierr); 
> ierr = MatSeqAIJSetPreallocation(X1, 0, nnz); CHKERRQ(ierr); 
> 
> for (int x=0; x<tups.size(); x++) { 
> i = std::tr1::get<0>(tups[x]); 
> j = std::tr1::get<2>(tups[x]) + std::tr1::get<1>(tups[x])*J; 
> val = std::tr1::get<3>(tups[x]); 
> ierr = MatSetValues(X1, 1, &i, 1, &j, &val, INSERT_VALUES); CHKERRQ(ierr); 
> } 
> ierr = MatAssemblyBegin(X1, MAT_FINAL_ASSEMBLY); 
> ierr = MatAssemblyEnd(X1, MAT_FINAL_ASSEMBLY); 
> ierr = PetscGetTime(&v1); CHKERRQ(ierr); 
> ierr = PetscPrintf(PETSC_COMM_WORLD, "Setup Time: %2.1e \n", v1-v); CHKERRQ(ierr); 
> 
> // Create a matrix C (K x R) with all values 1 
> ierr = MatCreateSeqAIJ(PETSC_COMM_SELF, K, R, R, NULL, &C); CHKERRQ(ierr); 
> for (k=0; k<K; k++) { 
> for (r=0; r<R; r++) { 
> ierr = MatSetValues(C, 1, &k, 1, &r, &one, INSERT_VALUES); CHKERRQ(ierr); 
> } 
> } 
> ierr = MatAssemblyBegin(C, MAT_FINAL_ASSEMBLY); CHKERRQ(ierr); 
> ierr = MatAssemblyEnd(C, MAT_FINAL_ASSEMBLY); CHKERRQ(ierr); 
> 
> ierr = M... 



-- 
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. 
-- Norbert Wiener 


More information about the petsc-users mailing list