Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.
29310 Discussions

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

Roberto_Soares
Beginner
1,355 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
1,355 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
1,355 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
1,355 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
1,356 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
1,355 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
1,355 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
1,355 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
1,355 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