Commit 7d579448 authored by Nichols, Stephen's avatar Nichols, Stephen
Browse files

On branch gcc_openmp

 Changes to be committed:
	deleted:    Makefile_summit

Use a single Makefile for both Summit and Spock
parent 4d930470
Loading
Loading
Loading
Loading

Makefile_summit

deleted100644 → 0
+0 −129
Original line number Diff line number Diff line
SHELL=/bin/bash

#MACHINE = Summit
### the Spock compiler flags also work on Crusher (with exception that no GCC with OpenMP Offloading on Crusher yet)
MACHINE = Spock

#COMPILER = Native
COMPILER = GCC

#CPU_or_GPU = CPU
CPU_or_GPU = GPU

#### Summit
ifeq ($(MACHINE),Summit)
   ifeq ($(COMPILER),Native)
      ifeq ($(CPU_or_GPU),CPU)
         ## CPU-Only 
         ## enable OpenMP without defining USE_OPENMP_OFFLOAD to use the omp_get_wtime 
         ## function and this makes me use the xlf_r compiler instead of xlf
         FC      = xlf_r
         FFLAGS = -O3 -qsmp=omp -qfree -qpreprocess -qtune=pwr9 -qarch=pwr9 -W@,"-v"
         LDFLAGS = -qsmp=omp
      else
         ## GPUs with OpenMP Offloading
         FC      = xlcuf
         FFLAGS = -O3 -qfree -qpreprocess -qsmp=omp -qoffload -qcuda -qtune=pwr9 -qarch=pwr9 -qtgtarch=sm_70 -W@,"-v"
         FFLAGS += -DUSE_OPENMP_OFFLOAD -DUSE_CUDA
         LDFLAGS = -qsmp=omp -qoffload -L${OLCF_CUDA_ROOT}/lib64 -lnvToolsExt -lcudart
      endif
   endif

   ifeq ($(COMPILER),GCC)
      ifeq ($(CPU_or_GPU),GPU)
         FC      = gfortran
         FFLAGS = -O3 -ffree-form -cpp -fopenmp -foffload="-lm -latomic"
         FFLAGS += -DUSE_OPENMP_OFFLOAD -DUSE_CUDA
         LDFLAGS = -fopenmp -foffload="-lm -latomic" -L${OLCF_CUDA_ROOT}/lib64 -lnvToolsExt -lcudart
      else
         FC      = gfortran
         FFLAGS = -O3 -ffree-form -cpp
         LDFLAGS =
      endif
   endif
endif

#### Spock and Crusher (GCC option not available on Crusher yet)
ifeq ($(MACHINE),Spock)
   ROCM_LIB_PATH=${OLCF_ROCM_ROOT}/lib
   ROCM_INC_PATH=${OLCF_ROCM_ROOT}/include

   ifeq ($(COMPILER),Native)
      FC = ftn

      ifeq ($(CPU_or_GPU),GPU)
         ### GPU
         FFLAGS = -N1023 -O3 -homp -em -ef -eT -ffree -DUSE_OPENMP_OFFLOAD -DUSE_AMD 
         ##FFLAGS += -I$(ROCM_INC_PATH)
         LDFLAGS = -homp -L$(ROCM_LIB_PATH) -lamdhip64 -lhsa-runtime64
      else
         ### CPU-only without OpenMP
         #FFLAGS = -N1023 -O3 -hnoomp -em -ef -eT -ffree
         #LDFLAGS = -hnoomp

         ### CPU-only with OpenMP flag ... no cpu-based openmp is in the code, but I 
         ### want to use omp_get_wtime function ... don't define USE_OPENMP_OFFLOAD
         FFLAGS = -N1023 -O3 -homp -em -ef -eT -ffree
         LDFLAGS = -homp
      endif
   endif

   ifeq ($(COMPILER),GCC)
      ifeq ($(CPU_or_GPU),GPU)
         FC = gfortran
         FFLAGS = -O3 -ffree-form -cpp -fopenmp -foffload="-march=gfx908 -lm"
         FFLAGS += -DUSE_OPENMP_OFFLOAD -DUSE_AMD
         LDFLAGS = -fopenmp -foffload="-march=gfx908 -lm"
         #LDFLAGS += -L$(ROCM_LIB_PATH) -lamdhip64 -lhsa-runtime64
         LDFLAGS += -L$(ROCM_LIB_PATH) -lamdhip64
      else
         ### CPU-only without OpenMP ... uses gfortran timer
         #FC = gfortran
         #FFLAGS = -O3 -ffree-form -ffree-line-length-none -cpp
         #LDFLAGS =

         ### CPU-only with OpenMP flag ... no cpu-based openmp is in the code, but I 
         ### want to use omp_get_wtime function ... don't define USE_OPENMP_OFFLOAD
         FC = gfortran
         FFLAGS = -O3 -fopenmp -ffree-form -ffree-line-length-none -cpp
         LDFLAGS = -fopenmp
      endif
   endif
endif

F_SRC = custom_linsolve.f90

MODS =

ifneq (,$(findstring USE_CUDA,$(FFLAGS)))
   MODS += my_cudainterfaces.f90
   MODS += nvtx.f90
endif
ifneq (,$(findstring USE_AMD,$(FFLAGS)))
   MODS += my_hipinterfaces.f90
endif

MODS += global_parameters.f90 timing_functions.f90 matrix_ops.f90

OBJECTS = $(MODS:.f90=.o) $(F_SRC:.f90=.o)
EXE = custom_linsolve.x

# rules for makefile
#$(FC) -o $@ $^ $(LDFLAGS)
$(EXE): $(OBJECTS)
	$(FC) $(LDFLAGS) -o $@ $^

%.o:%.f90
	$(FC) $(FFLAGS) -c -o $@ $<

default: all

all: $(EXE)

clean:
	rm -f *.o *.mod *.x *.s

clobber:
	rm -f *.o *.mod *.x *.s *~