From 723b9e676041f3d5e7c10f87285e8dcb44ccfbbc Mon Sep 17 00:00:00 2001 From: Vsevak Date: Sat, 20 Jun 2020 15:17:54 +0300 Subject: [PATCH] Try to keep compatibility with deprecated ROCm hcc compiler --- cmake/Modules/Packages/GPU.cmake | 15 +++++++++++---- lib/gpu/Makefile.hip | 12 +++++++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/cmake/Modules/Packages/GPU.cmake b/cmake/Modules/Packages/GPU.cmake index 65ca4e33ff..dce28c305a 100644 --- a/cmake/Modules/Packages/GPU.cmake +++ b/cmake/Modules/Packages/GPU.cmake @@ -268,10 +268,17 @@ elseif(GPU_API STREQUAL "HIP") if(HIP_PLATFORM STREQUAL "hcc") configure_file(${CU_FILE} ${CU_CPP_FILE} COPYONLY) - add_custom_command(OUTPUT ${CUBIN_FILE} - VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco --offload-arch=${HIP_ARCH} -O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_CPP_FILE} - DEPENDS ${CU_CPP_FILE} - COMMENT "Generating ${CU_NAME}.cubin") + if(HIP_COMPILER STREQUAL "clang") + add_custom_command(OUTPUT ${CUBIN_FILE} + VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco --offload-arch=${HIP_ARCH} -O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_CPP_FILE} + DEPENDS ${CU_CPP_FILE} + COMMENT "Generating ${CU_NAME}.cubin") + else() + add_custom_command(OUTPUT ${CUBIN_FILE} + VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --genco -t="${HIP_ARCH}" -f=\"-O3 -ffast-math -DUSE_HIP -D_${GPU_PREC_SETTING} -I${LAMMPS_LIB_SOURCE_DIR}/gpu\" -o ${CUBIN_FILE} ${CU_CPP_FILE} + DEPENDS ${CU_CPP_FILE} + COMMENT "Generating ${CU_NAME}.cubin") + endif() elseif(HIP_PLATFORM STREQUAL "nvcc") add_custom_command(OUTPUT ${CUBIN_FILE} VERBATIM COMMAND ${HIP_HIPCC_EXECUTABLE} --fatbin --use_fast_math -DUSE_HIP -D_${GPU_PREC_SETTING} ${HIP_CUDA_GENCODE} -I${LAMMPS_LIB_SOURCE_DIR}/gpu -o ${CUBIN_FILE} ${CU_FILE} diff --git a/lib/gpu/Makefile.hip b/lib/gpu/Makefile.hip index 332670246e..76e202da8c 100644 --- a/lib/gpu/Makefile.hip +++ b/lib/gpu/Makefile.hip @@ -35,6 +35,8 @@ MPI_COMP_OPTS = $(shell mpicxx --showme:compile) MPI_LINK_OPTS = $(shell mpicxx --showme:link) HIP_PATH ?= $(wildcard /opt/rocm/hip) +HIP_PLATFORM=$(shell $(HIP_PATH)/bin/hipconfig --platform) +HIP_COMPILER=$(shell $(HIP_PATH)/bin/hipconfig --compiler) ifeq (hcc,$(HIP_PLATFORM)) HIP_OPTS += -ffast-math @@ -62,7 +64,7 @@ BSH = /bin/sh HIP_OPTS += -DUSE_HIP $(HIP_PRECISION) HIP_GPU_OPTS += $(HIP_OPTS) -I./ -ifeq (hcc,$(HIP_PLATFORM)) +ifeq (clang,$(HIP_COMPILER)) HIP_HOST_OPTS += -fPIC HIP_GPU_CC = $(HIP_PATH)/bin/hipcc --genco HIP_GPU_OPTS_S = --offload-arch=$(HIP_ARCH) @@ -70,6 +72,14 @@ ifeq (hcc,$(HIP_PLATFORM)) HIP_KERNEL_SUFFIX = .cpp HIP_LIBS_TARGET = export HCC_AMDGPU_TARGET := $(HIP_ARCH) export HCC_AMDGPU_TARGET := $(HIP_ARCH) +else ifeq (hcc,$(HIP_COMPILER)) + HIP_HOST_OPTS += -fPIC + HIP_GPU_CC = $(HIP_PATH)/bin/hipcc --genco + HIP_GPU_OPTS_S = -t="$(HIP_ARCH)" -f=\" + HIP_GPU_OPTS_E = \" + HIP_KERNEL_SUFFIX = .cpp + HIP_LIBS_TARGET = export HCC_AMDGPU_TARGET := $(HIP_ARCH) + export HCC_AMDGPU_TARGET := $(HIP_ARCH) else ifeq (nvcc,$(HIP_PLATFORM)) HIP_GPU_CC = $(HIP_PATH)/bin/hipcc --fatbin HIP_GPU_OPTS += $(HIP_ARCH)