Open discussion for MAGMA library (Matrix Algebra on GPU and Multicore Architectures)
-
arom
- Posts: 12
- Joined: Wed Jun 27, 2012 3:22 am
Post
by arom » Thu Nov 15, 2012 10:59 pm
Hi guys!
I'm very pleased to see new version of MAGMA. Thank you!
But
1.
Code: Select all
/home/arom/magma-1.3.0/lib/libmagma.a(dgetrf2_mgpu.o): In function `magmaSetDevice':
/home/arom/magma-1.3.0/src/dgetrf2_mgpu.cpp:15: multiple definition of `magmaSetDevice(int)'
/home/arom//magma-1.3.0/lib/libmagma.a(zgetrf2_mgpu.o):/home/arom/magma-1.3.0/src/zgetrf2_mgpu.cpp:15: first defined here
2. In my previous post "wish list" I requested to add DSTEDC() ZSTEDC() function. Moreover I attached my implementation via [DZ]STEDX() functions. Do you have plans to make this changes?
3. Could you at least include Fortran wrappers for [DZ]STEDX() functions, please?
Best regards,
Alexey
-
mudshark
- Posts: 2
- Joined: Mon Dec 10, 2012 7:20 am
Post
by mudshark » Mon Dec 10, 2012 8:23 am
I'm trying to build shared libraries and wonder if the error I'm getting is related to this post. Using Intel compilers
Code: Select all
........sorgqr_2stage_gpu.o sormqr_gpu_2stage.o ssygvd.o ssygst.o ssygst_gpu.o ssygst_m.o strsm_m.o sgeev.o sgehrd.o sgehrd2.o slahr2.o slahru.o sorghr.o sgesvd.o sgebrd.o slabrd_gpu.o dlaed2.o slaed2.o
cgetrf2_mgpu.o: In function `magmaSetDevice(int)':
cgetrf2_mgpu.cpp:(.text+0x1430): multiple definition of `magmaSetDevice(int)'
zgetrf2_mgpu.o:zgetrf2_mgpu.cpp:(.text+0x1490): first defined here
dgetrf2_mgpu.o: In function `magmaSetDevice(int)':
dgetrf2_mgpu.cpp:(.text+0x1400): multiple definition of `magmaSetDevice(int)'
zgetrf2_mgpu.o:zgetrf2_mgpu.cpp:(.text+0x1490): first defined here
sgetrf2_mgpu.o: In function `magmaSetDevice(int)':
sgetrf2_mgpu.cpp:(.text+0x1400): multiple definition of `magmaSetDevice(int)'
zgetrf2_mgpu.o:zgetrf2_mgpu.cpp:(.text+0x1490): first defined here
make[1]: *** [../lib/libmagma.so] Error 1
make[1]: Leaving directory `/root/magma-1.3.0/src'
make: *** [libmagma] Error 2
-
mgates3
- Posts: 918
- Joined: Fri Jan 06, 2012 2:13 pm
Post
by mgates3 » Mon Dec 10, 2012 2:13 pm
Yes, sorry about that. You can make those functions static in *getrf2_mgpu.cpp to get rid of the multiple definitions. It was an oversight when making the release.
static void magmaSetDevice( int id ) {
You may also need to remove zhegvd_m.cpp from src/Makefile and chegvd_m.cpp from src/Makefile.src. Those two multi-GPU files had a missing dependency that got missed when we made the release.
-mark
-
lejeczek
- Posts: 22
- Joined: Tue Apr 09, 2013 2:57 am
Post
by lejeczek » Mon Mar 03, 2014 2:47 pm
hi
I've followed I believe all the advices I could find on this forum and with:
###
GPU_TARGET = Fermi
CC = gcc
NVCC = nvcc
FORT = gfortran
ARCH = gcc
ARCHFLAGS = -shared -o
RANLIB = strip
OPTS = -O3 -DADD_ -fPIC -DCUBLAS_GFORTRAN
F77OPTS = -O3 -DADD_ -fPIC
FOPTS = -O3 -DADD_ -fPIC -x f95-cpp-input
#NVOPTS = -O3 -DADD_ -fPIC --shared --compiler-options -DUNIX
NVOPTS = -DADD_ --shared --compiler-options '-fPIC' -DUNIX -O3
#NVOPTS = -O3 -DADD_ -Xcompiler "-fno-strict-aliasing -fPIC --shared"
LDOPTS = -Xlinker -zmuldefs
LIB = -lpthread -lcblas -lcublas -lcudart -lstdc++ -lm -lacml_mp
###
(cuda 5.5 & gcc 4.7.2) attempt to build fails:
symv_fermi_mgpu.cu_o: In function `fillZero(double*, int)':
tmpxft_00006ce8_00000000-3_dsymv_fermi_mgpu.cudafe1.cpp:(.text+0x1360): multiple definition of `fillZero(double*, int)'
dsymv_fermi_mgpu_32.cu_o:tmpxft_00006ccd_00000000-3_dsymv_fermi_mgpu_32.cudafe1.cpp:(.text+0x90): first defined here
ssymv_fermi_mgpu.cu_o: In function `__device_stub__Z15kernel_fillZeroPfi(float*, int)':
tmpxft_00006fce_00000000-3_ssymv_fermi_mgpu.cudafe1.cpp:(.text+0x1270): multiple definition of `__device_stub__Z15kernel_fillZeroPfi(float*, int)'
ssymv_fermi_mgpu_32.cu_o:tmpxft_00006fb3_00000000-3_ssymv_fermi_mgpu_32.cudafe1.cpp:(.text+0x20): first defined here
ssymv_fermi_mgpu.cu_o: In function `kernel_fillZero(float*, int)':
tmpxft_00006fce_00000000-3_ssymv_fermi_mgpu.cudafe1.cpp:(.text+0x12d0): multiple definition of `kernel_fillZero(float*, int)'
ssymv_fermi_mgpu_32.cu_o:tmpxft_00006fb3_00000000-3_ssymv_fermi_mgpu_32.cudafe1.cpp:(.text+0x80): first defined here
ssymv_fermi_mgpu.cu_o: In function `fillZero(float*, int)':
tmpxft_00006fce_00000000-3_ssymv_fermi_mgpu.cudafe1.cpp:(.text+0x12e0): multiple definition of `fillZero(float*, int)'
ssymv_fermi_mgpu_32.cu_o:tmpxft_00006fb3_00000000-3_ssymv_fermi_mgpu_32.cudafe1.cpp:(.text+0x90): first defined here
collect2: error: ld returned 1 exit status
make[1]: *** [../lib/libmagmablas.so] Error 1
make[1]: Leaving directory `/__.aLocalStorages/vertex3.a/__.amyRPMbuild/sources/MAGMAlibs/magma-1.3.0-acml/magmablas'
make: *** [libmagmablas] Error 2
what can be wrong?
regards
-
mgates3
- Posts: 918
- Joined: Fri Jan 06, 2012 2:13 pm
Post
by mgates3 » Tue Mar 04, 2014 2:34 pm
This problem should be resolved in MAGMA 1.4.1. Please upgrade.
-mark