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

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

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 !

AttachmentSize
Downloadtext/plain Make_propamicro_linux.txt2.79 KB
4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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

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

 

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.

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

Leave a Comment

Please sign in to add a comment. Not a member? Join today