1KOKKOS_PATH = ../..
2
3GTEST_PATH = ../../TPL/gtest
4
5vpath %.cpp ${KOKKOS_PATH}/containers/performance_tests
6
7default: build_all
8	echo "End Build"
9
10ifneq (,$(findstring Cuda,$(KOKKOS_DEVICES)))
11  CXX = $(KOKKOS_PATH)/bin/nvcc_wrapper
12else
13  CXX = g++
14endif
15
16CXXFLAGS = -O3
17LINK ?= $(CXX)
18LDFLAGS ?=
19override LDFLAGS += -lpthread
20
21include $(KOKKOS_PATH)/Makefile.kokkos
22
23KOKKOS_CXXFLAGS += -I$(GTEST_PATH) -I${KOKKOS_PATH}/containers/performance_tests
24
25TEST_TARGETS =
26TARGETS =
27
28ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1)
29	OBJ_CUDA = TestCuda.o TestMain.o gtest-all.o
30	TARGETS += KokkosContainers_PerformanceTest_Cuda
31	TEST_TARGETS += test-cuda
32endif
33
34ifeq ($(KOKKOS_INTERNAL_USE_HIP), 1)
35	OBJ_HIP = TestHIP.o TestMain.o gtest-all.o
36	TARGETS += KokkosContainers_PerformanceTest_HIP
37	TEST_TARGETS += test-hip
38endif
39
40ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1)
41	OBJ_THREADS = TestThreads.o TestMain.o gtest-all.o
42	TARGETS += KokkosContainers_PerformanceTest_Threads
43	TEST_TARGETS += test-threads
44endif
45
46ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1)
47	OBJ_OPENMP = TestOpenMP.o TestMain.o gtest-all.o
48	TARGETS += KokkosContainers_PerformanceTest_OpenMP
49	TEST_TARGETS += test-openmp
50endif
51
52ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1)
53	OBJ_HPX = TestHPX.o TestMain.o gtest-all.o
54	TARGETS += KokkosContainers_PerformanceTest_HPX
55	TEST_TARGETS += test-hpx
56endif
57
58KokkosContainers_PerformanceTest_Cuda: $(OBJ_CUDA) $(KOKKOS_LINK_DEPENDS)
59	$(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ_CUDA) $(KOKKOS_LIBS) $(LIB) -o KokkosContainers_PerformanceTest_Cuda
60
61KokkosContainers_PerformanceTest_HIP: $(OBJ_HIP) $(KOKKOS_LINK_DEPENDS)
62	$(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ_HIP) $(KOKKOS_LIBS) $(LIB) -o KokkosContainers_PerformanceTest_HIP
63
64KokkosContainers_PerformanceTest_Threads: $(OBJ_THREADS) $(KOKKOS_LINK_DEPENDS)
65	$(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ_THREADS) $(KOKKOS_LIBS) $(LIB) -o KokkosContainers_PerformanceTest_Threads
66
67KokkosContainers_PerformanceTest_OpenMP: $(OBJ_OPENMP) $(KOKKOS_LINK_DEPENDS)
68	$(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ_OPENMP) $(KOKKOS_LIBS) $(LIB) -o KokkosContainers_PerformanceTest_OpenMP
69
70KokkosContainers_PerformanceTest_HPX: $(OBJ_HPX) $(KOKKOS_LINK_DEPENDS)
71	$(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ_HPX) $(KOKKOS_LIBS) $(LIB) -o KokkosContainers_PerformanceTest_HPX
72
73test-cuda: KokkosContainers_PerformanceTest_Cuda
74	./KokkosContainers_PerformanceTest_Cuda
75
76test-hip: KokkosContainers_PerformanceTest_HIP
77	./KokkosContainers_PerformanceTest_HIP
78
79test-threads: KokkosContainers_PerformanceTest_Threads
80	./KokkosContainers_PerformanceTest_Threads
81
82test-openmp: KokkosContainers_PerformanceTest_OpenMP
83	./KokkosContainers_PerformanceTest_OpenMP
84
85test-hpx: KokkosContainers_PerformanceTest_HPX
86	./KokkosContainers_PerformanceTest_HPX
87
88build_all: $(TARGETS)
89
90test: $(TEST_TARGETS)
91
92clean: kokkos-clean
93	rm -f *.o $(TARGETS)
94
95# Compilation rules
96
97%.o:%.cpp $(KOKKOS_CPP_DEPENDS)
98	$(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) $(EXTRA_INC) -c $<
99
100gtest-all.o:$(GTEST_PATH)/gtest/gtest-all.cc
101	$(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) $(EXTRA_INC) -c $(GTEST_PATH)/gtest/gtest-all.cc
102