From 282251f0261d2f543f075ccc2bc36807e715c98c Mon Sep 17 00:00:00 2001 From: James Price Date: Fri, 24 Feb 2017 12:48:00 +0000 Subject: [PATCH] Add options for specific targets in OpenACC.make --- OpenACC.make | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/OpenACC.make b/OpenACC.make index 161c20e..af27481 100644 --- a/OpenACC.make +++ b/OpenACC.make @@ -6,25 +6,41 @@ endif COMPILER_ = $(CXX) COMPILER_PGI = pgc++ COMPILER_CRAY = CC -CXX = $(COMPILER_$(COMPILER)) FLAGS_ = -O3 FLAGS_PGI = -std=c++11 -O3 -acc ifeq ($(COMPILER), PGI) +define target_help +Set a TARGET to ensure PGI targets the correct offload device. +Available targets are: + SNB, IVB, HSW, BDW, KNL + KEPLER, MAXWELL, PASCAL + HAWAII +endef ifndef TARGET -$(info Set a TARGET to ensure PGI targets the correct offload device. i.e. TARGET=GPU or CPU) +$(error $(target_help)) endif +TARGET_FLAGS_SNB = -ta=multicore -tp=sandybridge +TARGET_FLAGS_IVB = -ta=multicore -tp=ivybridge +TARGET_FLAGS_HSW = -ta=multicore -tp=haswell +TARGET_FLAGS_BDW = -ta=multicore -tp=haswell # Not yet supported directly +TARGET_FLAGS_KNL = -ta=multicore -tp=haswell # Not yet supported directly +TARGET_FLAGS_KEPLER = -ta=nvidia:cc35 +TARGET_FLAGS_MAXWELL = -ta=nvidia:cc50 +TARGET_FLAGS_PASCAL = -ta=nvidia:cc60 +TARGET_FLAGS_HAWAII = -ta=radeon:hawaii +ifeq ($(TARGET_FLAGS_$(TARGET)),) +$(error $(target_help)) endif -ifeq ($(TARGET), GPU) -FLAGS_PGI += -ta=nvidia -else ifeq ($(TARGET), CPU) -FLAGS_PGI += -ta=multicore + +FLAGS_PGI += $(TARGET_FLAGS_$(TARGET)) + endif FLAGS_CRAY = -hstd=c++11 CXXFLAGS = $(FLAGS_$(COMPILER)) acc-stream: main.cpp ACCStream.cpp - $(CXX) $(CXXFLAGS) -DACC $^ $(EXTRA_FLAGS) -o $@ + $(COMPILER_$(COMPILER)) $(CXXFLAGS) -DACC $^ $(EXTRA_FLAGS) -o $@