Community
cancel
Showing results for 
Search instead for 
Did you mean: 
90 Views

undefined reference to `slasrt2'

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
90 Views

Doesn't any one have answer to my question ?
Gennady_F_Intel
Moderator
90 Views

Could you please try to call_SLASRT2 instead of SLASRT2.
--Gennady
jon46089
Beginner
90 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?




psantos
Beginner
90 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
mecej4
Black Belt
90 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]

Reply