## Legacy GNU/OpenMPI toolchain configuration ## OpenMPI wrappers are installed but may not be on PATH. OMPI_BIN ?= /usr/lib64/openmpi/bin ## Wrapper compilers f90 = $(OMPI_BIN)/mpifort f77 = $(OMPI_BIN)/mpifort CXX = $(OMPI_BIN)/mpicxx CC = $(OMPI_BIN)/mpicc CLINKER = $(OMPI_BIN)/mpicxx ## Extra include flags are not needed when using the OpenMPI wrappers. filein = ## BLAS/LAPACK backend: ## OpenBLAS on this system provides BLAS, CBLAS and LAPACK symbols. BLAS_LAPACK_LIB ?= /lib64/libopenblaso.so.0 LDLIBS = $(BLAS_LAPACK_LIB) -lgfortran -lpthread -lm -ldl ## PGO build mode switch ## off : default legacy GNU build without PGO ## instrument : accepted for compatibility, currently same as off PGO_MODE ?= off ## Interp_Points load balance profiling mode ## off : (default) no load balance instrumentation ## profile : Pass 1 — instrument Interp_Points to collect timing profile ## optimize : Pass 2 — read profile and apply block rebalancing INTERP_LB_MODE ?= off ifeq ($(INTERP_LB_MODE),profile) INTERP_LB_FLAGS = -DINTERP_LB_PROFILE else ifeq ($(INTERP_LB_MODE),optimize) INTERP_LB_FLAGS = -DINTERP_LB_OPTIMIZE else INTERP_LB_FLAGS = endif ## Kernel implementation switch ## 1 (default) : use C++ rewrite of bssn_rhs and helper kernels (faster) ## 0 : fall back to original Fortran kernels USE_CXX_KERNELS ?= 1 ## RK4 kernel implementation switch ## 1 (default) : use C/C++ rewrite of rungekutta4_rout ## 0 : use original Fortran rungekutta4_rout.o USE_CXX_RK4 ?= 1 ## OpenMP is only used for TwoPunctures on the legacy toolchain. TP_OPENMP_FLAGS ?= -fopenmp Cu = nvcc CUDA_LIB_PATH = -L/usr/lib/cuda/lib64 -I/usr/include -I/usr/lib/cuda/include CUDA_APP_FLAGS = -c -g -O3 --ptxas-options=-v -Dfortran3 -Dnewc