Problem in building CUDA-GPU port with experimental MAGMA support
Posted: Sat Apr 04, 2020 9:27 pm
Hi,
First, let me give my system specifications:
CPUS: 2 x Intel(R) Xeon(R) Platinum 8160 CPU @ 2.10GHz
GPUs: 1 x NVIDIA Corporation GP100GL [Quadro GP100]
OS: Red Hat Enterprise Linux Workstation release 7.7 (Maipo)
Compiler: Intel Parallel Studio 2019 update 4 cluster edition
CUDA: cuda 10.2.89_440.33.01
VASP: 6.1.0
I face some problems in building the VASP CPU and GPU versions before trying to add MAGMA support, but I could eventually figure them out and install all executables (vasp_gam, vasp_std, vasp_ncl, vasp_gpu, vasp_gpu_ncl) without an error. I documented issues I faced during building these versions of VASP here in case you are interested. Then, I tried to build the GPU port with the MAGMA support as I read somewhere that it can have a significant effect on the performance. To build the MAGMA support, I made following changes in the make.include file:
subrot_gpu.F(999): error #6633: The type of the actual argument differs from the type of the dummy argument. [COVL]
CALL cublas_Set_Matrix(NB_TOT,NB_TOT,int(c_sizeof(COVL(1,1)),c_size_t),COVL,NB_TOT,GPU%COVL,NB_TOT)
------------------------------------------------------------------------------------^
subrot_gpu.F(999): error #6634: The shape matching rules of actual arguments and dummy arguments have been violated. [COVL]
CALL cublas_Set_Matrix(NB_TOT,NB_TOT,int(c_sizeof(COVL(1,1)),c_size_t),COVL,NB_TOT,GPU%COVL,NB_TOT)
------------------------------------------------------------------------------------^
subrot_gpu.F(1032): error #6633: The type of the actual argument differs from the type of the dummy argument. [CHAM]
CALL cublas_Set_Matrix(NB_TOT,NB_TOT,int(c_sizeof(CHAM(1,1)),c_size_t),CHAM,NB_TOT,GPU%COVL,NB_TOT)
------------------------------------------------------------------------------------^
subrot_gpu.F(1032): error #6634: The shape matching rules of actual arguments and dummy arguments have been violated. [CHAM]
CALL cublas_Set_Matrix(NB_TOT,NB_TOT,int(c_sizeof(CHAM(1,1)),c_size_t),CHAM,NB_TOT,GPU%COVL,NB_TOT)
------------------------------------------------------------------------------------^
subrot_gpu.F(2504): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [SUBROT]
USE subrot
--------^
compilation aborted for subrot_gpu.f90 (code 1)
make[2]: *** [subrot_gpu.o] Error 1
make[2]: Leaving directory `/home/khalkhal/Downloads/vasp.6.1.0/build/gpu'
cp: cannot stat ‘vasp’: No such file or directory
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/khalkhal/Downloads/vasp.6.1.0/build/gpu'
make: *** [gpu] Error 2
I am not an expert in programming but I can tell this is a FORTRAN compiler issue. Does anyone know how to solve this? I highly doubt that the solution is modifying the source code! I couldn't fine any guideline for building the MAGMA support so any help would be appreciated.
Thanks
First, let me give my system specifications:
CPUS: 2 x Intel(R) Xeon(R) Platinum 8160 CPU @ 2.10GHz
GPUs: 1 x NVIDIA Corporation GP100GL [Quadro GP100]
OS: Red Hat Enterprise Linux Workstation release 7.7 (Maipo)
Compiler: Intel Parallel Studio 2019 update 4 cluster edition
CUDA: cuda 10.2.89_440.33.01
VASP: 6.1.0
I face some problems in building the VASP CPU and GPU versions before trying to add MAGMA support, but I could eventually figure them out and install all executables (vasp_gam, vasp_std, vasp_ncl, vasp_gpu, vasp_gpu_ncl) without an error. I documented issues I faced during building these versions of VASP here in case you are interested. Then, I tried to build the GPU port with the MAGMA support as I read somewhere that it can have a significant effect on the performance. To build the MAGMA support, I made following changes in the make.include file:
- I added -DUSE_MAGMA to CPP_GPU
- I added path to MAGMA to the end of the file: MAGMA_ROOT := /usr/local/magma/lib
subrot_gpu.F(999): error #6633: The type of the actual argument differs from the type of the dummy argument. [COVL]
CALL cublas_Set_Matrix(NB_TOT,NB_TOT,int(c_sizeof(COVL(1,1)),c_size_t),COVL,NB_TOT,GPU%COVL,NB_TOT)
------------------------------------------------------------------------------------^
subrot_gpu.F(999): error #6634: The shape matching rules of actual arguments and dummy arguments have been violated. [COVL]
CALL cublas_Set_Matrix(NB_TOT,NB_TOT,int(c_sizeof(COVL(1,1)),c_size_t),COVL,NB_TOT,GPU%COVL,NB_TOT)
------------------------------------------------------------------------------------^
subrot_gpu.F(1032): error #6633: The type of the actual argument differs from the type of the dummy argument. [CHAM]
CALL cublas_Set_Matrix(NB_TOT,NB_TOT,int(c_sizeof(CHAM(1,1)),c_size_t),CHAM,NB_TOT,GPU%COVL,NB_TOT)
------------------------------------------------------------------------------------^
subrot_gpu.F(1032): error #6634: The shape matching rules of actual arguments and dummy arguments have been violated. [CHAM]
CALL cublas_Set_Matrix(NB_TOT,NB_TOT,int(c_sizeof(CHAM(1,1)),c_size_t),CHAM,NB_TOT,GPU%COVL,NB_TOT)
------------------------------------------------------------------------------------^
subrot_gpu.F(2504): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [SUBROT]
USE subrot
--------^
compilation aborted for subrot_gpu.f90 (code 1)
make[2]: *** [subrot_gpu.o] Error 1
make[2]: Leaving directory `/home/khalkhal/Downloads/vasp.6.1.0/build/gpu'
cp: cannot stat ‘vasp’: No such file or directory
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/khalkhal/Downloads/vasp.6.1.0/build/gpu'
make: *** [gpu] Error 2
I am not an expert in programming but I can tell this is a FORTRAN compiler issue. Does anyone know how to solve this? I highly doubt that the solution is modifying the source code! I couldn't fine any guideline for building the MAGMA support so any help would be appreciated.
Thanks