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

Intel Fortran XE 2015 producing large dll's

wagnerkamakura
Beginner
380 Views

I am re-compiling old code that I originall used to produce 32-bnit dll's into 64-bit dll's, and noticed that the 64-bit dll's produced by Intel Fortran Composer XE 2015 (with IMSL) are much larger than the 32-bit equivalents I had compiled with another compiler a long while ago.

The older 32-bit dll's had between 200K to 600K, while the 64-bit dll's produced with Fortran composer XE are between 8Mb and 10Mb!

What am I doing wrong?  Here's my project setup:

Fortran command line:  /nologo /O2 /module:"x64\Release\\" /object:"x64\Release\\" /Fd"x64\Release\vc120.pdb" /libs:static /threads /c

Linker commend line: /OUT:"x64\Release\FortDLL.dll" /NOLOGO /MANIFEST /MANIFESTFILE:"x64\Release\FortDLL.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /SUBSYSTEM:WINDOWS /IMPLIB:"E:\WAKData\Dropbox\FortDLL\FortDLL\x64\Release\FortDLL.lib" /DLL

 

Thanks,

 

Wagner 

0 Kudos
3 Replies
jimdempseyatthecove
Honored Contributor III
380 Views

Two possible causes:

a) There was a post elsewhere on the forum where it was noticed that some standard runtime messages were redundantly insert into the code, when it should have been inserting an index into a standard message table.

b) Interprocedural optimizations is default enabled. Try disabling interprocedural optimizations.

Jim Dempsey

0 Kudos
wagnerkamakura
Beginner
380 Views

Jim,.

Thank you for your suggestions.  My project settings had interprocedural optimizations disabled.  I tried to enable them (/Qpro), but the dll size did not change.

Regarding your first suggestion, could you elaborate on the potential solution?

 

Wagner 

 

0 Kudos
Steven_L_Intel1
Employee
380 Views

I would suggest that in the past you weren't using /libs:static. This includes the entire run-time library for Fortran and C into your DLL. Best to not do that and use the DLL redistributables on a target system.

The issue Jim mentions doesn't apply to you since you have not enabled /check:bounds.

0 Kudos
Reply