- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am using Windows 7 64-bit with Intel Parallel Studio XE 2013. I have a .FOR file that contains the following line called within a module:
use mkl_dss
which obviously comes from the Math Kernel Library.
I tried compiling at as shown below:
D:\TEMP\TRUNK-IFORT>ifort -free -fpp -D__INTEL_COMPILER -c Solver.FOR /Qmkl=parallel
Which results in:
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Inte
l(R) 64, Version 13.0.1.119 Build 20121008
Copyright (C) 1985-2012 Intel Corporation. All rights reserved.
fpp: warning: macro redefined: __INTEL_COMPILER
Solver.FOR(25): error #7002: Error in opening the compiled module file. Check I
NCLUDE paths. [MKL_DSS]
use mkl_dss
----------^
I've tried several things such as running the mklvars.bat file but none of them worked. What might be the root cause of this? How can I get the MKL library to be recognized by my module?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There is a source file named mkl_dss.f90 in the MKL includes directory. Compile that for the platform(s) of your choice and, at your option, place the mkl_dss*.mod files that are then produced in the ia32 or intel64\lp64 or intel64\ilp64 directories, as appropriate. You can also place them in another working directory, if you so choose.
You can achieve the same effect by adding
include 'mkl_dss.f90'
in one of your source files outside any subprogram code, but this will cause the .mod files to be regenerated every time that you recompile your source files. This repetitious regeneration is unnecessary, and may cause a slight delay in the compilations.
Most MKL projects do not use the DSS routines. That is why /Qmkl, etc., will not make a difference if you do not make the module files available to the compiler.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi mecej4. I followed your first piece of advice, namely to compile the mkl_dss.f90 source file first and then compile the module that depends on it. Compiling mkl_dss.f90 generates 1 .obj file and 2 .mod files. They are mkl_dss.obj, mkl_dss_private.mod and mkl_dss.mod. The module that depends on mkl_dss.f90 compiles fine with no errors. Unfortunately when I try to compile the main program I get a number of unresolved references for some interface items in mkl_dss.f90:
Solver.obj : error LNK2019: unresolved external symbol DSS_CREATE referenced in function MODSOLVER_mp_CREATEPROFILEDSS Solver.obj : error LNK2019: unresolved external symbol DSS_DEFINE_STRUCTURE refe renced in function MODSOLVER_mp_CREATEPROFILEDSS Solver.obj : error LNK2019: unresolved external symbol DSS_REORDER referenced in function Solver.obj : error LNK2019: unresolved external symbol DSS_FACTOR_REAL_D_ refere nced in function Solver.obj : error LNK2019: unresolved external symbol DSS_SOLVE_REAL_D referenc ed in function Solver.obj : error LNK2019: unresolved external symbol DSS_DELETE referenced in function MAIN.exe : fatal error LNK1120: 6 unresolved externals
Something is obviously missing here but I'm not sure what. Is there an additional module mkl_dss.f90 depends on which I'm not aware of ?
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The DSS routines are contained in the MKL libraries. In the link step, you must specify that the MKL libraries should be used. For simple cases, you can use the /Qmkl option of the compiler; for more complex projects, please see the MKL Link Line Advisor (see https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor ) and configure the command line accordingly.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page