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

Composer 15 can't find MKL

cygnetmama
Beginner
482 Views

Hi.  I just installed Composer 15 and the associated MKL libraries and integrated them with my previously existing version of Parallel Studio 2010.  The web told me that Composer 15 would replace Composer 13, which I had not uninstalled, but it appears to have installed Composer 15 in its own folder, while leaving Composer 13 alone. 

I rebooted my computer and tried to compile and link some code using a makefile.  I got the following errors:

Wal83.f(5): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [MKL95_LAPACK]

      USE mkl95_LAPACK, ONLY: GEEV

----------^

Wal83.f(241): error #6406: Conflicting attributes or multiple declaration of name.   [GEEV]

        CALL GEEV(TestMat,WR,WI,INFO=INFO)

-------------^

Wal83.f(5): error #6580: Name in only-list does not exist.   [GEEV]

      USE mkl95_LAPACK, ONLY: GEEV

------------------------------^

compilation aborted for Wal83.f (code 1)

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Intel\Composer XE 2015\bin\intel64\ifort.EXE"' :

 return code '0x1'

Stop.

According to information given at https://software.intel.com/en-us/node/528327, I ran the following command from the command line, while in the following directory: C:\Program Files (x86)\Intel\Composer XE 2015\mkl\bin.

mklvars intel64 mod

I tried running the makefile again, rebooted my computer again, and tried running the makefile a third time.  Each time I got the same errors as before.

It appears that the compiler can’t find the mkl library, but I don’t know what else to do to set the path.

The code for the makefile I am using for composer 2015 is:

LINCL=C:\Program Files (x86)\Intel\Composer XE 2015\mkl\include

LINCL_95=C:\Program Files (x86)\Intel\Composer XE 2015\mkl\include\intel64\lp64

L1=C:\Program Files (x86)\Intel\Composer XE 2015\mkl\lib\intel64\mkl_intel_lp64.lib

L2=C:\Program Files (x86)\Intel\Composer XE 2015\mkl\lib\intel64\mkl_intel_thread.lib

L3=C:\Program Files (x86)\Intel\Composer XE 2015\mkl\lib\intel64\mkl_core.lib

L4=C:\Program Files (x86)\Intel\Composer XE 2015\mkl\lib\intel64\mkl_sequential.lib

L5=C:\Program Files (x86)\Intel\Composer XE 2015\mkl\lib\intel64\mkl_blas95_lp64.lib

L6=C:\Program Files (x86)\Intel\Composer XE 2015\mkl\lib\intel64\mkl_lapack95_lp64.lib

all:

      ifort /I"$(LINCL)" /I"$(LINCL_95)" Wal83.f Wmod83.f ModApril2013.f  \

      "$(L1)" "$(L2)" "$(L3)" "$(L4)" "$(L5)" "$(L6)"

cls:

      del -f *.obj *.exe *.log

If anyone can help me, I would be most grateful!

Rebecca

      

0 Kudos
7 Replies
mecej4
Honored Contributor III
482 Views

They have simplified the module names for Lapack95 (but not the library names).

Look in the ...\mkl\include\ia32 or ..\mkl\include\intel64\lp64 directories for the new module names. In your source code, instead of "USE MKL95_LAPACK" you should put "USE LAPACK95".

Alternatively, and especially if you want your code to work with old and new versions of MKL, make a copy of the new module file and rename the copy to the old name.

0 Kudos
cygnetmama
Beginner
482 Views

Dear mecej4,

Thank you so much for your prompt, clear and helpful response!  I copied and renamed the Lapack module, and that did indeed get rid of the aforementioned problem.

Unfortunately, another problem is now apparent from the following error messages:

mkl_intel_thread.lib(mkl_print_verbose.obj) : error LNK2019: unresolved external symbol omp_get_thread_num referenced in function mkl_serv_print_verbose_info

mkl_intel_thread.lib(mkl_threading.obj) : error LNK2019: unresolved external symbol omp_in_parallel referenced in function mkl_serv_get_max_threads

mkl_intel_thread.lib(mkl_threading.obj) : error LNK2019: unresolved external symbol omp_get_max_threads referenced in function mkl_serv_get_max_threads

mkl_intel_thread.lib(mkl_threading.obj) : error LNK2019: unresolved external symbol omp_get_num_procs referenced in function count_cores_impl_win32_or_ver_6_0_or_less

Wal83.exe : fatal error LNK1120: 4 unresolved externals

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Intel\Composer XE 2015\bin\intel64\ifort.EXE"' :

 return code '0x460'

Stop.

I looked around to see if something else in my source code or makefile needed to be renamed, but could not find anything.  Can you (or can anyone else) help with these new errors?

Thank you!

Mrs. Swan

 

0 Kudos
mecej4
Honored Contributor III
482 Views

It's a bit doubtful if adding the /Qopenmp option will take care of the problem (since you did not list the options used to compile and build), but it may do the trick.

With any but the simplest applications, it is good to use the MKL Link Line Advisor (available on line or installed locally). See https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor .

0 Kudos
cygnetmama
Beginner
482 Views

Hi mecej4,

I was not using any compiler options, and adding the /Qopenmp option did indeed take care of the problem.  Thank you.

Does this mean that the MKL associated with Composer 15 requires openmp, whereas the MKL associated with Composer 13 did not?  I did not use openmp in any of my scripts, and the makefile (that does not use any compiler options)  that I showed in my first post worked  perfectly with the exact same scripts using Composer 13.  

Thank you again for the help.

Cygnetmama

0 Kudos
mecej4
Honored Contributor III
482 Views

There are many places (even more so on Windows) where pieces of the option set for IFort are kept, so it is difficult to answer without looking at all those places, for the new compiler and the old compiler.

The Intel compiler has a large number of options, some of which may change from version to version. Some options are even allowed to stay after they cease to have any effect, in order to allow old makefiles to continue working. It would be nice to see "warning: option xxx is ignored".

You can see the IFort options related to parallelization at https://software.intel.com/en-us/node/525010 .

0 Kudos
cygnetmama
Beginner
482 Views

mecej4,

Thank you again for all of your help!  

cygnetmama

0 Kudos
Steven_L_Intel1
Employee
482 Views

MKL has made changes over the years which require users to change build options and even sources. Looking at the current MKL documentation, it specifies linking with the OpenMP library (libiomp5md.lib) in all cases.

You should assume that when the MKL version changes that you may need to make build or source changes. Be sure to read the MKL release notes carefully.

0 Kudos
Reply