My problem with compiling MAGMA
My problem with compiling MAGMA
I can get the compile to run as far as, and past, the ranlib step. Here is the output from there on.
ranlib ../lib/libmagma.a
make[1]: Leaving directory `/export/home1/scratch/magma-1.4.1/src'
======================================== control
( cd control && make )
make[1]: Entering directory `/export/home1/scratch/magma-1.4.1/control'
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c zpanel_to_q.cpp -o zpanel_to_q.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c zprint.cpp -o zprint.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c magma_zf77pgi.cpp -o magma_zf77pgi.o
magma_zf77pgi.cpp: In function ‘void magma_zgebrd_(magma_int_t*, magma_int_t*, double2*, magma_int_t*, double*, double*, double2*, double2*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:77: error: cannot convert ‘double2*’ to ‘magma_int_t*’ for argument ‘11’ to ‘magma_int_t magma_zgebrd(magma_int_t, magma_int_t, magmaDoubleComplex*, magma_int_t, double*, double*, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*, magma_int_t, magma_int_t*)’
magma_zf77pgi.cpp: In function ‘void magma_zgehrd_(magma_int_t*, magma_int_t*, magma_int_t*, double2*, magma_int_t*, double2*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:80: error: invalid conversion from ‘magma_int_t*’ to ‘magma_int_t’
magma_zf77pgi.cpp:80: error: initializing argument 8 of ‘magma_int_t magma_zgehrd(magma_int_t, magma_int_t, magma_int_t, magmaDoubleComplex*, magma_int_t, magmaDoubleComplex*, magmaDoubleComplex*, magma_int_t, magmaDoubleComplex*, magma_int_t*)’
magma_zf77pgi.cpp: In function ‘void magma_zlabrd_(magma_int_t*, magma_int_t*, magma_int_t*, double2*, magma_int_t*, double*, double*, double2*, double2*, double2*, magma_int_t*, double2*, magma_int_t*, double2*, magma_int_t*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:95: error: ‘magma_zlabrd’ was not declared in this scope
magma_zf77pgi.cpp: In function ‘void magma_zlahru_(magma_int_t*, magma_int_t*, magma_int_t*, double2*, magma_int_t*, double2*, double2*, double2*, double2*, double2*)’:
magma_zf77pgi.cpp:101: error: invalid conversion from ‘double2*’ to ‘magma_int_t’
magma_zf77pgi.cpp:101: error: invalid conversion from ‘int’ to ‘magmaDoubleComplex*’
magma_zf77pgi.cpp:101: error: invalid conversion from ‘double2*’ to ‘magma_int_t’
../include/magma_z.h:134: error: too few arguments to function ‘magma_int_t magma_zlahru(magma_int_t, magma_int_t, magma_int_t, magma_int_t, magmaDoubleComplex*, magma_int_t, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*)’
magma_zf77pgi.cpp:101: error: at this point in file
magma_zf77pgi.cpp: In function ‘void magma_zhetrd_(char*, magma_int_t*, double2*, magma_int_t*, double*, double*, double2*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:107: error: cannot convert ‘double2*’ to ‘magma_int_t*’ for argument ‘10’ to ‘magma_int_t magma_zhetrd(magma_uplo_t, magma_int_t, magmaDoubleComplex*, magma_int_t, double*, double*, magmaDoubleComplex*, magmaDoubleComplex*, magma_int_t, magma_int_t*)’
make[1]: *** [magma_zf77pgi.o] Error 1
make[1]: Leaving directory `/export/home1/scratch/magma-1.4.1/control'
make: *** [libmagma] Error 2
The make.inc is:
GPU_TARGET = Fermi
CC = gcc
NVCC = nvcc
FORT = gfortran
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
OPTS = -O3 -DADD_ -DMAGMA_SETAFFINITY
F77OPTS = -O3 -DADD_
FOPTS = -O3 -DADD_ -x f95-cpp-input
NVOPTS = -O3 -DADD_ -Xcompiler -fno-strict-aliasing
LDOPTS = -O3 -DADD_
# Depending on how ATLAS and LAPACK were compiled, you may need one or more of:
# -lifcore -ldl -lf2c -lgfortran
# LIB = -llapack -lblas -lf77blas -lcblas -lcublas -lcudart -lstdc++ -lm -lpgfortran -lifcore
# define library directories here or in your environment
CUDADIR = /usr/local/cuda
-include make.check-cuda
LIBDIR = -L/opt/pgi/linux86-64/2014/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -L$(CUDADIR)/lib64
LIB = -lrt -lpgmp -lnuma -lpthread -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lnspgc -lpgc -lm -llapack -lblas -lcudart
INC = -I$(CUDADIR)/include
I would ultimately like to use the PGI compilers. However, if I replace gcc with pgcc the compile process "burps" on the .cpp files. Changing to pgcpp introduces its own set of problems.
So, staying with gcc and gfortran what do I need to do to get this script to run to the end? I will be using the resulting files in a Fortran setting.
Thanks.
ranlib ../lib/libmagma.a
make[1]: Leaving directory `/export/home1/scratch/magma-1.4.1/src'
======================================== control
( cd control && make )
make[1]: Entering directory `/export/home1/scratch/magma-1.4.1/control'
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c zpanel_to_q.cpp -o zpanel_to_q.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c zprint.cpp -o zprint.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c magma_zf77pgi.cpp -o magma_zf77pgi.o
magma_zf77pgi.cpp: In function ‘void magma_zgebrd_(magma_int_t*, magma_int_t*, double2*, magma_int_t*, double*, double*, double2*, double2*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:77: error: cannot convert ‘double2*’ to ‘magma_int_t*’ for argument ‘11’ to ‘magma_int_t magma_zgebrd(magma_int_t, magma_int_t, magmaDoubleComplex*, magma_int_t, double*, double*, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*, magma_int_t, magma_int_t*)’
magma_zf77pgi.cpp: In function ‘void magma_zgehrd_(magma_int_t*, magma_int_t*, magma_int_t*, double2*, magma_int_t*, double2*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:80: error: invalid conversion from ‘magma_int_t*’ to ‘magma_int_t’
magma_zf77pgi.cpp:80: error: initializing argument 8 of ‘magma_int_t magma_zgehrd(magma_int_t, magma_int_t, magma_int_t, magmaDoubleComplex*, magma_int_t, magmaDoubleComplex*, magmaDoubleComplex*, magma_int_t, magmaDoubleComplex*, magma_int_t*)’
magma_zf77pgi.cpp: In function ‘void magma_zlabrd_(magma_int_t*, magma_int_t*, magma_int_t*, double2*, magma_int_t*, double*, double*, double2*, double2*, double2*, magma_int_t*, double2*, magma_int_t*, double2*, magma_int_t*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:95: error: ‘magma_zlabrd’ was not declared in this scope
magma_zf77pgi.cpp: In function ‘void magma_zlahru_(magma_int_t*, magma_int_t*, magma_int_t*, double2*, magma_int_t*, double2*, double2*, double2*, double2*, double2*)’:
magma_zf77pgi.cpp:101: error: invalid conversion from ‘double2*’ to ‘magma_int_t’
magma_zf77pgi.cpp:101: error: invalid conversion from ‘int’ to ‘magmaDoubleComplex*’
magma_zf77pgi.cpp:101: error: invalid conversion from ‘double2*’ to ‘magma_int_t’
../include/magma_z.h:134: error: too few arguments to function ‘magma_int_t magma_zlahru(magma_int_t, magma_int_t, magma_int_t, magma_int_t, magmaDoubleComplex*, magma_int_t, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*, magmaDoubleComplex*)’
magma_zf77pgi.cpp:101: error: at this point in file
magma_zf77pgi.cpp: In function ‘void magma_zhetrd_(char*, magma_int_t*, double2*, magma_int_t*, double*, double*, double2*, double2*, magma_int_t*, double2*, magma_int_t*)’:
magma_zf77pgi.cpp:107: error: cannot convert ‘double2*’ to ‘magma_int_t*’ for argument ‘10’ to ‘magma_int_t magma_zhetrd(magma_uplo_t, magma_int_t, magmaDoubleComplex*, magma_int_t, double*, double*, magmaDoubleComplex*, magmaDoubleComplex*, magma_int_t, magma_int_t*)’
make[1]: *** [magma_zf77pgi.o] Error 1
make[1]: Leaving directory `/export/home1/scratch/magma-1.4.1/control'
make: *** [libmagma] Error 2
The make.inc is:
GPU_TARGET = Fermi
CC = gcc
NVCC = nvcc
FORT = gfortran
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
OPTS = -O3 -DADD_ -DMAGMA_SETAFFINITY
F77OPTS = -O3 -DADD_
FOPTS = -O3 -DADD_ -x f95-cpp-input
NVOPTS = -O3 -DADD_ -Xcompiler -fno-strict-aliasing
LDOPTS = -O3 -DADD_
# Depending on how ATLAS and LAPACK were compiled, you may need one or more of:
# -lifcore -ldl -lf2c -lgfortran
# LIB = -llapack -lblas -lf77blas -lcblas -lcublas -lcudart -lstdc++ -lm -lpgfortran -lifcore
# define library directories here or in your environment
CUDADIR = /usr/local/cuda
-include make.check-cuda
LIBDIR = -L/opt/pgi/linux86-64/2014/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -L$(CUDADIR)/lib64
LIB = -lrt -lpgmp -lnuma -lpthread -lpgf90 -lpgf90_rpm1 -lpgf902 -lpgf90rtl -lpgftnrtl -lnspgc -lpgc -lm -llapack -lblas -lcudart
INC = -I$(CUDADIR)/include
I would ultimately like to use the PGI compilers. However, if I replace gcc with pgcc the compile process "burps" on the .cpp files. Changing to pgcpp introduces its own set of problems.
So, staying with gcc and gfortran what do I need to do to get this script to run to the end? I will be using the resulting files in a Fortran setting.
Thanks.
Re: My problem with compiling MAGMA
To: mgates3. Would you please advise me on what might be wrong with what I am doing?
To: all users. Is anyone out there using MAGMA with PGI compilers? If so, I would appreciate seeing a copy of your make.inc file and learning of any special steps you took to get things working.
Thanks.
To: all users. Is anyone out there using MAGMA with PGI compilers? If so, I would appreciate seeing a copy of your make.inc file and learning of any special steps you took to get things working.
Thanks.
Re: My problem with compiling MAGMA
Did you set PGIFORTRAN somewhere? It isn't shown in your make.inc file. We haven't tested MAGMA with PGI compilers recently. The Fortran wrappers in magma_zf77pgi.cpp are probably out-of-date. For the moment, you may need to compile without PGI, i.e., set PGIFORTRAN = 0. If you don't need Fortran, you can omit compiling the wrappers.
The cpp files are mostly C99, but the way they are currently setup, require a C++ compiler.
-mark
The cpp files are mostly C99, but the way they are currently setup, require a C++ compiler.
-mark
Re: My problem with compiling MAGMA
Hi Mark, I found the PGIFORTRAN setting in Makefile.internal and set it to 0. That helped a lot. "make" runs much furthur now, the tail is shown below:
ranlib liblapacktest.a
make[2]: Leaving directory `/export/home1/scratch/magma-1.4.1/testing/lin'
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_zutil.cpp -o testing_zutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_cutil.cpp -o testing_cutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_dutil.cpp -o testing_dutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_sutil.cpp -o testing_sutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_util.cpp -o testing_util.o
ar cr libtest.a testing_zutil.o testing_cutil.o testing_dutil.o testing_sutil.o testing_util.o
ranlib libtest.a
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_z_cublas_v2.cpp -o testing_z_cublas_v2.o
gcc -O3 -DADD_ testing_z_cublas_v2.o -o testing_z_cublas_v2 \
libtest.a lin/liblapacktest.a -L../lib -lmagma \
-L/opt/pgi/linux86-64/2014/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -L/usr/local/cuda/lib64 \
-llapack -lblas -lf77blas -lcblas -lcublas -lcudart -lstdc++ -lm -lpgfortran -lifcore
/usr/bin/ld: cannot find -lf77blas
collect2: ld returned 1 exit status
make[1]: *** [testing_z_cublas_v2] Error 1
make[1]: Leaving directory `/export/home1/scratch/magma-1.4.1/testing'
make: *** [test] Error 2
So now the issues is finding f77blas. Any suggestions as to where to look? I have tried to locate it on the system, but have come up empty!
Malcolm
ranlib liblapacktest.a
make[2]: Leaving directory `/export/home1/scratch/magma-1.4.1/testing/lin'
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_zutil.cpp -o testing_zutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_cutil.cpp -o testing_cutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_dutil.cpp -o testing_dutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_sutil.cpp -o testing_sutil.o
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_util.cpp -o testing_util.o
ar cr libtest.a testing_zutil.o testing_cutil.o testing_dutil.o testing_sutil.o testing_util.o
ranlib libtest.a
gcc -O3 -DADD_ -DMAGMA_SETAFFINITY -DHAVE_CUBLAS -DMIN_CUDA_ARCH=200 -I/usr/local/cuda/include -I../include -I../control -c testing_z_cublas_v2.cpp -o testing_z_cublas_v2.o
gcc -O3 -DADD_ testing_z_cublas_v2.o -o testing_z_cublas_v2 \
libtest.a lin/liblapacktest.a -L../lib -lmagma \
-L/opt/pgi/linux86-64/2014/lib -L/usr/lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.1.2 -L/usr/local/cuda/lib64 \
-llapack -lblas -lf77blas -lcblas -lcublas -lcudart -lstdc++ -lm -lpgfortran -lifcore
/usr/bin/ld: cannot find -lf77blas
collect2: ld returned 1 exit status
make[1]: *** [testing_z_cublas_v2] Error 1
make[1]: Leaving directory `/export/home1/scratch/magma-1.4.1/testing'
make: *** [test] Error 2
So now the issues is finding f77blas. Any suggestions as to where to look? I have tried to locate it on the system, but have come up empty!
Malcolm
Re: My problem with compiling MAGMA
The f77blas is part of ATLAS, at least in the version that we have installed:
prompt> ls /mnt/scratch/sw/atlas-gcc/lib/
libatlas.a libcblas.a libf77blas.a liblapack.a libptcblas.a libptf77blas.a
If you use a different BLAS library (such as ACML or MKL), the libraries will be different.
-mark
prompt> ls /mnt/scratch/sw/atlas-gcc/lib/
libatlas.a libcblas.a libf77blas.a liblapack.a libptcblas.a libptf77blas.a
If you use a different BLAS library (such as ACML or MKL), the libraries will be different.
-mark
Re: My problem with compiling MAGMA
Mark, I think your testing regimen should include the PGI compiler suit. They are obviously very interested in the work you are doing - as evidenced by their continuing development of Cuda Fortran. Also, they are now a part of Nvidia - another reason to test with their compilers. I am suggesting that this is in addition to what you do now, not as a replacement for anything (at least of what I aware of).
Thanks.
Malcolm
Thanks.
Malcolm
Re: My problem with compiling MAGMA
Hello,
I'm new with MAGMA.
Is there any document with the different options to compile testing programs in MAGMA? I am making testing times and improvements with multigpus and I want to know if it is possible take better times changing the compiling options.
Thank you so much.
I'm new with MAGMA.
Is there any document with the different options to compile testing programs in MAGMA? I am making testing times and improvements with multigpus and I want to know if it is possible take better times changing the compiling options.
Thank you so much.
Re: My problem with compiling MAGMA
Hello,
I only changed the variable MagmaMaxGPUs from 8 to 12 value, to see if it's possible use more gpus.
I recompile my code and I have some errors:
======================================== test
( cd testing && make )
make[1]: se ingresa al directorio `xxx/MAGMA_MGPU/MAGMA_SRC/MAGMA/1.4.1/mkl+cuda60/magma-1.4.1/testing'
gcc -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DMKL_ILP64 -std=c++98 -pedantic -Wno-long-long -DHAVE_CUBLAS -DMIN_CUDA_ARCH=100 -I/nfs/LIBS/LIBS/CUDA/6.0/include -I/nfs/LIBS/LIBS/mkl/l_mkl_11.1.0.080/composer_xe_2013_sp1.0.080/mkl/include -I../include -I../control -c testing_cutil.cpp -o testing_cutil.o
gcc -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DMKL_ILP64 -std=c++98 -pedantic -Wno-long-long -DHAVE_CUBLAS -DMIN_CUDA_ARCH=100 -I/nfs/LIBS/LIBS/CUDA/6.0/include -I/nfs/LIBS/LIBS/mkl/l_mkl_11.1.0.080/composer_xe_2013_sp1.0.080/mkl/include -I../include -I../control -c testing_sutil.cpp -o testing_sutil.o
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:41: error: la declaración de la función C ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:153: error: declaración previa de ‘void magma_smake_hpd(magma_int_t, float*, magma_int_t)’ aquí
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:45: error: no match para ‘operator+’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) + N’
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:24: error: la declaración de la función C ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:146: error: declaración previa de ‘void magma_cmake_hermitian(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:28: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:30: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:41: error: la declaración de la función C ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:151: error: declaración previa de ‘void magma_cmake_hpd(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:45: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)((A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x + (double)N)), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:47: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
make[1]: *** [testing_sutil.o] Error 1
make[1]: *** Se espera a que terminen otras tareas....
make[1]: *** [testing_cutil.o] Error 1
make[1]: se sale del directorio `xxx/MAGMA_MGPU/MAGMA_SRC/MAGMA/1.4.1/mkl+cuda60/magma-1.4.1/testing'
make: *** [test] Error 2
the make.inc is:
CC = gcc
NVCC = nvcc
FORT = gfortran
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
# Defining MAGMA_ILP64 or MKL_ILP64 changes magma_int_t to int64_t in include/magma_types.h
# Compiling with -std=c++98 -pedantic finds non-standard things like variable length arrays
OPTS = -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DMKL_ILP64
OPTS += -std=c++98 -pedantic -Wno-long-long
#OPTS += -Werror # uncomment to ensure all warnings are dealt with
F77OPTS = -O3 -DADD_ -Wall -fdefault-integer-8
FOPTS = -O3 -DADD_ -Wall -fdefault-integer-8 -x f95-cpp-input
NVOPTS = -O3 -DADD_ -Xcompiler -fno-strict-aliasing -DMKL_ILP64
LDOPTS = -fopenmp
# IMPORTANT: this link line is for 64-bit int !!!!
# For regular 64-bit builds using 64-bit pointers and 32-bit int,
# use the lp64 library, not the ilp64 library. See make.inc.mkl-gcc or make.inc.mkl-icc.
# see MKL Link Advisor at http://software.intel.com/sites/products/mkl/
# gcc with MKL 10.3, GNU threads, 64-bit int
# note -DMAGMA_ILP64 or -DMKL_ILP64, and -fdefault-integer-8 in OPTS above
LIB = -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -lpthread -lcublas -lcudart -lstdc++ -lm -lgfortran
# define library directories preferably in your environment, or here.
# for MKL run, e.g.: source /opt/intel/composerxe/mkl/bin/mklvars.sh intel64
#MKLROOT ?= /opt/intel/composerxe/mkl
#CUDADIR ?= /usr/local/cuda
MKLROOT = /nfs/LIBS/LIBS/mkl/l_mkl_11.1.0.080/composer_xe_2013_sp1.0.080/mkl
CUDADIR = /nfs/LIBS/LIBS/CUDA/6.0
-include make.check-mkl
-include make.check-cuda
LIBDIR = -L$(MKLROOT)/lib/intel64 \
-L$(CUDADIR)/lib64
INC = -I$(CUDADIR)/include -I$(MKLROOT)/include
Anyone have some idea?
Thanks a lot !!
I only changed the variable MagmaMaxGPUs from 8 to 12 value, to see if it's possible use more gpus.
I recompile my code and I have some errors:
======================================== test
( cd testing && make )
make[1]: se ingresa al directorio `xxx/MAGMA_MGPU/MAGMA_SRC/MAGMA/1.4.1/mkl+cuda60/magma-1.4.1/testing'
gcc -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DMKL_ILP64 -std=c++98 -pedantic -Wno-long-long -DHAVE_CUBLAS -DMIN_CUDA_ARCH=100 -I/nfs/LIBS/LIBS/CUDA/6.0/include -I/nfs/LIBS/LIBS/mkl/l_mkl_11.1.0.080/composer_xe_2013_sp1.0.080/mkl/include -I../include -I../control -c testing_cutil.cpp -o testing_cutil.o
gcc -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DMKL_ILP64 -std=c++98 -pedantic -Wno-long-long -DHAVE_CUBLAS -DMIN_CUDA_ARCH=100 -I/nfs/LIBS/LIBS/CUDA/6.0/include -I/nfs/LIBS/LIBS/mkl/l_mkl_11.1.0.080/composer_xe_2013_sp1.0.080/mkl/include -I../include -I../control -c testing_sutil.cpp -o testing_sutil.o
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:41: error: la declaración de la función C ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:153: error: declaración previa de ‘void magma_smake_hpd(magma_int_t, float*, magma_int_t)’ aquí
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:45: error: no match para ‘operator+’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) + N’
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:24: error: la declaración de la función C ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:146: error: declaración previa de ‘void magma_cmake_hermitian(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:28: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:30: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:41: error: la declaración de la función C ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:151: error: declaración previa de ‘void magma_cmake_hpd(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:45: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)((A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x + (double)N)), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:47: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
make[1]: *** [testing_sutil.o] Error 1
make[1]: *** Se espera a que terminen otras tareas....
make[1]: *** [testing_cutil.o] Error 1
make[1]: se sale del directorio `xxx/MAGMA_MGPU/MAGMA_SRC/MAGMA/1.4.1/mkl+cuda60/magma-1.4.1/testing'
make: *** [test] Error 2
the make.inc is:
CC = gcc
NVCC = nvcc
FORT = gfortran
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
# Defining MAGMA_ILP64 or MKL_ILP64 changes magma_int_t to int64_t in include/magma_types.h
# Compiling with -std=c++98 -pedantic finds non-standard things like variable length arrays
OPTS = -O3 -DADD_ -Wall -fno-strict-aliasing -fopenmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DMKL_ILP64
OPTS += -std=c++98 -pedantic -Wno-long-long
#OPTS += -Werror # uncomment to ensure all warnings are dealt with
F77OPTS = -O3 -DADD_ -Wall -fdefault-integer-8
FOPTS = -O3 -DADD_ -Wall -fdefault-integer-8 -x f95-cpp-input
NVOPTS = -O3 -DADD_ -Xcompiler -fno-strict-aliasing -DMKL_ILP64
LDOPTS = -fopenmp
# IMPORTANT: this link line is for 64-bit int !!!!
# For regular 64-bit builds using 64-bit pointers and 32-bit int,
# use the lp64 library, not the ilp64 library. See make.inc.mkl-gcc or make.inc.mkl-icc.
# see MKL Link Advisor at http://software.intel.com/sites/products/mkl/
# gcc with MKL 10.3, GNU threads, 64-bit int
# note -DMAGMA_ILP64 or -DMKL_ILP64, and -fdefault-integer-8 in OPTS above
LIB = -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -lpthread -lcublas -lcudart -lstdc++ -lm -lgfortran
# define library directories preferably in your environment, or here.
# for MKL run, e.g.: source /opt/intel/composerxe/mkl/bin/mklvars.sh intel64
#MKLROOT ?= /opt/intel/composerxe/mkl
#CUDADIR ?= /usr/local/cuda
MKLROOT = /nfs/LIBS/LIBS/mkl/l_mkl_11.1.0.080/composer_xe_2013_sp1.0.080/mkl
CUDADIR = /nfs/LIBS/LIBS/CUDA/6.0
-include make.check-mkl
-include make.check-cuda
LIBDIR = -L$(MKLROOT)/lib/intel64 \
-L$(CUDADIR)/lib64
INC = -I$(CUDADIR)/include -I$(MKLROOT)/include
Anyone have some idea?
Thanks a lot !!
Re: My problem with compiling MAGMA
I made a change in other file
Only a printf to see the values of the matrix and the result, for compare it with different mode executions, but when I want to recompile the code, that error appear:
0/composer_xe_2013_sp1.0.080/mkl/include -I../include -I../control -c testing_sutil.cpp -o testing_sutil.o
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:41: error: la declaración de la función C ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:153: error: declaración previa de ‘void magma_smake_hpd(magma_int_t, float*, magma_int_t)’ aquí
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:45: error: no match para ‘operator+’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) + N’
make[1]: *** [testing_sutil.o] Error 1
make[1]: *** Se espera a que terminen otras tareas....
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:24: error: la declaración de la función C ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:146: error: declaración previa de ‘void magma_cmake_hermitian(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:28: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:30: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:41: error: la declaración de la función C ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:151: error: declaración previa de ‘void magma_cmake_hpd(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:45: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)((A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x + (double)N)), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:47: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
make[1]: *** [testing_cutil.o] Error 1
I didn't change those files, why that errors?
Any idea ?
The problem always is:
los candidatos son (the candidates are): double2& double2::operator=(const double2&)
... error: se solicitó la conversión desde (conversion request from) ‘double2’ al tipo no escalar ( to no scalar tuype) ‘cuFloatComplex’
If the problem is that we are not authorized to change the code tell me, please
Thank you :)
Only a printf to see the values of the matrix and the result, for compare it with different mode executions, but when I want to recompile the code, that error appear:
0/composer_xe_2013_sp1.0.080/mkl/include -I../include -I../control -c testing_sutil.cpp -o testing_sutil.o
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:41: error: la declaración de la función C ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:153: error: declaración previa de ‘void magma_smake_hpd(magma_int_t, float*, magma_int_t)’ aquí
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_sutil.cpp:45: error: no match para ‘operator+’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) + N’
make[1]: *** [testing_sutil.o] Error 1
make[1]: *** Se espera a que terminen otras tareas....
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:24: error: la declaración de la función C ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:146: error: declaración previa de ‘void magma_cmake_hermitian(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hermitian(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:28: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:30: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:41: error: la declaración de la función C ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’ genera un conflicto con
testings.h:151: error: declaración previa de ‘void magma_cmake_hpd(magma_int_t, magmaFloatComplex*, magma_int_t)’ aquí
testing_cutil.cpp: In function ‘void magma_cmake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
testing_cutil.cpp:45: error: no match para ‘operator=’ en ‘*(A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul))) = make_cuFloatComplex(((float)((A + ((long unsigned int)(((long unsigned int)((lda + 1) * i)) * 16ul)))->double2::x + (double)N)), 0.0f)’
/nfs/LIBS/LIBS/CUDA/6.0/include/vector_types.h:333: nota: los candidatos son: double2& double2::operator=(const double2&)
testing_cutil.cpp:47: error: se solicitó la conversión desde ‘double2’ al tipo no escalar ‘cuFloatComplex’
make[1]: *** [testing_cutil.o] Error 1
I didn't change those files, why that errors?
Any idea ?
The problem always is:
los candidatos son (the candidates are): double2& double2::operator=(const double2&)
... error: se solicitó la conversión desde (conversion request from) ‘double2’ al tipo no escalar ( to no scalar tuype) ‘cuFloatComplex’
If the problem is that we are not authorized to change the code tell me, please
Thank you :)
Re: My problem with compiling MAGMA
You may modify the code. It's an open source BSD license.
It's a bit difficult to tell what the problem is, since your error messages are all in French. Something very strange is going on here, though. You have
but testing_sutil should be single-precision, i.e., float. The function looks like this, with float instead of magmaDoubleComplex:
Can you please look at exactly what changes you made, and post the exact changes if you still can't figure it out. A diff with a fresh copy of the release would be best (assuming the diff isn't too large).
It's a bit difficult to tell what the problem is, since your error messages are all in French. Something very strange is going on here, though. You have
Code: Select all
testing_sutil.cpp: In function ‘void magma_smake_hpd(magma_int_t, magmaDoubleComplex*, magma_int_t)’:
Code: Select all
void magma_smake_hpd( magma_int_t N, float* A, magma_int_t lda )
Code: Select all
diff -r magma-1.5.0-beta2 magma-1.5.0-beta2-modified