Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
6 Views

Errors with using FGMRES solving large scale problems

I'm using FGMRES to solve some large scale problems.And now I have encountered with some errors when I allocate the memory for the tmp array.

The MKL references say that,the FGMRES subroutine must have a parameter named tmp,which length is N* (2 * N+ 1) + (N* (N+ 9)) / 2 + 1,where N is the problem's dimension.

My question is,when my problem's dimension is about 4e11,I can do it well.But when I increase the number of unknows and when it comes to about 2e12,I can't allocate the memory for array tmp.I catch the error "bad alloc".

My computer has 256G RAM,and I also found that when I allocate the memory successfully,the program didn't occupy the memory immediately.So I think it might be some other errors.

And the last question,if I cannot do the FGMRES with large problems,does it mean the FGMRES is not suitable for that?

Thanks in advance,

Solo

 

0 Kudos
4 Replies
Highlighted
Beginner
6 Views

Some correct:

4e11 and 2e12 are not the dimension but the result to N* (2 * N+ 1) + (N* (N+ 9)) / 2 + 1,

0 Kudos
Highlighted
Moderator
6 Views

I am not sure understand how you allocate even 4e11 array because of it will require == sizeof(double) * 4 * e 11 > 3200 Gb. 

0 Kudos
Highlighted
Beginner
6 Views

Gennady Fedorov (Intel) wrote:

I am not sure understand how you allocate even 4e11 array because of it will require == sizeof(double) * 4 * e 11 > 3200 Gb. 

Sorry,I made a mistake that the formulation shouldn't be that.

But one more question,can I perform the preconditioner subroutine dcsrilu0 in parallel?and how?

Thanks a lot

0 Kudos
Highlighted
Beginner
6 Views

Gennady Fedorov (Intel) wrote:

I am not sure understand how you allocate even 4e11 array because of it will require == sizeof(double) * 4 * e 11 > 3200 Gb. 

Sorry,I made a mistake that the formulation shouldn't be that.

But one more question,can I perform the preconditioner subroutine dcsrilu0 in parallel?and how?

Thanks a lot

0 Kudos