ENERGY ?= YES

ifeq ($(ENERGY), YES)
OPTIONS += -D_ENERGY_PMT_

# enable RAPL
OPTIONS += -D_ENERGY_RAPL_
# enable NVIDIA
OPTIONS += -D_ENERGY_NVIDIA_
# enable AMD
OPTIONS += # -D_ENERGY_AMD_

PMT = /leonardo/home/userexternal/dgoz0000/lib/pmt/local
# PMT   = /home/darkenergy/software/pmt
INC = -I$(PMT)/include
LIB = -L$(PMT)/lib64 -lpmt -lm

endif

TOOLCHAIN ?= 

NVCPP = nvc++ -std=c++17 # --gcc-toolchain=$(TOOLCHAIN)
OPT   = -O3
DEBUG = -O0 -g

all: mat_mult
.PHONY: clean test debug

mat_mult: mat_mult_block.cu energy/energy_pmt_methods.cpp energy/energy_pmt.h energy/energy_pmt_methods.h Makefile
	$(NVCPP) $(OPT) $(OPTIONS) $(INC) mat_mult_block.cu energy/energy_pmt_methods.cpp -o $@ $(LIB)
	ldd ./mat_mult

mat_mult_debug: mat_mult_block.cu energy/energy_pmt_methods.cpp energy/energy_pmt.h energy/energy_pmt_methods.h Makefile
	$(NVCPP) $(DEBUG) $(OPTIONS) $(INC) mat_mult_block.cu energy/energy_pmt_methods.cpp -o $@ $(LIB)
	ldd ./mat_mult_debug

test: mat_mult
	./mat_mult

debug: mat_mult_debug
	cuda-gdb ./$<

clean:
	rm -rf *.o mat_mult mat_mult_debug *~ energy/*~ energy/*.o
