57 lines
1.4 KiB
Makefile
57 lines
1.4 KiB
Makefile
|
|
ifndef COMPILER
|
|
define compiler_help
|
|
Set COMPILER to change flags (defaulting to GNU).
|
|
Available compilers are:
|
|
GNU INTEL INTEL_LEGACY
|
|
|
|
endef
|
|
$(info $(compiler_help))
|
|
COMPILER=GNU
|
|
endif
|
|
|
|
|
|
CXX_GNU = g++
|
|
CXX_INTEL = icpx
|
|
CXX_INTEL_LEGACY = icpc
|
|
CXX = $(COMPILER_$(COMPILER))
|
|
|
|
CXXFLAGS_GNU = -march=native
|
|
CXXFLAGS_INTEL = -march=native
|
|
CXXFLAGS_INTEL_LEGACY = -qopt-streaming-stores=always
|
|
|
|
CXX = $(CXX_$(COMPILER))
|
|
CXXFLAGS = -std=c++11 -O3 $(CXXFLAGS_$(COMPILER))
|
|
|
|
|
|
|
|
ifndef PARTITIONER
|
|
define partitioner_help
|
|
Set PARTITIONER to select TBB's partitioner.
|
|
Partitioner specifies how a loop template should partition its work among threads.
|
|
|
|
Available options:
|
|
AUTO - Optimize range subdivision based on work-stealing events.
|
|
AFFINITY - Proportional splitting that optimizes for cache affinity.
|
|
STATIC - Distribute work uniformly with no additional load balancing.
|
|
SIMPLE - Recursively split its range until it cannot be further subdivided.
|
|
|
|
See https://spec.oneapi.com/versions/latest/elements/oneTBB/source/algorithms.html#partitioners
|
|
for more details.
|
|
|
|
endef
|
|
$(info $(partitioner_help))
|
|
PARTITIONER=AUTO
|
|
endif
|
|
|
|
PARTITIONER_MODE = -DPARTITIONER_$(PARTITIONER)
|
|
|
|
|
|
tbb-stream: main.cpp TBBStream.cpp
|
|
$(CXX) -DTBB $(PARTITIONER_MODE) $(CXXFLAGS) $^ $(EXTRA_FLAGS) -I$(TBB_DIR)/include -Wl,-rpath,$(TBB_DIR)/lib/intel64/gcc4.8 $(TBB_DIR)/lib/intel64/gcc4.8/libtbb.so -o $@
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -f tbb-stream
|
|
|