I'm trying to install the latest magma on ubuntu 12.04, and am encountering the following issue.
I have installed cuda, blas and lapack via apt-get. This is my make.inc file:
- Code: Select all
GPU_TARGET ?= Tesla
CC = gcc
NVCC = nvcc
FORT = gfortran
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
OPTS = -O3 -DADD_ -fopenmp -DMAGMA_SETAFFINITY
F77OPTS = -O3 -DADD_
FOPTS = -O3 -DADD_ -x f95-cpp-input
NVOPTS = -O3 -DADD_ -Xcompiler -fno-strict-aliasing
LDOPTS = -fopenmp
# Depending on how ATLAS and LAPACK were compiled, you may need one or more of:
# -lifcore -ldl -lf2c -lgfortran
LIB = -llapack -lf77blas -latlas -lcblas -lcublas -lcudart -lstdc++ -lm -lgfortran -lifcore
# define library directories here or in your environment
LAPACKDIR = /usr/lib/lapack
ATLASDIR = /usr/lib/atlas-base
CUDADIR = /usr/local/cuda-5.5
I have only changed the GPU type to Tesla as I'm using an older GPU which is 1.1 compute capability. And I've edited the include directories.
Now, when I run make, the compilation proceeds fine until it gets to dsymv_tesla.cu where the following error ocurrs multiple times.
- Code: Select all
dsymv_tesla.cu(99): error: identifier "MAGMA_D_SET2DOUBLE" is undefined
It is called as
- Code: Select all
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res1,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res, 0) ;
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res2,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res2,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res_,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res2,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res1,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res_,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(buff[tx],0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(la[0][bank_shift*(ty_+j)+tx_], 9999);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res1,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(la[0][bank_shift*(ty_+j)+tx_], 99999);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res2,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res2,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res_,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(tr[j/8], 99999);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res2,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res1,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res_,0);
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(res_, 0) ;
dsymv_tesla.cu: MAGMA_D_SET2DOUBLE PRECISION(Ca, 0) ;
I've done some looking around and in "magma_types.h" there are defined MAGMA_S_SET2REAL and MAGMA_D_SET2REAL, but not the one that is missing. Also, MAGMA_D_SET2DOUBLE is only used in dsymv_tesla.cu, while e.g. dsymv_fermi.cu uses MAGMA_D_SET2REAL.
I'm not really sure what to do to fix it, can I just replace the calls to SET2DOUBLE with SET2REAL, or do I add a line in "magma_types.h" or am I doing something completely wrong?