diff --git a/src/compile b/src/compile index 930020cbfb004d4e6949a7a450652390e26bb7e9..76646a49729676220ca3bdf078101db9a2ebf131 100755 --- a/src/compile +++ b/src/compile @@ -2,28 +2,49 @@ print_help() { - echo " an argument is needed at least" + echo " at least the -c argument is needed" echo " compile -c name [-p]" echo " -c \$compiler_name : specifies the compiler to be used { gcc, icx }" echo " -p : activates PAPI support " exit 0 } -SRC_DIR=../src -X_DIR=. -INC_DIR=../headers -PAPI_OPTS=" -DUSE_PAPI " -PAPI_LIB="-lpapi" -OPTS=" -std=c2x -DFILL=25 -DNDEBUG " + +# the relevant folders +# + +SRC_DIR=../src # this setup is useful if you want to compile +X_DIR=. # not in src/ but in a sibling folder +INC_DIR=../headers # + +# options that you need to compile +# +OPTS=" -std=c2x -DFILL=25 " + +# specific options +# +ASSERT_OPT=" -DNDEBUG " +PAPI_OPT=" -DUSE_PAPI " +PAPI_LIB=" -lpapi " + GCC_OPTS=" -O3 -march=native -mtune=native -ftree-vectorize -funroll-loops " ICX_OPTS=" -O3 -xHost -vec -axCORE-AVX2,CORE-AVX512 " +# variables that control the behaviour +# compiler=0 gcc=1 icx=2 +assert_on=0 support_papi=0 -CLOPTIONS="c:ph" +# +# ================================================== +# +# parse the arguments +# + +CLOPTIONS="c:aph" if [[ $# -lt 1 ]]; then print_help; fi @@ -42,6 +63,10 @@ while getopts ${CLOPTIONS} opt; do fi ;; + a) assert_on=1 + echo "compile with asserts on" + ;; + p) support_papi=1 echo "compile with PAPI support" ;; @@ -57,7 +82,11 @@ while getopts ${CLOPTIONS} opt; do done - +# +# =========================================== +# +# set-up things +# if [ ${compiler} == ${gcc} ]; then @@ -70,43 +99,30 @@ else cc=icx fi +if [[ ${assert_on} -eq 1 ]]; +then + ASSERT_OPT="" +fi + if [[ ${support_papi} -eq 1 ]]; then - ADD_PAPI_OPTS=${PAPI_OPTS} + ADD_PAPI_OPT=${PAPI_OPT} ADD_PAPI_LIB=${PAPI_LIB} suffix=${suffix}.papi else - ADD_PAPI_OPTS="" + ADD_PAPI_OPT="" 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 +# +# =========================================== +# +# compile +# -# 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 +cc ${OPTS} ${ADD_PAPI_OPT} -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_OPT} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.1b${suffix} ${SRC_DIR}/vect.1b.c -lm ${ADD_PAPI_LIB} 2>> compile.log.out -# 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 +cc ${OPTS} ${ADD_PAPI_OPT} -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_OPT} -I${INC_DIR} ${OPTIMIZATION} -o ${X_DIR}/vect.2b${suffix} ${SRC_DIR}/vect.2b.c -lm ${ADD_PAPI_LIB} 2>> compile.log.out