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_
endif

CC  = gcc
CPP = g++
NVC = nvc++
OPT = -Wall -Wextra -O3 -fopenmp -march=native
INC = /home/darkenergy/software/pmt/include
LIB = /home/darkenergy/software/pmt/lib -lpmt -lm

all: prog
.PHONY: clean test

mat_mult_block.o: mat_mult_block.cu energy/energy_pmt.h Makefile
	$(NVC) -O3 $(OPTIONS) $< -c $@

energy_pmt_methods.o: energy/energy_pmt_methods.cpp energy/energy_pmt_methods.h energy/energy_pmt.h Makefile
	$(CPP) $(OPTIONS) -I$(INC) $< -c $@

mat_mult: mat_mult_block.o energy_pmt_methods.o
	$(NVC) $(OPTIONS) $^ -o $@ -L$(LIB)
	ldd mat_mult

test: mat_mult
	./mat_mult

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