Files
mfem/miniapps/performance/makefile
T
Veselin Dobrev 667790ccf1 In the performance miniapps, add options to set the mesh refinements.
Run the miniapps/performance tests at coarser mesh resolutions, so that
the tests run faster.

Explicitly remove and ignore the temporary files created by the tests,
because, in some cases, they may not be removed automatically.
2017-09-30 20:25:17 -07:00

115 lines
3.7 KiB
Makefile

# Copyright (c) 2010, Lawrence Livermore National Security, LLC. Produced at the
# Lawrence Livermore National Laboratory. LLNL-CODE-443211. All Rights reserved.
# See file COPYRIGHT for details.
#
# This file is part of the MFEM library. For more information and source code
# availability see http://mfem.org.
#
# MFEM is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License (as published by the Free
# Software Foundation) version 2.1 dated February 1999.
# Use the MFEM build directory
MFEM_DIR ?= ../..
MFEM_BUILD_DIR ?= ../..
SRC = $(if $(MFEM_DIR:../..=),$(MFEM_DIR)/miniapps/performance/,)
CONFIG_MK = $(MFEM_BUILD_DIR)/config/config.mk
# Use the MFEM install directory
# MFEM_INSTALL_DIR = ../../mfem
# CONFIG_MK = $(MFEM_INSTALL_DIR)/share/mfem/config.mk
MFEM_LIB_FILE = mfem_is_not_built
-include $(CONFIG_MK)
# Distinguish x86 from PowerPC systems
MFEM_MACHINE ?= $(shell uname -m)
# Choose the switch MFEM_PERF_SW: gcc_x86_64, gcc_ppc64, or clang.
# The value of MFEM_PERF_SW is used to select MFEM_PERF_CXXFLAGS below.
ifneq (,$(MFEM_PERF_SW))
# Use the value of MFEM_PERF_SW if already defined
else ifneq (,$(filter %clang++ %mpiclang++,$(MFEM_CXX)))
MFEM_PERF_SW = clang
else ifneq (,$(filter %g++ %mpicxx %mpic++,$(MFEM_CXX)))
ifeq ($(MFEM_MACHINE),x86_64)
MFEM_PERF_SW = gcc_x86_64
else ifneq (,$(findstring ppc64,$(MFEM_MACHINE)))
MFEM_PERF_SW = gcc_ppc64
endif
endif
# Compiler specific optimizations.
# For best performance, GCC 5 (or newer) is recommended.
# - GCC extra options:
# MFEM_PERF_CXXFLAGS_gcc_common += -std=c++03
MFEM_PERF_CXXFLAGS_gcc_common += -std=c++11
MFEM_PERF_CXXFLAGS_gcc_common += -pedantic -Wall
MFEM_PERF_CXXFLAGS_gcc_common += --param max-completely-peel-times=3
# MFEM_PERF_CXXFLAGS_gcc_common += -fdump-tree-optimized-blocks
MFEM_PERF_CXXFLAGS_gcc_x86_64 = -march=native $(MFEM_PERF_CXXFLAGS_gcc_common)
MFEM_PERF_CXXFLAGS_gcc_ppc64 = -mcpu=native -mtune=native\
$(MFEM_PERF_CXXFLAGS_gcc_common)
# - Clang extra options:
MFEM_PERF_CXXFLAGS_clang += -march=native
# MFEM_PERF_CXXFLAGS_clang += -std=c++03
MFEM_PERF_CXXFLAGS_clang += -std=c++11
MFEM_PERF_CXXFLAGS_clang += -pedantic -Wall
MFEM_PERF_CXXFLAGS_clang += -fcolor-diagnostics
MFEM_PERF_CXXFLAGS_clang += -fvectorize
MFEM_PERF_CXXFLAGS_clang += -fslp-vectorize
MFEM_PERF_CXXFLAGS_clang += -fslp-vectorize-aggressive
MFEM_PERF_CXXFLAGS_clang += -ffp-contract=fast
# Choose MFEM_PERF_CXXFLAGS based on MFEM_PERF_SW:
MFEM_PERF_CXXFLAGS = $(MFEM_PERF_CXXFLAGS_$(MFEM_PERF_SW))
# Add MFEM_PERF_CXXFLAGS to MFEM_CXXFLAGS:
MFEM_CXXFLAGS += $(MFEM_PERF_CXXFLAGS)
SEQ_MINIAPPS = ex1
PAR_MINIAPPS = ex1p
ifeq ($(MFEM_USE_MPI),NO)
MINIAPPS = $(SEQ_MINIAPPS)
else
MINIAPPS = $(PAR_MINIAPPS) $(SEQ_MINIAPPS)
endif
.SUFFIXES:
.SUFFIXES: .o .cpp .mk
.PHONY: all clean clean-build clean-exec
# Remove built-in rule
%: %.cpp
# Replace the default implicit rule for *.cpp files
%: $(SRC)%.cpp $(MFEM_LIB_FILE) $(CONFIG_MK)
$(MFEM_CXX) $(MFEM_FLAGS) $< -o $@ $(MFEM_LIBS)
all: $(MINIAPPS)
MFEM_TESTS = MINIAPPS
include $(MFEM_TEST_MK)
# Testing: Parallel vs. serial runs
RUN_MPI = $(MFEM_MPIEXEC) $(MFEM_MPIEXEC_NP) $(MFEM_MPI_NP)
ex1p-test-par: ex1p
@$(call mfem-test,$<, $(RUN_MPI), Performance miniapp,-rs 2)
ex1-test-seq: ex1
@$(call mfem-test,$<,, Performance miniapp,-r 2)
# Testing: "test" target and mfem-test* variables are defined in config/test.mk
# Generate an error message if the MFEM library is not built and exit
$(MFEM_LIB_FILE):
$(error The MFEM library is not built)
clean: clean-build clean-exec
clean-build:
rm -f *.o *~ ex1 ex1p
rm -rf *.dSYM *.TVD.*breakpoints
clean-exec:
@rm -f refined.mesh mesh.* sol.*