From fa8e20f946b661bd49af2a60898ffca2c5b21cff Mon Sep 17 00:00:00 2001 From: "Jean M. Sexton" Date: Thu, 18 Aug 2022 08:57:51 -0700 Subject: [PATCH] Add Polaris to GNUMake (#2908) --- Tools/GNUMake/Make.defs | 7 ++-- Tools/GNUMake/Make.machines | 12 ++++-- Tools/GNUMake/sites/Make.alcf | 75 +++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 6 deletions(-) diff --git a/Tools/GNUMake/Make.defs b/Tools/GNUMake/Make.defs index 90a399e98af..f3f712816a6 100644 --- a/Tools/GNUMake/Make.defs +++ b/Tools/GNUMake/Make.defs @@ -757,6 +757,7 @@ else ifeq ($(USE_CUDA),TRUE) LINK_WITH_FORTRAN_COMPILER=TRUE endif + $(info Loading $(AMREX_HOME)/Tools/GNUMake/comps/nvcc.mak...) include $(AMREX_HOME)/Tools/GNUMake/comps/nvcc.mak ifeq ($(USE_MPI),TRUE) @@ -966,17 +967,17 @@ endif F90CACHE = ifeq ($(TP_PROFILING),VTUNE) - $(into Loading $(AMREX_HOME)/Tools/GNUMake/tools/Make.vtune + $(info Loading $(AMREX_HOME)/Tools/GNUMake/tools/Make.vtune include $(AMREX_HOME)/Tools/GNUMake/tools/Make.vtune endif ifeq ($(TP_PROFILING),CRAYPAT) - $(into Loading $(AMREX_HOME)/Tools/GNUMake/tools/Make.craypat + $(info Loading $(AMREX_HOME)/Tools/GNUMake/tools/Make.craypat include $(AMREX_HOME)/Tools/GNUMake/tools/Make.craypat endif ifeq ($(TP_PROFILING),FORGE) - $(into Loading $(AMREX_HOME)/Tools/GNUMake/tools/Make.forge + $(info Loading $(AMREX_HOME)/Tools/GNUMake/tools/Make.forge include $(AMREX_HOME)/Tools/GNUMake/tools/Make.forge endif diff --git a/Tools/GNUMake/Make.machines b/Tools/GNUMake/Make.machines index d68e594d80f..738461965d0 100644 --- a/Tools/GNUMake/Make.machines +++ b/Tools/GNUMake/Make.machines @@ -67,9 +67,15 @@ ifdef OLCF_ROCM_ROOT endif endif -ifeq ($(findstring theta, $(host_name)), theta) - which_site := alcf - which_computer := theta +ifeq ($(findstring alcf.anl.gov, $(host_name)),alcf.anl.gov) + ifeq ($(findstring theta, $(host_name)), theta) + which_site := alcf + which_computer := theta + endif + ifeq ($(findstring polaris, $(host_name)), polaris) + which_site := alcf + which_computer := polaris + endif endif ifeq ($(findstring sierra, $(host_name)), sierra) diff --git a/Tools/GNUMake/sites/Make.alcf b/Tools/GNUMake/sites/Make.alcf index 324d419ccce..cf607596515 100644 --- a/Tools/GNUMake/sites/Make.alcf +++ b/Tools/GNUMake/sites/Make.alcf @@ -8,3 +8,78 @@ ifeq ($(which_computer),theta) LIBRARIES += -lmpichf90 endif endif + +ifeq ($(which_computer),$(filter $(which_computer),polaris)) + + ifdef PE_ENV + ifneq ($(USE_GPU),TRUE) + lowercase_peenv := $(shell echo $(PE_ENV) | tr A-Z a-z) + ifneq ($(lowercase_peenv),$(lowercase_comp)) + has_compiler_mismatch = COMP=$(COMP) does not match PrgEnv-$(lowercase_peenv) + endif + ifeq ($(MAKECMDGOALS),) + ifeq ($(lowercase_peenv),nvidia) + $(error PrgEnv-nvidia cannot be used with CPU-only builds. Try PrgEnv-gnu instead.) + endif + endif + endif + endif + + ifeq ($(USE_CUDA),TRUE) + CFLAGS += -Xcompiler='$(wordlist 2,1024,$(shell cc -craype-verbose 2> /dev/null))' + CXXFLAGS += -Xcompiler='$(wordlist 2,1024,$(shell CC -craype-verbose 2> /dev/null))' + else ifeq ($(USE_MPI),FALSE) + CFLAGS += $(wordlist 2,1024,$(shell cc -craype-verbose 2> /dev/null)) + CXXFLAGS += $(wordlist 2,1024,$(shell CC -craype-verbose 2> /dev/null)) + endif + + ifeq ($(USE_MPI),TRUE) + ifneq ($(USE_CUDA),TRUE) + CC = cc + CXX = CC + FC = ftn + F90 = ftn + LIBRARIES += -lmpichf90 + endif + + includes += $(shell CC --cray-print-opts=cflags) + endif + + ifeq ($(USE_CUDA),TRUE) + CUDA_ARCH = 80 + + ifeq ($(USE_MPI), FALSE) + includes += $(CRAY_CUDATOOLKIT_INCLUDE_OPTS) + endif + + comm := , + ifneq ($(BL_NO_FORT),TRUE) + LIBRARIES += $(subst -Wl$(comm),-Xlinker=,$(shell ftn --cray-print-opts=libs)) + else + LIBRARIES += $(subst -Wl$(comm),-Xlinker=,$(shell CC --cray-print-opts=libs)) + endif + + ifneq ($(CUDA_ROOT),) + SYSTEM_CUDA_PATH := $(CUDA_ROOT) + COMPILE_CUDA_PATH := $(CUDA_ROOT) + else ifneq ($(CUDA_HOME),) + SYSTEM_CUDA_PATH := $(CUDA_HOME) + COMPILE_CUDA_PATH := $(CUDA_HOME) + else ifneq ($(CUDA_PATH),) + SYSTEM_CUDA_PATH := $(CUDA_PATH) + COMPILE_CUDA_PATH := $(CUDA_PATH) + else ifneq ($(NVIDIA_PATH),) + SYSTEM_CUDA_PATH := $(NVIDIA_PATH)/cuda + COMPILE_CUDA_PATH := $(NVIDIA_PATH)/cuda + else + $(error No CUDA_ROOT nor CUDA_HOME nor CUDA_PATH found. Please load a cuda module.) + endif + + # Provide system configuration information. + + GPUS_PER_NODE=4 + GPUS_PER_SOCKET=4 + + endif + +endif \ No newline at end of file