- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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.Link Copied
5 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Doesn't any one have answer to my question ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Could you please try to call_SLASRT2 instead of SLASRT2.
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Pedro
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page