diff --git a/src/miniFE_sve/openmp-sve/src/build_sell_sve/Makefile b/src/miniFE_sve/openmp-sve/src/build_sell_sve/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..0b5efb4c3c397a9ad3aff1d8ed8b8290855563a4 --- /dev/null +++ b/src/miniFE_sve/openmp-sve/src/build_sell_sve/Makefile @@ -0,0 +1,33 @@ +#----------------------------------------------------------------------- +# ATTENTION: +# +# This file does not enable MPI in the binary, this is just OpenMP +# only. To enable MPI calls add -DHAVE_MPI to CPPFLAGS +# +#----------------------------------------------------------------------- + +MINIFE_TYPES = \ + -DMINIFE_SCALAR=double \ + -DMINIFE_LOCAL_ORDINAL=int \ + -DMINIFE_GLOBAL_ORDINAL=int + +#MINIFE_MATRIX_TYPE = -DMINIFE_CSR_MATRIX +#MINIFE_MATRIX_TYPE = -DMINIFE_ELL_MATRIX +MINIFE_MATRIX_TYPE = -DMINIFE_SELL_MATRIX + +#----------------------------------------------------------------------- + +CFLAGS = -O3 -fopenmp -march=armv8-a+sve -static +CXXFLAGS = $(CFLAGS) + +CPPFLAGS = -I. -I.. -I../../utils -I../../fem $(MINIFE_TYPES) $(MINIFE_MATRIX_TYPE) + +LDFLAGS= +LIBS= + +CXX=g++ +CC=gcc + +#----------------------------------------------------------------------- + +include make_targets diff --git a/src/miniFE_sve/openmp-sve/src/build_sell_sve/generate_info_header b/src/miniFE_sve/openmp-sve/src/build_sell_sve/generate_info_header new file mode 100755 index 0000000000000000000000000000000000000000..469f0b9c81ce652eeb23e4a345f69c0515d37579 --- /dev/null +++ b/src/miniFE_sve/openmp-sve/src/build_sell_sve/generate_info_header @@ -0,0 +1,88 @@ +#!/bin/bash + +# usage: +# generate_info_header <compiler> <flags> <header_prefix> <macro_prefix> +# example: +# % generate_info_header g++ -O3 miniFE MINIFE +# this will cause the appropriate info to be put in a +# header named miniFE_info.hpp and the info will be in macros +# that start with MINIFE. +# +# an example of usage can be seen in miniFE/make_targets +# +if [ $# != 4 ] ; then +echo "error, need 4 arguments."; +exit 1; +fi + +cxx=`which ${1}` +errcode="$?" +if [ ${errcode} != "0" ] ; then +cxx="unknown"; +fi +echo "CXX: ${cxx}" + +cxx_ver=`${1} --version 2>&1` +errcode="$?" +if [ ${errcode} != "0" ] ; then +cxx_ver=`${1} -V 2>&1`; +errcode="$?" +if [ ${errcode} != "0" ] ; then +cxx_ver="unknown"; +fi +fi + +cxx_ver=${cxx_ver// /@} +cxx_version="" +for i in $(echo ${cxx_ver}); +do + if [ "$cxx_version" == "" ]; then + cxx_version=$i; + fi +done +cxx_version=${cxx_version//@/ } +echo "Compiler version: ${cxx_version}" + +cxxflags=${2} +hostname=`uname -n` +errcode="$?" +if [ ${errcode} != "0" ] ; then +hostname="unknown"; +fi + +kern_name=`uname -s` +errcode="$?" +if [ ${errcode} != "0" ] ; then +kern_name="unknown"; +fi + +kern_rel=`uname -r` +errcode="$?" +if [ ${errcode} != "0" ] ; then +kern_rel="unknown"; +fi + +proc=`uname -p` +errcode="$?" +if [ ${errcode} != "0" ] ; then +proc="unknown"; +fi + +header_prefix=${3} +macro_prefix=${4} + +cat << END_CAT > ${header_prefix}_info.hpp +#ifndef ${header_prefix}_info_hpp +#define ${header_prefix}_info_hpp + +#define ${macro_prefix}_HOSTNAME "${hostname}" +#define ${macro_prefix}_KERNEL_NAME "'${kern_name}'" +#define ${macro_prefix}_KERNEL_RELEASE "'${kern_rel}'" +#define ${macro_prefix}_PROCESSOR "'${proc}'" + +#define ${macro_prefix}_CXX "'${cxx}'" +#define ${macro_prefix}_CXX_VERSION "'${cxx_version}'" +#define ${macro_prefix}_CXXFLAGS "'${cxxflags}'" + +#endif +END_CAT diff --git a/src/miniFE_sve/openmp-sve/src/build_sell_sve/get_common_files b/src/miniFE_sve/openmp-sve/src/build_sell_sve/get_common_files new file mode 100755 index 0000000000000000000000000000000000000000..a193c73173d61a26acbb2f82ec192e6fcbc86fe2 --- /dev/null +++ b/src/miniFE_sve/openmp-sve/src/build_sell_sve/get_common_files @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ -f ./YAML_Doc.cpp ] ; then + exit 0; +fi + +dir=.. + +cp ${dir}/YAML_Doc.cpp . +cp ${dir}/YAML_Doc.hpp . +cp ${dir}/YAML_Element.cpp . +cp ${dir}/YAML_Element.hpp . + +cp ${dir}/generate_info_header . + diff --git a/src/miniFE_sve/openmp-sve/src/build_sell_sve/make_targets b/src/miniFE_sve/openmp-sve/src/build_sell_sve/make_targets new file mode 100644 index 0000000000000000000000000000000000000000..635cfff541928bf17bbbb52f7c6bd5b794dde665 --- /dev/null +++ b/src/miniFE_sve/openmp-sve/src/build_sell_sve/make_targets @@ -0,0 +1,45 @@ + +OBJS = \ + BoxPartition.o \ + YAML_Doc.o \ + YAML_Element.o + +UTIL_OBJS = \ + param_utils.o \ + utils.o \ + mytimer.o + +MAIN_OBJ = \ + main.o + +MINIFE_INFO = 1 +MINIFE_KERNELS = 0 + +vpath %.cpp ../../utils + +all:common_files generate_info miniFE.x + +miniFE.x:common_files $(MAIN_OBJ) $(OBJS) $(UTIL_OBJS) $(OPTIONAL_OBJS) ../*.hpp generate_info + $(INSTRUMENT) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(MAIN_OBJ) $(OBJS) $(UTIL_OBJS) $(OPTIONAL_OBJS) -o miniFE.x $(LDFLAGS) $(OPTIONAL_LIBS) $(LIBS) + +common_files: + ./get_common_files + +generate_info: + ./generate_info_header "$(CXX)" "$(CXXFLAGS)" "miniFE" "MINIFE" + +verify:all + ./run_tests + +%.o:../%.cpp ../*.hpp + $(CXX) $(CXXFLAGS) $(CPPFLAGS) -DMINIFE_INFO=$(MINIFE_INFO) -DMINIFE_KERNELS=$(MINIFE_KERNELS) -c $< + +%.o:../%.c *.h + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< + +clean: + rm -f *.o *.a *.x *.linkinfo miniFE_info.hpp + +realclean: clean + rm -f gmon.out gprof.* *~ *.yaml *.TVD.* *.mtx* *.vec* minife_debug* +