# edit everything between START and FINISH to reflect your architecture
#
# ------------------------------- START --------------------------------

CC     = mpicc
LINKER = $(CC)

MULTI_RUN = mpirun -np $(NPROCS)
COLLMARK_PATH = `pwd`

# ON Invocation of make run, the following must be provided:
# INPUT_FILE : File containing input data
# NPROCS : Number of processors to run the timings on
INPUT_FILE 	= ./input
NPROCS 		= 16

# pick appropriate C flags.  Option -DNOCHECK=1 turns off a check to see
# if correct answer is computed.  -DCRAY=1 turns on streams on the Cray T3E.
# enter path to directory in which output file is to be put and the name of
# the output file in the obvious place

# CFLAGS = -O3 -DNOCHECK=1
# CFLAGS = -O3
CFLAGS = -O3 

VENDOR =           "Cray"
MODEL  =           "T3E-600"
OWNING_ORGANIZATION = "NASA Goddard Space Flight Center"
CLOCK_SPEED =      "Clock speed: 600 Mhz"
OS_RELEASE =       "OS Release:  ????"
MPI_RELEASE =      "MPI Release: ????"
COMPILER_OPTIONS = "Flags:       " $(CFLAGS)
OTHER = "Data streams turned on"
CREDITS = "<name of person who ran the benchmark>"
AFFILIATION = "<affiliation of person who ran the benchmark>"
EMAIL = "<email of person who ran the benchmark>"

# ------------------------------ FINISH ---------------------------------

ALL   = time_all.o \
	time_bounce.o \
	time_bcast.o \
	time_scatter.o \
	time_gather.o \
	time_allgather.o \
	time_reduce.o  \
	time_allreduce.o  \
	time_reduce_scatter.o  

MY_COLL = \
	my_bcast.o \
	my_bcast2.o \
	my_gather.o \
	my_allgather.o \
	my_allgather2.o \
	my_allgather3.o \
	my_scatter.o \
	my_reduce_scatter.o \
	my_allreduce.o \
	new_mpi_allreduce.o \
	new_mpi_reduce.o \
	new_mpi_bcast.o \
	my_reduce.o

all:	$(ALL) $(MY_COLL) version_info
	$(LINKER) -o time_all.x $(CFLAGS) $(ALL) $(MY_COLL) -lm

run:	all
	cp $(COLLMARK_PATH)/version_info /tmp/CollMark_output_$(NPROCS).m
	$(MULTI_RUN) ./time_all.x < $(INPUT_FILE)
	mv /tmp/CollMark_output_$(NPROCS).m $(COLLMARK_PATH)

version_info: Makefile
	rm -f $(COLLMARK_PATH)/version_info
	echo "%" $(VENDOR) >> $(COLLMARK_PATH)/version_info
	echo "%" $(MODEL) >> $(COLLMARK_PATH)/version_info
	echo "%" $(OWNING ORGANIZATION) >> $(COLLMARK_PATH)/version_info
	echo "%" $(CLOCK_SPEED) >> $(COLLMARK_PATH)/version_info
	echo "%" $(OS_RELEASE) >> $(COLLMARK_PATH)/version_info
	echo "%" $(MPI_RELEASE) >> $(COLLMARK_PATH)/version_info
	echo "%" $(COMPILER_OPTIONS) >> $(COLLMARK_PATH)/version_info
	echo "%" $(OTHER)  >> $(COLLMARK_PATH)/version_info
	echo "%" $(CREDITS) >> $(COLLMARK_PATH)/version_info
	echo "%" $(AFFILIATION) >> $(COLLMARK_PATH)/version_info
	echo "%" $(EMAIL) >> $(COLLMARK_PATH)/version_info
