wrote:
> I'm not a particularly savy linux user, but I have managed to install
> Intel Fortran, C++, and MKL on my PC's linux partition (Ubuntu 6.0.6).
> Now I want to use the free Fortran package PROPACK to do singular value
> decompositions of large sparse matrices. Using the make file included
> with PROPACK works fine until it tries to link and optimize the example
> programs included with the package:
>
> make[2]: Entering directory `/home/ron/Desktop/PROPACK/double/Examples'
> ifort -cm -w95 -assume buffered_io -vec_report0 -O3 -ipo -xN -Vaxlib
> -o example.LINUX_ICC_IA32.x example.o matvec.o
> -L/opt/intel/mkl/8.1.1/lib/32 -L.. -L. ../libdpropack_LINUX_ICC_IA32.a
> ../libdlapack_util_LINUX_ICC_IA32.a -lmkl_p4 -lguide
> ../libdlapack_util_LINUX_ICC_IA32.a
> IPO: performing multi-file optimizations
> IPO: generating object file /tmp/ipo_ifort4usUFH.o
> /opt/intel/mkl/8.1.1/lib/32/libmkl_p4.so: undefined reference to
> `vsCos'
> /opt/intel/mkl/8.1.1/lib/32/libmkl_p4.so: undefined reference to
> `vslDeleteStream'
> /opt/intel/mkl/8.1.1/lib/32/libmkl_p4.so: undefined reference to
> `vdSin'
> /opt/intel/mkl/8.1.1/lib/32/libmkl_p4.so: undefined reference to
> `viRngUniformBits'
> /opt/intel/mkl/8.1.1/lib/32/libmkl_p4.so: undefined reference to
> `vslNewStream'
> /opt/intel/mkl/8.1.1/lib/32/libmkl_p4.so: undefined reference to
> `vdCos'
> /opt/intel/mkl/8.1.1/lib/32/libmkl_p4.so: undefined reference to
> `vsSin'
> make[2]: *** [example.LINUX_ICC_IA32.x] Error 1
> make[2]: Leaving directory `/home/ron/Desktop/PROPACK/double/Examples'
>
> I figured out that the above undefined references are functions from
> the Intel VML/VSL package, so I added -lmkl_vml_p4 after -lmkl_p4 in
> the above ifort line, but it still generates the same errors.
>
Maybe you could start by setting your sights a bit lower. If MKL is an
important part of your application, -ipo may be unnecessary. Since
you're using ifort, which duplicates some libraries furnished with MKL,
it's probably better to omit the -L reference for MKL and try to link
the ifort versions of those libraries. Simply give the entire path for
lib_mkl and leave the rest to ifort and its PATH designations. I prefer
to pass -openmp to ifort so that it will take care of libguide and
pthreads. I hesitated to answer, not knowing if something about your
application requires mkl_vml.