Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
6536 Discussions

ifort compilation error- failes to recognize MKL Lapack function dlange()

srinivasan__srihari
167 Views

Hi, 

  My question is perhaps very bugging since I'm a complete novice.. Could you please advice me about properly linking & compiling my F90 code to use MKL Lapack routines & libraries.. I can already use all MKL Lapack routines without problems but when I try to use a function (like real*8 function dlange), the compilation fails & gives an error like this:

--------------------------------------------------------------------------------------------------------------------------------
srihari@simpatix101:~/atomion/1Dho/propamicro_AngFort$ make -f Make_test
ifort -openmp -O0 -g -check bounds -traceback -heap-arrays -I /opt/intel/Compiler/11.1/089/Frameworks/mkl/include/ -c /homes/srihari/atomion/1Dho/propamicro_AngFort/hills.f90
ifort -openmp -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/mothpl.f90
ifort -openmp -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/vsrtrd.f
ifort -openmp -O0 -g -check bounds -traceback -heap-arrays -I /opt/intel/Compiler/11.1/089/Frameworks/mkl/include/ -c /homes/srihari/atomion/1Dho/source/Libs/matmulpar.f90
ifort -openmp -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/lglnodes.f90
ifort -openmp -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/pleg5.f90
ifort -openmp -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/kingll.f90
ifort -openmp -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/tkingl_mod.f90
ifort -openmp -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/propamicro_AngFort/test.f90
/homes/srihari/atomion/1Dho/propamicro_AngFort/test.f90(19): error #6404: This name does not have a type, and must have an explicit type.   [DLANGE]
 nrm=dlange('1', 10, 10, bla, 10, work)
-----^
compilation aborted for /homes/srihari/atomion/1Dho/propamicro_AngFort/test.f90 (code 1)
make: *** [test.o] Error 1

--------------------------------------------------------------------------------------------------------------------------------
       I have attacked my make file here for reference.. 
details: Using Intel MKL 11.1 on Linux on AMD64 architecture. Multithreaded dynamic linking with LP64. I'm using Intel OpenMP libraries..

I have added *.txt extension just to upload here without problems..

Any & all help will be greatly appreciated! Thanks !

0 Kudos
3 Replies
srinivasan__srihari
167 Views

Correction, the displayed error for the attached make file is this one posted here..
------------------------------------------------------------------------------------------------------------------------

srihari@simpatix101:~/atomion/1Dho/propamicro_AngFort$ make -f Make_propamicro_linux 
ifort  -O0 -g -check bounds -traceback -heap-arrays -I /opt/intel/Compiler/11.1/089/Frameworks/mkl/include/ -c /homes/srihari/atomion/1Dho/propamicro_AngFort/hills.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/de2p_sort.f
ifort  -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/pleg5.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/kingll.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/lglnodes.f90    
ifort  -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/tkingl_mod.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/mothpl.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -I /opt/intel/Compiler/11.1/089/Frameworks/mkl/include/ -c /homes/srihari/atomion/1Dho/source/Libs/matmulpar.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -I /opt/intel/Compiler/11.1/089/Frameworks/mkl/include/ -c /homes/srihari/atomion/1Dho/source/Libs/matinv.f90    
ifort  -O0 -g -check bounds -traceback -heap-arrays -I /opt/intel/Compiler/11.1/089/Frameworks/mkl/include/ -c /homes/srihari/atomion/1Dho/source/Libs/mldivide.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -I /opt/intel/Compiler/11.1/089/Frameworks/mkl/include/ -c /homes/srihari/atomion/1Dho/source/Libs/mldivrect.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/vsrtrd.f
ifort  -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/source/Libs/m_mrgrnk.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -c /homes/srihari/atomion/1Dho/propamicro_AngFort/get_input.f90
ifort  -O0 -g -check bounds -traceback -heap-arrays -lmkl_lapack -I /opt/intel/Compiler/11.1/089/Frameworks/mkl/include/ -c /homes/srihari/atomion/1Dho/propamicro_AngFort/JMpropMod.f90
/homes/srihari/atomion/1Dho/propamicro_AngFort/JMpropMod.f90(562): error #6404: This name does not have a type, and must have an explicit type.   [DLANGE]
  norm='1'; xnrm1=dlange(norm, nc, nc, tmp1, nc, work)
------------------^
compilation aborted for /homes/srihari/atomion/1Dho/propamicro_AngFort/JMpropMod.f90 (code 1)
make: *** [JMpropMod.o] Error 1

------------------------------------------------------------------------------------------------------------------------

 

mecej4
Black Belt
167 Views

It is incorrect for you to expect that the Fortran compiler should know the type of a function other than a Fortran intrinsic function. In particular, the routines in MKL are not required to be available in any standard-conforming Fortran compiler package.

You must provide a type declaration for external functions that are referenced in expressions when the implicit type convention gives an incorrect type or if IMPLICIT NONE is in effect. Do you have an IMPLICIT NONE declaration in your subprogram  that calls dlange() ?

In your specific case, dlange() is of type DOUBLE PRECISION, but the default type for variables and functions starting with 'D' is REAL.

srinivasan__srihari
167 Views

Realized the mistake was in my code.. thanks for the reply! :)

Reply