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

intel parallel studio XE 2015 cannot find the IMSL library

Chera_B_
Beginner
942 Views

Hi, We have installed Intel parallel studio XE 2015 for Fortran and the IMSL library. However when trying to compile code that contains the USE IMSL statement the compiler produces the following error Error 211 error #7002: Error in opening the compiled module file. Check INCLUDE paths. [IMSL] S:\opan\df105\model\HBdG\GDFS\gds_air\main\framos_sub\attenuation_rain.f 70 The IMSL library is installed in C:\Program Files (x86)\VNI\imsl\ How do I add the correct path to include path? i assume the path should be extended by C:\Program Files (x86)\VNI\imsl\fnl701\Intel64\lib or C:\Program Files (x86)\VNI\imsl\fnl701\IA32\lib depending on 32 or 64 bit executables. Any help is much appreciated. Regards Chera Bekker

0 Kudos
11 Replies
Kevin_D_Intel
Employee
942 Views

Please review Installing and Configuring the IMSL Libraries and see if the information provided helps. It was not clear in your case if you are using the command-line compiler interface or compiling under Visual Studio.

Let us know if that helps resolve the error or not.

0 Kudos
Chera_B_
Beginner
942 Views
Hi Kevin, Thanks for you quick reply I am compiling under Visual Studio and I followed the instructions in the link you provided. I also followed the instructions provided in this thread: https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/273669 If I comment out the use statements the output log is: gds_framos_interface_: warning: TargetPath(S:\opan\df105\model\HBdG\GDFS\gds_air\gds_framos_interface\gds_framos_interface_.exe) does not match the Linker's OutputFile property value (S:\opan\df105\model\HBdG\GDFS\gds_air\gds_framos_interface\gds_framos_interface.exe). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). Compiling with Intel(R) Visual Fortran Compiler XE 15.0.5.280 [IA-32]... ifort /nologo /debug:full /Od /I"." /I"..\main" /Qsave /iface:cvf /module:"./" /object:"./" /Fd".\vc100.pdb" /traceback /check:bounds /libs:qwin /dbglibs /c /extfor:f /Qvc10 /Qlocation,link,"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\\bin" "S:\opan\df105\model\HBdG\GDFS\gds_air\main\assahead_new.f" ifort /nologo /debug:full /Od /I"." /I"..\main" /Qsave /iface:cvf /module:"./" /object:"./" /Fd".\vc100.pdb" /traceback /check:bounds /libs:qwin /dbglibs /c /extfor:f /Qvc10 /Qlocation,link,"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\\bin" "S:\opan\df105\model\HBdG\GDFS\gds_air\main\framos_sub\attenuation_rain.f" Linking... Creating temporary file "RSP1.rsp" with contents [ /OUT:"./gds_framos_interface.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\Program Files (x86)\VNI\imsl\fnl701\IA32\lib" /NODEFAULTLIB:"dfconsol.lib" /MANIFEST /MANIFESTFILE:".\gds_framos_interface_.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"./gds_framos_interface.pdb" /SUBSYSTEM:WINDOWS /ENTRY:"WinMainCRTStartup" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib imsl.lib imsl_dll.lib /MACHINE:I386 "./tofmod.obj" "./initaq.obj" "./waveh.obj" "./sthet.obj" "./fredp.obj" "./reff.obj" "./tramod.obj" "./pposts.obj" "./adglnt.obj" "./initsensor.obj" "./arg2.obj" "./toedp.obj" "./gnfire_new.obj" "./dnoise0.obj" "./todbs.obj" "./slantrange.obj" "./snaarz.obj" "./errint.obj" "./anal.obj" "./readinput.obj" "./supfil_new.obj" "./vset.obj" "./output.obj" "./add_flexure.obj" "./incoh.obj" "./srvrsp.obj" "./getraj2400.obj" "./binocf.obj" "./signoise.obj" "./read_wagtra2400.obj" "./adstab.obj" "./phase.obj" "./diver.obj" "./servo_control.obj" "./vreset.obj" "./others.obj" "./adbias.obj" "./getlena.obj" "./antclutt.obj" "./srvmod.obj" "./get_lun.obj" "./balthe.obj" "./seaclutter.obj" "./read_trajfile.obj" "./adrad_framos.obj" "./inread_interface.obj" "./outvolt.obj" "./divangle.obj" "./trajfit.obj" "./abgprd.obj" "./targetheight.obj" "./framos_sub.obj" "./antarg.obj" "./srvbnd.obj" "./gds.obj" "./asspfh.obj" "./refl_totruedp.obj" "./read_servo.obj" "./adprt3_new.obj" "./measurement_out.obj" "./cohe.obj" "./tposts.obj" "./inpnt.obj" "./wegd.obj" "./targetelev.obj" "./free_lun.obj" "./assapd_hei.obj" "./refl.obj" "./read_ballis.obj" "./admotn.obj" "./measangle_not.obj" "./gds_input.obj" "./antgain.obj" "./logmod.obj" "./gdsfiles.obj" "./assahead_new.obj" "./attenuation_rain.obj" ] Creating command line "Link @"S:\opan\df105\model\HBdG\GDFS\gds_air\gds_framos_interface\RSP1.rsp"" Link: executing 'link' assahead_new.obj : error LNK2019: unresolved external symbol _DLINRG@20 referenced in function _FRAGMENT_EFFECTIVENESS attenuation_rain.obj : error LNK2019: unresolved external symbol _DCSIEZ@24 referenced in function _K_RR_ATMOSPHERIC_ATT ./gds_framos_interface.exe : fatal error LNK1120: 2 unresolved externals Regards Chera
0 Kudos
Kevin_D_Intel
Employee
942 Views

I’m definitely outside my knowledge base not being an IMSL user or having access to it. The one detail I’m wondering about in your compiler options is /iface:cvf.

From other posts and the Fortran User Guide, under Using the IMSL Libraries from the Integrated Development Environment (Windows* OS), in item #3 it says the calling convention must be Default. It appears in your project this setting is toggled to CVF.

What if you restore the USE statement and toggle the calling convention to Default. Does that succeed?

I know we have other forum experts with IMSL knowledge/access so I'm hoping I can lean on them for their help here.

0 Kudos
Lorri_M_Intel
Employee
943 Views

At least try restoring the USE statement; that might be enough if your application needs the /iface:cvf.

 

 

0 Kudos
mecej4
Honored Contributor III
943 Views

1. The version of IMSL that is distributed by Intel (and the versions distributed by Roguewave for use with Intel Fortran) is not compatible with /iface:cvf. If you have to use other libraries in addition to IMSL that use STDCALL calling convention, you will have considerable difficulty getting things to work in projects that use those libraries as well as the new (non-STDCALL) IMSL libraries. One possibility in that case is to use the old IMSL 4.0 libraries with /iface:cvf, but failure is still quite likely.

2. Replace "USE IMSL" by "USE IMSL_LIBRARIES" or "USE NUMERICAL_LIBRARIES", as appropriate (please read the first chapter of the IMSL documentation to decide which of these two is appropriate). Note that removing USE statements as a means of avoiding compile-time errors is a losing proposition. All that happens as a result is that compile-time errors are converted to run-time errors that are much harder to diagnose and fix, or may even go unnoticed and produce erroneous results/output. Kevin and Lorri have given you good advice regarding restoring USE statements.

3. To use IMSL from Visual studio projects, see https://software.intel.com/en-us/articles/installing-and-using-the-imsl-libraries .

4. To build from the command line, use the /Qimsl compiler option, or use the %FFLAGS% and %LINK_FNL% environment variables. For details, see the local IMSL documentation or http://docs.roguewave.com/imsl/fortran/7.1/pdf/imslfnl7-1_gettingstarted-windows.pdf .

One more comment, from a different perspective. The routine LINRG is for explicitly obtaining the inverse of a matrix. From the information that you gave, it is not clear if it is necessary to do that. It is well-known that if the inverse is intended for use in solving a system of linear equations, the inverse should not be computed and stored. More generally, there are several matrix based algorithms in which matrices are not stored explictly but as a sequence of transformations. For example, in the Q-R factorization, the orthogonal matrix Q is stored as the product of a sequence of Householder reflections.

0 Kudos
Chera_B_
Beginner
943 Views
Thank you all for your great replies! What I have done is the following: 1) changed the calling converntion from CVF to default 2) followed the instructions in https://software.intel.com/en-us/articles/installing-and-using-the-imsl-. . 3) re-instated the USE command with "USE IMSL_LIBRARIES" Now i have ended up with two new errors: Error 206 error LNK2019: unresolved external symbol ___kmpc_global_thread_num referenced in function _DP3DER imsl.lib(dp3der.obj) Error 207 error LNK2019: unresolved external symbol ___kmpc_threadprivate_cached referenced in function _DP3DER imsl.lib(dp3der.obj) I guess I need to include some more libraries. Thanks again for all your help! Chera
0 Kudos
mecej4
Honored Contributor III
943 Views

You have not stated how you compiled the source files, in particular what options you used, but I suspect that what you need to add is the /Qopenmp option. If you had used the %FFLAGS% environment variable as a compiler option, as recommended in the IMSL documentation, that would have added /Qopenmp to the compiler options list.

0 Kudos
Chera_B_
Beginner
943 Views
Hi, Thank you for your suggestion. The linker gives Link: warning #10006: ignoring unknown option '/Qopenmp' The commandline for the compiler is /nologo /debug:full /Od /I"." /I"..\main" /Qsave /module:"./" /object:"./" /Fd".\vc100.pdb" /traceback /check:bounds /libs:qwin /dbglibs /c the command line for the linker is /OUT:"./gds_framos_interface.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\Program Files (x86)\VNI\imsl\fnl701\IA32\lib" /NODEFAULTLIB:"dfconsol.lib" /MANIFEST /MANIFESTFILE:".\gds_framos_interface_.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"./gds_framos_interface.pdb" /SUBSYSTEM:WINDOWS /ENTRY:"WinMainCRTStartup" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib imsl.lib imsl_dll.lib /MACHINE:I386 /Qopenmp Could you explain how I can use %FFLAGS% as a compiler option? Is this part of the include path? Regards Chera
0 Kudos
Chera_B_
Beginner
943 Views
To correct the previous post, I just found out that /Qopenmp is in the compiler options. After adding it, the linker does not give any errors anymore and it produces a .exe file. One warming of the linker still puzzles me. gds_framos_interface_: warning: TargetPath(S:\opan\df105\model\HBdG\GDFS\gds_air\gds_framos_interface\gds_framos_interface_.exe) does not match the Linker's OutputFile property value (S:\opan\df105\model\HBdG\GDFS\gds_air\gds_framos_interface\gds_framos_interface.exe). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). Is this a serious issue? Regards Chera
0 Kudos
mecej4
Honored Contributor III
943 Views

Regarding %FFLAGS%, etc., please read the file <install_dir>\imsl\fnl701\IA32\notes\QuickStart.txt, or pages 22, ..  in the link that I gave in #6, item 3.

The warning from VS relates to your having an extra '_' before ".exe" in the output EXE file path-name. Correct it in the appropriate property tab of Visual Studio, or you will experience the confusion that results from having two EXE files with almost the same name.

0 Kudos
Chera_B_
Beginner
943 Views
I finally managed to get everything running. I also opted to not use /Qopenmp but to use the !DEC$ OBJCOMMENT LIB:'libiomp5md.lib'. The reason is that this is a very old application that has never been built with multiple threads in mind. Thanks again for all your help. Chera
0 Kudos
Reply