error in linking

Open discussion for MAGMA

error in linking

Postby welcome2010 » Tue Oct 13, 2009 9:37 am

Hi,

I've just downloaded Magma, modified make.inc with path to Intel MKL, and ran make. I'm getting the following error while linking. Could you please let me know if I'm missing anything? Thanks.

make
( cd testing; make )
make[1]: Entering directory `/home/st/sbyna/necla/cuda_trials/benchmarks/magma_0.1/testing'
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_spotrf.cpp -o testing_spotrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_spotrf_gpu.cpp -o testing_spotrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_sgeqrf.cpp -o testing_sgeqrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_sgeqrf_gpu.cpp -o testing_sgeqrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_sgetrf.cpp -o testing_sgetrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_sgetrf_gpu.cpp -o testing_sgetrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dpotrf.cpp -o testing_dpotrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dpotrf_gpu.cpp -o testing_dpotrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dgeqrf.cpp -o testing_dgeqrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dgeqrf_gpu.cpp -o testing_dgeqrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dgetrf.cpp -o testing_dgetrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dgetrf_gpu.cpp -o testing_dgetrf_gpu.o
gcc -fPIC testing_spotrf.o -o testing_spotrf -L../lib \
-lcuda -lmagma -lmagmablas -L/opt/intel/mkl721/lib/em64t -L/usr/local/cuda/lib -lmkl_em64t -lguide -lpthread -lcublas -lm get_nb.cpp
testing_spotrf.o: In function `main':
testing_spotrf.cpp:(.text+0x31e): undefined reference to `spotrf_'
testing_spotrf.cpp:(.text+0x383): undefined reference to `slange_'
testing_spotrf.cpp:(.text+0x3cb): undefined reference to `slange_'
../lib/libmagma.a(spotrf.o): In function `magma_spotrf(char*, int*, float*, int*, float*, int*)':
spotrf.cpp:(.text+0x154): undefined reference to `spotrf_'
spotrf.cpp:(.text+0x3ce): undefined reference to `spotrf_'
spotrf.cpp:(.text+0x429): undefined reference to `spotrf_'
../lib/libmagma.a(auxiliary.o): In function `dqrt02(int*, int*, int*, double*, double*, double*, double*, int*, double*, double*, int*, double*, double*)':
auxiliary.cpp:(.text+0x450): undefined reference to `dlamch_'
auxiliary.cpp:(.text+0x481): undefined reference to `dlaset_'
auxiliary.cpp:(.text+0x4b5): undefined reference to `dlacpy_'
auxiliary.cpp:(.text+0x4f7): undefined reference to `dorgqr_'
auxiliary.cpp:(.text+0x521): undefined reference to `dlaset_'
auxiliary.cpp:(.text+0x546): undefined reference to `dlacpy_'
auxiliary.cpp:(.text+0x5b6): undefined reference to `dlange_'
auxiliary.cpp:(.text+0x5eb): undefined reference to `dlange_'
auxiliary.cpp:(.text+0x66e): undefined reference to `dlaset_'
auxiliary.cpp:(.text+0x6c5): undefined reference to `dlansy_'
../lib/libmagma.a(auxiliary.o): In function `sqrt02(int*, int*, int*, float*, float*, float*, float*, int*, float*, float*, int*, float*, float*)':
auxiliary.cpp:(.text+0x780): undefined reference to `slamch_'
auxiliary.cpp:(.text+0x7b1): undefined reference to `slaset_'
auxiliary.cpp:(.text+0x7e5): undefined reference to `slacpy_'
auxiliary.cpp:(.text+0x827): undefined reference to `sorgqr_'
auxiliary.cpp:(.text+0x851): undefined reference to `slaset_'
auxiliary.cpp:(.text+0x876): undefined reference to `slacpy_'
auxiliary.cpp:(.text+0x8e6): undefined reference to `slange_'
auxiliary.cpp:(.text+0x91f): undefined reference to `slange_'
auxiliary.cpp:(.text+0x9b3): undefined reference to `slaset_'
auxiliary.cpp:(.text+0xa0a): undefined reference to `slansy_'
collect2: ld returned 1 exit status
make[1]: *** [testing_spotrf] Error 1
make[1]: Leaving directory `/home/st/sbyna/necla/cuda_trials/benchmarks/magma_0.1/testing'
make: *** [test] Error 2
welcome2010
 
Posts: 2
Joined: Tue Oct 13, 2009 9:23 am

Re: error in linking

Postby Stan Tomov » Tue Oct 13, 2009 1:57 pm

Hi,
The undefined functions are in the LAPACK library and should be recognized (in general) in the MKL library when you link with
"-L/opt/intel/mkl721/lib/em64t -lmkl_em64t -lguide"
What version of gcc and mkl are you using? We use mkl 10.0.1.014 and compile exactly in the way you are trying.
Would replacing "-lmkl_em64t -lguide" by "-lmkl_sequential -lmkl_intel_lp64 -lmkl_core" work?
If not what are you getting from
nm /opt/intel/mkl721/lib/em64t/libmkl_intel_lp64.a | grep 'spotrf_'

Something like this?
_spotrf_lp64.o: 0000000000000000 T spotrf_


Stan
Stan Tomov
 
Posts: 253
Joined: Fri Aug 21, 2009 10:39 pm

Re: error in linking

Postby welcome2010 » Wed Oct 14, 2009 9:48 am

Hi Stan,

Thanks for your response. Replacing "-lmkl_em64t -lguide" with "-lmkl_lapack -lmkl_em64t -lguide" helped solving the problem. Older versions of MKL (7.2.1 in our case) probably have the LAPACK library separately.

Suren.
welcome2010
 
Posts: 2
Joined: Tue Oct 13, 2009 9:23 am


Return to User discussion

Who is online

Users browsing this forum: No registered users and 3 guests

cron