diff --git a/arch/CRAY-XC50_gnu.psmp b/arch/CRAY-XC50_gnu.psmp index ab6d75cb48..40987757b4 100644 --- a/arch/CRAY-XC50_gnu.psmp +++ b/arch/CRAY-XC50_gnu.psmp @@ -19,6 +19,7 @@ GNU_PATH = /store/psi/psi01/mkrack/daint/gpu/gnu/8.3.0 MPI_PATH = $(GNU_PATH)/mpich GPUVER = P100 +OFFLOAD_TARGET = cuda CC = cc CXX = CC diff --git a/exts/Makefile.inc b/exts/Makefile.inc index 28bf3475fd..4fd00540cf 100644 --- a/exts/Makefile.inc +++ b/exts/Makefile.inc @@ -7,12 +7,24 @@ EXTSDEPS_LIB = $(LIBEXTSDIR)/dbcsr/libdbcsr$(ARCHIVE_EXT) EXTSDEPS_MOD = $(OBJEXTSDIR)/dbcsr/dbcsr_api.mod $(OBJEXTSDIR)/dbcsr/dbcsr_tensor_api.mod $(EXTSDEPS_MOD) : ; # override builtin .mod rule to prevent circular dependency +# Set Acceleration flags +DBCSR_USE_ACCEL := "" +DBCSR_ACC := "" +DBCSR_ACCFLAGS := "" ifneq (,$(findstring __DBCSR_ACC,$(OFFLOAD_FLAGS))) -ACC := $(OFFLOAD_CC) -ACCFLAGS := $(OFFLOAD_FLAGS) +# By default, we use CUDA if OFFLOAD_TARGET is not specified +ifeq (,$(OFFLOAD_TARGET)) +DBCSR_USE_ACCEL=cuda else -ACC := "" -ACCFLAGS := "" +DBCSR_USE_ACCEL = $(OFFLOAD_TARGET) +endif +ifeq (cuda,$(DBCSR_USE_ACCEL)) +DBCSR_ACC := $(OFFLOAD_CC) +DBCSR_ACCFLAGS := $(OFFLOAD_FLAGS) +else ifeq (hip,$(DBCSR_USE_ACCEL)) +DBCSR_ACC := $(CXX) +DBCSR_ACCFLAGS := $(CXXFLAGS) +endif endif extversions: dbcsrversion @@ -25,14 +37,16 @@ dbcsr: ARCHFILE=$(ARCHDIR)/$(ARCH).$(ONEVERSION) \ LIBDIR=$(LIBEXTSDIR)/$@ \ OBJDIR=$(OBJEXTSDIR)/$@ \ - ACC="$(ACC)" \ - ACCFLAGS="$(ACCFLAGS)" + USE_ACCEL="$(DBCSR_USE_ACCEL)" \ + ACC="$(DBCSR_ACC)" \ + ACCFLAGS="$(DBCSR_ACCFLAGS)" dbcsrversion: @$(MAKE) -C $(EXTSHOME)/dbcsr -f $(EXTSHOME)/build_dbcsr/Makefile \ ARCHFILE=$(ARCHDIR)/$(ARCH).$(ONEVERSION) \ - ACC="$(ACC)" \ - ACCFLAGS="$(ACCFLAGS)" \ + USE_ACCEL="$(DBCSR_USE_ACCEL)" \ + ACC="$(DBCSR_ACC)" \ + ACCFLAGS="$(DBCSR_ACCFLAGS)" \ version dbcsrclean: @@ -41,6 +55,7 @@ dbcsrclean: ARCHFILE=$(ARCHDIR)/$(ARCH).$(ONEVERSION) \ LIBDIR=$(LIBEXTSDIR)/$@ \ OBJDIR=$(OBJEXTSDIR)/$@ \ - ACC="$(ACC)" \ - ACCFLAGS="$(ACCFLAGS)" \ + USE_ACCEL="$(DBCSR_USE_ACCEL)" \ + ACC="$(DBCSR_ACC)" \ + ACCFLAGS="$(DBCSR_ACCFLAGS)" \ clean diff --git a/tools/toolchain/scripts/generate_arch_files.sh b/tools/toolchain/scripts/generate_arch_files.sh index 6b43e961ff..4e1148b3be 100755 --- a/tools/toolchain/scripts/generate_arch_files.sh +++ b/tools/toolchain/scripts/generate_arch_files.sh @@ -239,6 +239,7 @@ gen_arch_file() { GPUVER = \${GPUVER} OFFLOAD_CC = \${NVCC} OFFLOAD_FLAGS = \${NVFLAGS} +OFFLOAD_TARGET = cuda EOF fi @@ -248,6 +249,7 @@ EOF GPUVER = \${GPUVER} OFFLOAD_CC = \${ROCM_PATH}/hip/bin/hipcc OFFLOAD_FLAGS = \${HIP_FLAGS} \${HIP_INCLUDES} +OFFLOAD_TARGET = hip EOF fi