Open discussion for MAGMA library (Matrix Algebra on GPU and Multicore Architectures)
-
miseiler
- Posts: 2
- Joined: Tue Oct 29, 2013 12:58 pm
Post
by miseiler » Tue Oct 29, 2013 1:04 pm
Hi, I'm trying to get HiPLARM working correctly, and I've come upon a snag.
I compiled MAGMA with the following make.inc:
Code: Select all
GPU_TARGET=Tesla
CC = gcc
NVCC = /usr/local/cuda/bin/nvcc
FORT = gfortran
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
OPTS = -fPIC -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_SETAFFINITY
F77OPTS = -fPIC -O3 -DADD_ -Wall
FOPTS = -fPIC -O3 -DADD_ -Wall -x f95-cpp-input
NVOPTS = -O3 -DADD_ -Xcompiler -fno-strict-aliasing,-fPIC
LDOPTS = -fPIC -fopenmp
LIB = -lopenblas -lpthread -lcublas -lcudart -lstdc++ -lm -lgfortran
CUDADIR = /usr/local/cuda
LIBDIR = -L/u2/home/miseiler/tmp/LALibs/lib -L/usr/local/cuda/lib64
INC = -I/usr/local/cuda/include
And all seems to go fine. However, libmagma.so has some undefined symbols:
Code: Select all
ld lib/libmagma.so ──(Tue,Oct29)─┘
ld: warning: cannot find entry symbol _start; not setting start address
lib/libmagma.so: undefined reference to `magmablas_chemv2'
lib/libmagma.so: undefined reference to `magmablas_ssymv2'
lib/libmagma.so: undefined reference to `magmablas_dsymv2'
And I can't get HiPLARM to link libmagma without them. Any ideas? Thanks!
-
mgates3
- Posts: 918
- Joined: Fri Jan 06, 2012 2:13 pm
Post
by mgates3 » Tue Oct 29, 2013 1:56 pm
Are you really using an old CUDA architecture 1.x card (i.e., GPU_TARGET=Tesla)?
Cards in the past few years are either Fermi or Kepler. Changing the GPU_TARGET to Fermi or Kepler should solve the problem.
(Sorry for the confusion -- Nvidia uses "Tesla" to mean two different things: (1) CUDA arch 1.x and (2) their high-end GPU line across various CUDA arch. We used it in the former way.)
-mark
-
miseiler
- Posts: 2
- Joined: Tue Oct 29, 2013 12:58 pm
Post
by miseiler » Tue Oct 29, 2013 1:57 pm
mgates3 wrote:Are you really using an old CUDA architecture 1.x card (i.e., GPU_TARGET=Tesla)?
Cards in the past few years are either Fermi or Kepler. Changing the GPU_TARGET to Fermi or Kepler should solve the problem.
(Sorry for the confusion -- Nvidia uses "Tesla" to mean two different things: (1) CUDA arch 1.x and (2) their high-end GPU line across various CUDA arch. We used it in the former way.)
-mark
Yes, it is a real 1.x device.
It's actually a GTX295 and not a Tesla; I forgot we installed the Tesla (original) in another machine. Still compute 1.3
-
mgates3
- Posts: 918
- Joined: Fri Jan 06, 2012 2:13 pm
Post
by mgates3 » Thu Oct 31, 2013 4:54 pm
The multi-GPU Fermi hemv was erroneously compiled on Tesla, and it calls the hemv2. Attached is a patch to fix the problem. Let me know if that works.
cd magma-1.4.0
patch -p1 < hemv2patch.txt
-mark
-
Attachments
-
- hemv2patch.txt
- (4.43 KiB) Downloaded 161 times