Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
7234 Discussions

linking mkl under linux with fortran 95 blas interface

beeboom
Beginner
723 Views

Hi everyone,

I am trying to compile test fortran program using blas with fortran 95 interface.

$ cat mkl_test.f90
program dot_main
use mkl95_blas
use mkl95_precision
real x(10), y(10), res
integer i
do i = 1, 10
x(i) = 2.0e0
y(i) = 1.0e0
end do
res = dot(x,y)
print*, 'SDOT = ', res
end

However, I do not succeed and this is the error message I get:

$ ifort mkl_test.f90 -I$FPATH -L$LIBRARY_PATH -L$LD_LIBRARY_PATH -Wl,--start-group /opt/intel/mkl/10.2.3.029/lib/32/libmkl_blas95.a /opt/intel/mkl/10.2.3.029/lib/32/libmkl_intel_thread.a /opt/intel/mkl/10.2.3.029/lib/32/libmkl_core.a -Wl,--end-group -lguide -lpthread
/opt/intel/mkl/10.2.3.029/lib/32/libmkl_blas95.a(sdot.o): In function `sdot_f95_':
../../../../interfaces/blas95/source/sdot.f90:(.text+0x141): undefined reference to `sdot_'

There is similiar thread at this forum where the problem was solved by specifying -lmkl option at compiling. But according to http://software.intel.com/en-us/articles/performance-tools-for-software-developers-for-easily-migrating-from-mkl-9x-to-10x/ and http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-for-linux-linking-applications-with-intel-mkl-version-100/ since 10th version of mkl libmkl.so was replaced by other libraries. Does somebody know what are the proper options to build this code now?

Thanks!

0 Kudos
2 Replies
Todd_R_Intel
Employee
723 Views

You have...

  • the Fortran 95 interface: libmkl_blas95.a
  • the threading layer: libmkl_intel_thread.a
  • and the core functionality: libmkl_core.a

But I don't see the interface layer: libmkl_intel.a

-Todd

Link Line Advisor.

0 Kudos
beeboom
Beginner
723 Views

Thanks a lot, I found the solution by examining the makefile given in examples subdirectory.

The proper line should look as follows:

export LD_LIBRARY_PATH="/opt/intel/Compiler/11.1/064/mkl/lib/32":"/opt/intel/Compiler/11.1/064/lib/ia32:/opt/intel/Compiler/11.1/064/mkl/lib/32:/opt/intel/mkl/10.2.3.029/lib/32":"/usr/lib"; ifort -xK -I /opt/intel/Compiler/11.1/064/mkl/include/32 -w mkl_test.f90 /opt/intel/Compiler/11.1/064/mkl/lib/32/libmkl_blas95.a "/opt/intel/Compiler/11.1/064/mkl/lib/32"/libmkl_intel.a -Wl,--start-group "/opt/intel/Compiler/11.1/064/mkl/lib/32"/libmkl_intel_thread.a "/opt/intel/Compiler/11.1/064/mkl/lib/32"/libmkl_core.a -Wl,--end-group -L"/opt/intel/Compiler/11.1/064/mkl/lib/32" -liomp5 -lpthread

0 Kudos
Reply