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

undefined reference to `slasrt2'

universenavigator
620 Views
I have made a simple application to test the MKL and I used the function slasrt and used the link line advisor and every thing worked fine without any problem.
Thats ok.

The problem is: When I try to use slasrt2 he give me the ugly undefined reference to `slasrt2' error.

I use Qt and this is the command that Qt generate to link my app

g++ -o MKLTest main.o -L/usr/lib -L/opt/intel/mkl/10.2.5.035/lib/32 -lmkl_scalapack_core /usr/lib/libmkl_solver.a -Wl,--start-group -lmkl_intel -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi -Wl,--end-group -liomp5 -lmpi -lQtCore -lpthread

please note again that the app worked fine with slasrt the problem only is with the slasrt2.

0 Kudos
5 Replies
universenavigator
621 Views
Doesn't any one have answer to my question ?
0 Kudos
Gennady_F_Intel
Moderator
621 Views
Could you please try to call_SLASRT2 instead of SLASRT2.
--Gennady
0 Kudos
jon46089
Beginner
621 Views
If I use call_SLASRT2 instead of SLASRT2 then the compiler generates following error message:

Error 1 error #5192: Lead underscore not allowed

So, what do you mean by suggesting "please try to call_SLASRT2 instead of SLASRT2"

Your suggestion makes no sense?




0 Kudos
psantos
Beginner
621 Views
Hello. Are you compiling with IA-32 or intel64? If you are using intel64 go to project properties>linker>input and in the tab Additional deppendencies add "mkl_scalapack_lp64.lib". If you are compiling in IA-32 add "mkl_scalapack_core.lib" in the same place. It should do the job. Be sure to have set the appropriates .lib and include paths, since sometimes the compiler couldn't find this libraries. I hope this solve your issue.

Pedro
0 Kudos
mecej4
Honored Contributor III
620 Views
For some odd reason, slasrt2 and dlasrt2 have been put into the SCALAPACK library. Therefore, to link those routines, you need to choose SCALAPACK as the "cluster" library, even if you have no need for it otherwise and are tempted to select "none". Here is a small test example, and the link line.
[fxfortran]      program tslasrt2
      implicit none
      integer i,n,key(10),info
      real d(10)
      character*1 id
      n=10
      id='D'
      do i=1,n
         d(i)=mod(nint(2.718*i*i),20)
         key(i)=i
      end do
      call slasrt2(id,n,d,key,info)
      if(info.ne.0)then
         write(*,*)' info = ',info
         stop
      endif
      do i=1,n
         write(*,10)i,d(i),key(i)
      end do
   10 format(1x,I4,F10.5,2x,I4)
      end
[/fxfortran]
The 64-bit link line:
[bash]ifort -openmp tslasrt.f $MKLROOT/libmkl_scalapack_lp64.a 
      -Wl,--start-group $MKLROOT/libmkl_intel_lp64.a 
      $MKLROOT/libmkl_intel_thread.a $MKLROOT/libmkl_core.a 
      $MKLROOT/libmkl_blacs_lp64.a -Wl,--end-group 
      -openmp -lpthread
[/bash]
The 32-bit link line:

[bash]ifort tslasrt.f $MKLROOT/libmkl_scalapack_core.a  
    -Wl,--start-group $MKLROOT/libmkl_intel.a 
         $MKLROOT/libmkl_intel_thread.a 
         $MKLROOT/libmkl_core.a 
         $MKLROOT/libmkl_blacs_openmpi.a 
    -Wl,--end-group 
   -openmp -lpthread[/bash]

0 Kudos
Reply