Compilation problem of magma on ibm power 9 for olcf summit system
Posted: Mon Sep 16, 2019 6:29 pm
There exists compiled magma on summit.
But when I try to use the xl compiled magma, it shows segmentation fault errors.
On the other hand, the pgi compiled version and gcc compiled version has no problem. I doubt it may have not been compiled correctly.
When I used the included make.inc at the corresponding directory, I can compile magma with pgi or gcc successfully.
But for xl compiled magma, when I copy the make.inc, and compile it by myself. It shows compilation errors:
testing/magma_generate.cpp:(.text+0x100d0): undefined reference to `__copysignf'
I have "module load xl essl cuda netlib-lapack/3.8.0". and type "make".
It can not pass the tests.
The pkgconfig file is :
Name: magma
Description: Matrix Algebra on GPU and Multicore Architectures
Version: 2.5.1
Cflags: -I${includedir} -qnohot -qarch=pwr9 -qtune=pwr9 -qpic -qsmp=omp -DNDEBUG -DNOCHANGE -DMAGMA_WITH_ESSL -DIBM -w -std=c11 -std=c++11 -DMIN_CUDA_ARCH=700 -I/sw/summit/essl/6.1.0-2/essl/6.1/include -I/autofs/nccs-svm1_sw/summit/.swci/1-compute/opt/spack/20180914/linux-rhel7-ppc64le/xl-16.1.1-4/netlib-lapack-3.8.0-qt54vissyblrl3kq2ybfhd3ykgqaosh2/include -I/sw/summit/cuda/10.1.168/include
Libs: -L${libdir} -lmagma_sparse -lmagma -O3 -qnohot -qarch=pwr9 -qtune=pwr9 -qpic -qsmp=omp -L/sw/summit/essl/6.1.0-2/essl/6.1/lib64 -L/autofs/nccs-svm1_sw/summit/.swci/1-compute/opt/spack/20180914/linux-rhel7-ppc64le/xl-16.1.1-4/netlib-lapack-3.8.0-qt54vissyblrl3kq2ybfhd3ykgqaosh2/lib64 -L/sw/summit/cuda/10.1.168/lib64 -lessl -llapack -lblas -lcublas -lcusparse -lcudart -lcudadevrt
Libs.private:
Requires:
Requires.private:
The make.inc is:
GPU_TARGET = Volta
CC = xlc
CXX = xlc++
NVCC = nvcc
FORT = xlf
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
FPIC = -qpi
CFLAGS = -O3 -qnohot -qarch=pwr9 -qtune=pwr9 $(FPIC) -qsmp=omp -DNDEBUG -DNOCHANGE -DMAGMA_WITH_ESSL -DIBM -w
FFLAGS = -O3 -qnohot -qarch=pwr9 -qtune=pwr9 $(FPIC) -qsmp=omp -WF,-DNDEBUG -WF,-DNOCHANGE -WF,-DMAGMA_WITH_ESSL -qfixed=72 -qstrict -qsuppress=cmpmsg
F90FLAGS = -O3 -qnohot -qarch=pwr9 -qtune=pwr9 $(FPIC) -qsmp=omp -WF,-DNDEBUG -WF,-DNOCHANGE -WF,-DMAGMA_WITH_ESSL -qfree=f90 -qsuppress=cmpmsg
NVCCFLAGS = -O3 -m64 -gencode arch=compute_70,code=sm_70 -DNDEBUG -DNOCHANGE -DMAGMA_WITH_ESSL -Xcompiler "-fPIC" -std=c++11
LDFLAGS = -O3 -qnohot -qarch=pwr9 -qtune=pwr9 $(FPIC) -qsmp=omp
CFLAGS := $(CFLAGS) -std=c11 -std=c++11
CXXFLAGS := $(CFLAGS) -std=c++11
ESSL_PATH = ${OLCF_ESSL_ROOT}
INC = -I${ESSL_PATH}/include
LIBDIR = -L${ESSL_PATH}/lib64
LIB = -lessl
NETLIB_PATH = ${OLCF_NETLIB_LAPACK_ROOT}
INC += -I${NETLIB_PATH}/include
LIBDIR += -L${NETLIB_PATH}/lib64
LIB += -llapack -lblas
CUDA_PATH = ${OLCF_CUDA_ROOT}
INC += -I${CUDA_PATH}/include
LIBDIR += -L${CUDA_PATH}/lib64
LIB += -lcublas -lcusparse -lcudart -lcudadevr
CUDADIR = ${CUDA_PATH}
prefix = .
But when I try to use the xl compiled magma, it shows segmentation fault errors.
On the other hand, the pgi compiled version and gcc compiled version has no problem. I doubt it may have not been compiled correctly.
When I used the included make.inc at the corresponding directory, I can compile magma with pgi or gcc successfully.
But for xl compiled magma, when I copy the make.inc, and compile it by myself. It shows compilation errors:
testing/magma_generate.cpp:(.text+0x100d0): undefined reference to `__copysignf'
I have "module load xl essl cuda netlib-lapack/3.8.0". and type "make".
It can not pass the tests.
The pkgconfig file is :
Name: magma
Description: Matrix Algebra on GPU and Multicore Architectures
Version: 2.5.1
Cflags: -I${includedir} -qnohot -qarch=pwr9 -qtune=pwr9 -qpic -qsmp=omp -DNDEBUG -DNOCHANGE -DMAGMA_WITH_ESSL -DIBM -w -std=c11 -std=c++11 -DMIN_CUDA_ARCH=700 -I/sw/summit/essl/6.1.0-2/essl/6.1/include -I/autofs/nccs-svm1_sw/summit/.swci/1-compute/opt/spack/20180914/linux-rhel7-ppc64le/xl-16.1.1-4/netlib-lapack-3.8.0-qt54vissyblrl3kq2ybfhd3ykgqaosh2/include -I/sw/summit/cuda/10.1.168/include
Libs: -L${libdir} -lmagma_sparse -lmagma -O3 -qnohot -qarch=pwr9 -qtune=pwr9 -qpic -qsmp=omp -L/sw/summit/essl/6.1.0-2/essl/6.1/lib64 -L/autofs/nccs-svm1_sw/summit/.swci/1-compute/opt/spack/20180914/linux-rhel7-ppc64le/xl-16.1.1-4/netlib-lapack-3.8.0-qt54vissyblrl3kq2ybfhd3ykgqaosh2/lib64 -L/sw/summit/cuda/10.1.168/lib64 -lessl -llapack -lblas -lcublas -lcusparse -lcudart -lcudadevrt
Libs.private:
Requires:
Requires.private:
The make.inc is:
GPU_TARGET = Volta
CC = xlc
CXX = xlc++
NVCC = nvcc
FORT = xlf
ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib
FPIC = -qpi
CFLAGS = -O3 -qnohot -qarch=pwr9 -qtune=pwr9 $(FPIC) -qsmp=omp -DNDEBUG -DNOCHANGE -DMAGMA_WITH_ESSL -DIBM -w
FFLAGS = -O3 -qnohot -qarch=pwr9 -qtune=pwr9 $(FPIC) -qsmp=omp -WF,-DNDEBUG -WF,-DNOCHANGE -WF,-DMAGMA_WITH_ESSL -qfixed=72 -qstrict -qsuppress=cmpmsg
F90FLAGS = -O3 -qnohot -qarch=pwr9 -qtune=pwr9 $(FPIC) -qsmp=omp -WF,-DNDEBUG -WF,-DNOCHANGE -WF,-DMAGMA_WITH_ESSL -qfree=f90 -qsuppress=cmpmsg
NVCCFLAGS = -O3 -m64 -gencode arch=compute_70,code=sm_70 -DNDEBUG -DNOCHANGE -DMAGMA_WITH_ESSL -Xcompiler "-fPIC" -std=c++11
LDFLAGS = -O3 -qnohot -qarch=pwr9 -qtune=pwr9 $(FPIC) -qsmp=omp
CFLAGS := $(CFLAGS) -std=c11 -std=c++11
CXXFLAGS := $(CFLAGS) -std=c++11
ESSL_PATH = ${OLCF_ESSL_ROOT}
INC = -I${ESSL_PATH}/include
LIBDIR = -L${ESSL_PATH}/lib64
LIB = -lessl
NETLIB_PATH = ${OLCF_NETLIB_LAPACK_ROOT}
INC += -I${NETLIB_PATH}/include
LIBDIR += -L${NETLIB_PATH}/lib64
LIB += -llapack -lblas
CUDA_PATH = ${OLCF_CUDA_ROOT}
INC += -I${CUDA_PATH}/include
LIBDIR += -L${CUDA_PATH}/lib64
LIB += -lcublas -lcusparse -lcudart -lcudadevr
CUDADIR = ${CUDA_PATH}
prefix = .