- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear all,
I am trying to compile SCALAPACK 1.8.0 using Intel Compilers 9.1 and linking with Intel MKL 9.0 on a Pentium4 running Debian 32 bit. If I use only the -O3 flag everything works fine.
However, when I activate processor specific optimization -xP or -xN it gives me an error since there is a missining routine:
/opt/openmpi/bin/mpif77 -o /opt/scalapack-1.8.0/TESTING/xslu psludriver.o psluinfo.o psgetrrv.o psmatgen.o pmatgeninc.o pslaschk.o pslafchk.o /opt/scalapack-1.8.0/libscalapack.a /opt/BLACS/LIB/blacsF77init_MPI-LINUX-1.a /opt/BLACS/LIB/blacs_MPI-LINUX-1.a /opt/BLACS/LIB/blacsF77init_MPI-LINUX-1.a -L/opt/intel/mkl/9.0/lib/32/ -lmkl_lapack -lmkl_ia32 -lguide -L/opt/intel/mkl/9.0/lib/32/ -lmkl_lapack -lmkl_ia32 -lguide
/opt/scalapack-1.8.0/libscalapack.a(pslacon.o): In function `pslacon_':
pslacon.f:(.text+0x5a6): undefined reference to `vmlsRound4'
pslacon.f:(.text+0x626): undefined reference to `vmlsRound4'
pslacon.f:(.text+0x68e): undefined reference to `vmlsRound4'
pslacon.f:(.text+0x95e): undefined reference to `vmlsRound4'
pslacon.f:(.text+0x9de): undefined reference to `vmlsRound4'
/opt/scalapack-1.8.0/libscalapack.a(pslacon.o):pslacon.f:(.text+0xa46): more undefined references to `vmlsRound4' follow
make[1]: *** [/opt/scalapack-1.8.0/TESTING/xslu] Error 1
make[1]: Leaving directory `/opt/scalapack-1.8.0/TESTING/LIN'
make: *** [scalapackexe] Error 2
I guess this is a vector routine used by the compiler when it vectorizes some loop. However, it seems that no MKL library defines such a routine. Using nm I have seen that vmlsRound
is defined, but no vmlsRound4.
Does anybody have any clue about this?
Thanks
I am trying to compile SCALAPACK 1.8.0 using Intel Compilers 9.1 and linking with Intel MKL 9.0 on a Pentium4 running Debian 32 bit. If I use only the -O3 flag everything works fine.
However, when I activate processor specific optimization -xP or -xN it gives me an error since there is a missining routine:
/opt/openmpi/bin/mpif77 -o /opt/scalapack-1.8.0/TESTING/xslu psludriver.o psluinfo.o psgetrrv.o psmatgen.o pmatgeninc.o pslaschk.o pslafchk.o /opt/scalapack-1.8.0/libscalapack.a /opt/BLACS/LIB/blacsF77init_MPI-LINUX-1.a /opt/BLACS/LIB/blacs_MPI-LINUX-1.a /opt/BLACS/LIB/blacsF77init_MPI-LINUX-1.a -L/opt/intel/mkl/9.0/lib/32/ -lmkl_lapack -lmkl_ia32 -lguide -L/opt/intel/mkl/9.0/lib/32/ -lmkl_lapack -lmkl_ia32 -lguide
/opt/scalapack-1.8.0/libscalapack.a(pslacon.o): In function `pslacon_':
pslacon.f:(.text+0x5a6): undefined reference to `vmlsRound4'
pslacon.f:(.text+0x626): undefined reference to `vmlsRound4'
pslacon.f:(.text+0x68e): undefined reference to `vmlsRound4'
pslacon.f:(.text+0x95e): undefined reference to `vmlsRound4'
pslacon.f:(.text+0x9de): undefined reference to `vmlsRound4'
/opt/scalapack-1.8.0/libscalapack.a(pslacon.o):pslacon.f:(.text+0xa46): more undefined references to `vmlsRound4' follow
make[1]: *** [/opt/scalapack-1.8.0/TESTING/xslu] Error 1
make[1]: Leaving directory `/opt/scalapack-1.8.0/TESTING/LIN'
make: *** [scalapackexe] Error 2
I guess this is a vector routine used by the compiler when it vectorizes some loop. However, it seems that no MKL library defines such a routine. Using nm I have seen that vmlsRound
is defined, but no vmlsRound4.
Does anybody have any clue about this?
Thanks
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If your mpif77 isn't built to use ifort as the compiler, it won't know all the required libraries. If it is built with ifort, including a similar vectorization option to the one you used when compiling will include the svml library automatically. It's better to set up so that you can use mpif77 -xW, for example, both to compile and to link, and minimize the extent to which you have to specify libraries explicitly. Most of this probably is an FAQ on the openmpi site.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for your answer.
I compiled OpenMPI, BLACS, and SCALAPACK with the same compilers and optimization option, following the OpenMPI FAQ. Moreover, I checked that mpif77 binds ifort and mpicc binds icc.
The compiler does not find the symbol because I guess the symbol is not defined in MKL.
For example, if I look for the missing routine with
/opt/intel/mkl/9.0/lib/32$ nm * --print-file-name | grep -i vmlsRound4
it returns nothing, whereas
/opt/intel/mkl/9.0/lib/32$ nm * --print-file-name | grep -i vmlsRound
returns
libmkl_vml_def.so:0004e3b0 T _vmlsRound
libmkl_vml_p3.so:00058c64 T _vmlsRound
libmkl_vml_p4m.so:0008b390 T _vmlsRound
libmkl_vml_p4p.so:0008b3e0 T _vmlsRound
libmkl_vml_p4.so:0008be30 T _vmlsRound
Thanks again.
Thanks for your answer.
I compiled OpenMPI, BLACS, and SCALAPACK with the same compilers and optimization option, following the OpenMPI FAQ. Moreover, I checked that mpif77 binds ifort and mpicc binds icc.
The compiler does not find the symbol because I guess the symbol is not defined in MKL.
For example, if I look for the missing routine with
/opt/intel/mkl/9.0/lib/32$ nm * --print-file-name | grep -i vmlsRound4
it returns nothing, whereas
/opt/intel/mkl/9.0/lib/32$ nm * --print-file-name | grep -i vmlsRound
returns
libmkl_vml_def.so:0004e3b0 T _vmlsRound
libmkl_vml_p3.so:00058c64 T _vmlsRound
libmkl_vml_p4m.so:0008b390 T _vmlsRound
libmkl_vml_p4p.so:0008b3e0 T _vmlsRound
libmkl_vml_p4.so:0008be30 T _vmlsRound
Thanks again.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The need for the VML functions actually arise from the vectorization of operations in the compiled code, which is why you saw different behavior depending on optimization level. At higher levels of optimization there is vectorization of some operations which requires compiler run-time libary support. MKL linking behavior should never be dependent on the level of optimization used by the user to compile the program.
Bruce

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