diff --git a/src/compile b/src/compile old mode 100644 new mode 100755 index 1e567cc7ecb3b3ccbf9d09fb62637b39ed88fcbd..930020cbfb004d4e6949a7a450652390e26bb7e9 --- a/src/compile +++ b/src/compile @@ -1,9 +1,112 @@ +#!/bin/bash -gcc -std=c2x -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.1 vect.1.c -gcc -std=c2x -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.1b vect.1b.c +print_help() { + echo " an argument is needed at least" + echo " compile -c name [-p]" + echo " -c \$compiler_name : specifies the compiler to be used { gcc, icx }" + echo " -p : activates PAPI support " + exit 0 + } -gcc -std=c2x -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.2 vect.2.c +SRC_DIR=../src +X_DIR=. +INC_DIR=../headers +PAPI_OPTS=" -DUSE_PAPI " +PAPI_LIB="-lpapi" +OPTS=" -std=c2x -DFILL=25 -DNDEBUG " +GCC_OPTS=" -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops " +ICX_OPTS=" -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 " -gcc -std=c2x -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o compare_outputs compare_outputs.c -gcc -std=c2x -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o compare_outputs_vforce compare_outputs_vforce.c \ No newline at end of file +compiler=0 +gcc=1 +icx=2 +support_papi=0 + +CLOPTIONS="c:ph" + +if [[ $# -lt 1 ]]; then print_help; fi + +while getopts ${CLOPTIONS} opt; do + + case ${opt} in + c) if [[ $OPTARG == [Gg][Cc][Cc] ]]; then + echo "compile with gcc" + compiler=$gcc + elif [[ "$OPTARG" == [Ii][Cc][Xx] ]]; then + echo "compile with icx" + compiler=$icx + else + echo "unsupported compiler" + exit 1 + fi + ;; + + p) support_papi=1 + echo "compile with PAPI support" + ;; + + h) print_help + ;; + :) echo "option -${OPTARG} requires an argument" + ;; + + ?) echo "invalid option -${OPTARG}" + ;; + esac + +done + + + +if [ ${compiler} == ${gcc} ]; +then + suffix=.gcc + OPTIMIZATION=${GCC_OPTS} + cc=gcc +else + suffix=.icx + OPTIMIZATION=${ICX_OPTS} + cc=icx +fi + +if [[ ${support_papi} -eq 1 ]]; +then + ADD_PAPI_OPTS=${PAPI_OPTS} + ADD_PAPI_LIB=${PAPI_LIB} + suffix=${suffix}.papi +else + ADD_PAPI_OPTS="" + ADD_PAPI_LIB="" +fi + +cc ${OPTS} ${ADD_PAPI_OPTS} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.1${suffix} ${SRC_DIR}/vect.1.c ${ADD_PAPI_LIB} 2> compile.log.out +cc ${OPTS} ${ADD_PAPI_OPTS} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.1b${suffix} ${SRC_DIR}/vect.1b.c -lm ${ADD_PAPI_LIB} 2>> compile.log.out + +cc ${OPTS} ${ADD_PAPI_OPTS} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.2${suffix} ${SRC_DIR}/vect.2.c ${ADD_PAPI_LIB} 2>> compile.log.out +cc ${OPTS} ${ADD_PAPI_OPTS} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.2b${suffix} ${SRC_DIR}/vect.2b.c -lm ${ADD_PAPI_LIB} 2>> compile.log.out + + + +# gcc -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.1b.gcc vect.1b.c +# gcc -std=c2x -DFILL=25 -DNDEBUG -DUSE_PAPI -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.1b.gcc.papi ../src/vect.1b.c -lm -lpapi + +# gcc -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.2.gcc vect.2.c -lm +# gcc -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.2b.gcc vect.2b.c -lm +# gcc -std=c2x -DFILL=25 -DNDEBUG -DUSE_PAPI -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o vect.2b.gcc.papi ../src/vect.2b.c -lm -lpapi + + +# gcc -std=c2x -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o compare_outputs compare_outputs.c +# gcc -std=c2x -DNDEBUG -I../headers -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops -o compare_outputs_vforce compare_outputs_vforce.c + + +# # ------------------- icx + +# icx -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.1.icx vect.1.c + +# icx -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.1b.icx vect.1b.c +# icx -std=c2x -DFILL=25 -DNDEBUG -DUSE_PAPI -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.1b.icx.papi ../src/vect.1b.c -lm -lpapi + +# icx -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.2.icx vect.2.c -lm +# icx -std=c2x -DFILL=25 -DNDEBUG -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.2b.icx vect.2b.c -lm +# icx -std=c2x -DFILL=25 -DNDEBUG -DUSE_PAPI -I../headers -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 -o vect.2b.icx.papi ../src/vect.2b.c -lm -lpapi