ede6007f9b
* Testing and CI support for Ubuntu 22.04 * Fixes for ROCm - Jammy does not have ROCm installers * Name, timeout, and python updates - renamed ubuntu-jammy-external.yml to ubuntu-jammy.yml - increased all 5 minute timeouts to 10 minutes - include python 3.10 in testing * Update dyninst to remove interposed definition of _r_debug * Rebuild Dyninst + test install script * Revert container change * git safe directory * pushd -> cd * fix MPI include * Fix testing step * OMPI_ALLOW_RUN_AS_ROOT * Test script changes * Fix mismatched malloc / delete[] * Jammy workflow tweaks * CPack tweak for boost deb deps * pthread_mutex_gotcha config returns when not enabled * fix echoing config in CI * USE_CLANG_OMP - option to disable using LLVM OpenMP when building OpenMP test executables - Jammy workflow sets USE_CLANG_OMP=OFF * Dyninst submodule boost download - updated containers workflow to include jammy - updated workflow to use ci * Updates to workflows + replace test-install.sh - test-install.sh in this branch was replaced with one in main branch * Expand jammy test-install.sh args * Fix openmp-cg-sampling-duration test * update timemory submodule - use-after-free violation in popen::pclose * revert some tweaks to sampling-duration test * Fix env of test-install.sh * cmake format * jammy bash * CPack install for jammy * formatting workflow action version bump * Update timemory submodule - libunwind submodule via timemory sets SOVERSION to 99 to avoid ABI conflicts with v8 * Fix help menu for omnitrace-sample * Support other boolean forms in test-install.sh * Update docker files and build-docker.sh - consolidated cases in build-docker.sh - support rocm version of 0.0 (no rocm install) - support rocm v5.3 - updated centos handling * update opensuse actions/checkout version * Tweaks to ubuntu-focal testing - actions/checkout@v3 - use test-install script * update cpack - ubuntu 22.04 - rocm 5.3 - rename os matrix field to os-version - remove CI_ROCM_VERSION (no longer necessary) - remove default-rocm-version matrix field (no longer necessary) - CentOS packaging * fix argparsing and omnitrace-sample tests in install-tests.sh * focal rocm test install workflow fix * Fix omnitrace-sample build * Dockerfile.centos + build-docker.sh updates * Update actions/upload-artifact version * Dockerfile.ubuntu: install rocm-device-libs * Refactor cpack * fix cpack if quotes * Dockerfile.ubuntu rocm < 5 installs rocm-dev * build-release.sh defaults to boost version 1.79.0
206 라인
6.3 KiB
Bash
실행 파일
206 라인
6.3 KiB
Bash
실행 파일
#!/bin/bash -e
|
|
|
|
SCRIPT_DIR=$(realpath $(dirname ${BASH_SOURCE[0]}))
|
|
cd $(dirname ${SCRIPT_DIR})
|
|
echo -e "Working directory: $(pwd)"
|
|
|
|
: ${SLEEP_TIME:=0}
|
|
|
|
error-message()
|
|
{
|
|
echo -e "\nError! ${@}\n"
|
|
exit -1
|
|
}
|
|
|
|
verbose-run()
|
|
{
|
|
echo -e "\n##### Executing \"${@}\"... #####\n"
|
|
sleep ${SLEEP_TIME}
|
|
eval $@
|
|
}
|
|
|
|
toupper()
|
|
{
|
|
echo "$@" | awk -F '\|~\|' '{print toupper($1)}';
|
|
}
|
|
|
|
get-bool()
|
|
{
|
|
echo "${1}" | egrep -i '^(y|on|yes|true|[1-9])$' &> /dev/null && echo 1 || echo 0
|
|
}
|
|
|
|
if [ -d "$(realpath /tmp)" ]; then
|
|
: ${TMPDIR:=/tmp}
|
|
export TMPDIR
|
|
fi
|
|
|
|
: ${CONFIG_DIR:=$(mktemp -t -d omnitrace-test-install-XXXX)}
|
|
: ${SOURCE_DIR:=$(dirname ${SCRIPT_DIR})}
|
|
: ${ENABLE_OMNITRACE:=1}
|
|
: ${ENABLE_OMNITRACE_AVAIL:=1}
|
|
: ${ENABLE_OMNITRACE_SAMPLE:=1}
|
|
: ${ENABLE_OMNITRACE_PYTHON:=0}
|
|
: ${ENABLE_OMNITRACE_REWRITE:=1}
|
|
: ${ENABLE_OMNITRACE_RUNTIME:=1}
|
|
: ${ENABLE_OMNITRACE_CRITICAL_TRACE:=1}
|
|
|
|
usage()
|
|
{
|
|
print_option() { printf " --%-10s %-24s %s (default: %s)\n" "${1}" "${2}" "${3}" "${4}"; }
|
|
echo "Options:"
|
|
print_option source-dir "<PATH>" "Location of source directory" "${SOURCE_DIR}"
|
|
print_option test-omnitrace "0|1" "Enable testing omnitrace exe" "${ENABLE_OMNITRACE}"
|
|
print_option test-omnitrace-avail "0|1" "Enable testing omnitrace-avail" "${ENABLE_OMNITRACE_AVAIL}"
|
|
print_option test-omnitrace-sample "0|1" "Enable testing omnitrace-sample" "${ENABLE_OMNITRACE_SAMPLE}"
|
|
print_option test-omnitrace-python "0|1" "Enable testing omnitrace-python" "${ENABLE_OMNITRACE_PYTHON}"
|
|
print_option test-omnitrace-rewrite "0|1" "Enable testing omnitrace binary rewrite" "${ENABLE_OMNITRACE_REWRITE}"
|
|
print_option test-omnitrace-runtime "0|1" "Enable testing omnitrace runtime instrumentation" "${ENABLE_OMNITRACE_RUNTIME}"
|
|
print_option test-omnitrace-critial-trace "0|1" "Enable testing omnitrace critical trace" "${ENABLE_OMNITRACE_CRITICAL_TRACE}"
|
|
}
|
|
|
|
cat << EOF > ${CONFIG_DIR}/omnitrace.cfg
|
|
OMNITRACE_VERBOSE = 2
|
|
OMNITRACE_USE_TIMEMORY = ON
|
|
OMNITRACE_USE_PERFETTO = ON
|
|
OMNITRACE_USE_SAMPLING = ON
|
|
OMNITRACE_USE_PROCESS_SAMPLING = ON
|
|
OMNITRACE_OUTPUT_PATH = %env{CONFIG_DIR}%/omnitrace-tests-output
|
|
OMNITRACE_OUTPUT_PREFIX = %tag%/
|
|
OMNITRACE_SAMPLING_FREQ = 100
|
|
OMNITRACE_SAMPLING_DELAY = 0.05
|
|
OMNITRACE_COUT_OUTPUT = ON
|
|
OMNITRACE_TIME_OUTPUT = OFF
|
|
OMNITRACE_USE_PID = OFF
|
|
EOF
|
|
|
|
export CONFIG_DIR
|
|
export OMNITRACE_CONFIG_FILE=${CONFIG_DIR}/omnitrace.cfg
|
|
verbose-run cat ${OMNITRACE_CONFIG_FILE}
|
|
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
ARG=${1}
|
|
shift
|
|
|
|
VAL="$(echo ${ARG} | sed 's/=/ /1' | awk '{print $2}')"
|
|
if [ -z "${VAL}" ]; then
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
VAL=$(get-bool ${1})
|
|
shift
|
|
break
|
|
done
|
|
else
|
|
VAL=$(get-bool ${VAL})
|
|
ARG="$(echo ${ARG} | sed 's/=/ /1' | awk '{print $1}')"
|
|
fi
|
|
|
|
if [ -z "${VAL}" ]; then
|
|
echo "Error! Missing value for argument \"${ARG}\""
|
|
usage
|
|
exit -1
|
|
fi
|
|
|
|
case "${ARG}" in
|
|
--test-omnitrace)
|
|
ENABLE_OMNITRACE=${VAL}
|
|
continue
|
|
;;
|
|
--test-omnitrace-avail)
|
|
ENABLE_OMNITRACE_AVAIL=${VAL}
|
|
continue
|
|
;;
|
|
--test-omnitrace-sample)
|
|
ENABLE_OMNITRACE_SAMPLE=${VAL}
|
|
continue
|
|
;;
|
|
--test-omnitrace-python)
|
|
ENABLE_OMNITRACE_PYTHON=${VAL}
|
|
continue
|
|
;;
|
|
--test-omnitrace-rewrite)
|
|
ENABLE_OMNITRACE_REWRITE=${VAL}
|
|
continue
|
|
;;
|
|
--test-omnitrace-runtime)
|
|
ENABLE_OMNITRACE_RUNTIME=${VAL}
|
|
continue
|
|
;;
|
|
--test-omnitrace-critical-trace)
|
|
ENABLE_OMNITRACE_CRITICAL_TRACE=${VAL}
|
|
continue
|
|
;;
|
|
--source-dir)
|
|
SOURCE_DIR=${VAL}
|
|
continue
|
|
;;
|
|
*)
|
|
echo -e "Error! Unknown option : ${ARG}"
|
|
usage
|
|
exit -1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
test-omnitrace()
|
|
{
|
|
verbose-run which omnitrace
|
|
verbose-run ldd $(which omnitrace)
|
|
verbose-run omnitrace --help
|
|
}
|
|
|
|
test-omnitrace-avail()
|
|
{
|
|
verbose-run which omnitrace-avail
|
|
verbose-run ldd $(which omnitrace-avail)
|
|
verbose-run omnitrace-avail --help
|
|
verbose-run omnitrace-avail -a
|
|
}
|
|
|
|
test-omnitrace-sample()
|
|
{
|
|
verbose-run which omnitrace-sample
|
|
verbose-run ldd $(which omnitrace-sample)
|
|
verbose-run omnitrace-sample --help
|
|
verbose-run omnitrace-sample --cputime 100 --realtime 50 --hsa-interrupt 0 -TPH -- python3 ${SOURCE_DIR}/examples/python/external.py -n 5 -v 20
|
|
}
|
|
|
|
test-omnitrace-python()
|
|
{
|
|
verbose-run which omnitrace-python
|
|
verbose-run omnitrace-python --help
|
|
verbose-run omnitrace-python -b -- ${SOURCE_DIR}/examples/python/builtin.py -n 5 -v 5
|
|
verbose-run omnitrace-python -b -- ${SOURCE_DIR}/examples/python/noprofile.py -n 5 -v 5
|
|
verbose-run omnitrace-python -- ${SOURCE_DIR}/examples/python/external.py -n 5 -v 5
|
|
verbose-run python3 ${SOURCE_DIR}/examples/python/source.py -n 5 -v 5
|
|
}
|
|
|
|
test-omnitrace-rewrite()
|
|
{
|
|
verbose-run omnitrace -e -v 1 -o ${CONFIG_DIR}/ls.inst --simulate -- ls
|
|
for i in $(find ${CONFIG_DIR}/omnitrace-tests-output/ls.inst -type f); do verbose-run ls ${i}; done
|
|
verbose-run omnitrace -e -v 1 -o ${CONFIG_DIR}/ls.inst -- ls
|
|
verbose-run ${CONFIG_DIR}/ls.inst
|
|
}
|
|
|
|
test-omnitrace-runtime()
|
|
{
|
|
verbose-run omnitrace -e -v 1 --simulate -- ls
|
|
for i in $(find ${CONFIG_DIR}/omnitrace-tests-output/ls -type f); do verbose-run ls ${i}; done
|
|
verbose-run omnitrace -e -v 1 -- ls
|
|
}
|
|
|
|
test-omnitrace-critical-trace()
|
|
{
|
|
which omnitrace-critical-trace
|
|
ldd $(which omnitrace-critical-trace)
|
|
}
|
|
|
|
if [ "${ENABLE_OMNITRACE}" -ne 0 ]; then verbose-run test-omnitrace; fi
|
|
if [ "${ENABLE_OMNITRACE_AVAIL}" -ne 0 ]; then verbose-run test-omnitrace-avail; fi
|
|
if [ "${ENABLE_OMNITRACE_SAMPLE}" -ne 0 ]; then verbose-run test-omnitrace-sample; fi
|
|
if [ "${ENABLE_OMNITRACE_PYTHON}" -ne 0 ]; then verbose-run test-omnitrace-python; fi
|
|
if [ "${ENABLE_OMNITRACE_REWRITE}" -ne 0 ]; then verbose-run test-omnitrace-rewrite; fi
|
|
if [ "${ENABLE_OMNITRACE_RUNTIME}" -ne 0 ]; then verbose-run test-omnitrace-runtime; fi
|
|
if [ "${ENABLE_OMNITRACE_CRITICAL_TRACE}" -ne 0 ]; then verbose-run test-omnitrace-critical-trace; fi
|