Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28652 Discussions

Sparse solver running out of memory - Need to compile in 64 bits?

Roberto_Soares
Beginner
705 Views
Hi,

I few months ago I posted a problem of solving large matrices in Windows 32 bits. I understand thatdss_solve-real runs out of memory for large problems.
I was advised to use 64 bits instead. However I tried this option and it still didn't work. My guess is that I should compile the code for 64 bits, is that right?
If not, any advice would be appreciated.
Thanks
Roberto
0 Kudos
1 Solution
Steven_L_Intel1
Employee
705 Views
Ok - in that case you should be able to do this by building the application in a 64-bit configuration. Select Build > Configuration Manager and under Platform, select New. It should default the rest to "x64" which is what you want.

View solution in original post

0 Kudos
7 Replies
Steven_L_Intel1
Employee
705 Views
You would need to use the 64-bit compiler (we call it "Intel 64") and run it on a 64-bit system (for example, Windows 7 x64). Does this application use dynamically allocated memory or does it simply rely on large declared arrays?

What is the symptom when it "runs out of memory"?
0 Kudos
Roberto_Soares
Beginner
705 Views
Hi Steve,

Thanks for the answer.I am trying to solve a FEM matrix 300K x 300K (lines) however my sparse subroutine is running out of memory in the dss_solve-real part of it. I was told that DSS cannot solve more than 2000x10^6 double nonzero elements. Also, that this problem should be solved when using Win 64.
I allocate and deallocate lots of memory throughout the entire FEM code. When it reaches the actual solver part it just stops with a "out of memory" message.
Any further suggestions?
Roberto
0 Kudos
Steven_L_Intel1
Employee
706 Views
Ok - in that case you should be able to do this by building the application in a 64-bit configuration. Select Build > Configuration Manager and under Platform, select New. It should default the rest to "x64" which is what you want.
0 Kudos
jimdempseyatthecove
Honored Contributor III
705 Views
300K x 300K if doubles and if not sparse represents ~720GB of data and sparse matrix will be less (half?). Although x64 can handle the virtual addressing without a problem, your Windows swap (paging) file must be able to handle this plus additional capacity. Try seeing if there is an issue with your setup for the paging file.

Jim Dempsey
0 Kudos
Roberto_Soares
Beginner
705 Views
Thanks Jim,
I was able to compile in x64. The matrix is sparse and symmetric, so it should be a lot less than ~720GB. I will try it again and see what happens. Thanks for the inputs.
Roberto
0 Kudos
Roberto_Soares
Beginner
705 Views
Hi Steve,
I just upgraded to Fortran XE. Initially I had a problem with "libguide.lib cannot be found". I believe I fixed it. I also added all the new 32 and 64 bits libraries to the linker. I also added the mkl_intel_lp64.lib in the project's library.
At first, I thought I had been able to compile in 64 bits, but that wasn't true. I am getting problems with the DSS commands. It gives me the following errors:
Error 2 error LNK2001: unresolved external symbol mkl_serv_set_progress ---> in File: mkl_intel_lp64.lib(_dss_delete_lp64.obj)
Error 8 error LNK2019: unresolved external symbol mkl_pds_lp64_dss_create referenced in function dss_create ---> in File: mkl_intel_lp64.lib(_dss_create_lp64.obj)

Iam not too sure what they mean.
Roberto

0 Kudos
Steven_L_Intel1
Employee
705 Views
I suggest you ask for help in our MKL forum section and provide more details, such as attaching the buildlog.htm from the failed build.
0 Kudos
Reply