From 3611c05f76baeb6632f349cf66cc28d039fe4499 Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Tue, 22 Sep 2026 16:53:35 +0000 Subject: [PATCH 01/11] [NFC] Make aomp_common_vars clean under shellcheck Record once that the file defines variables for the scripts that source it, so their uses are invisible to static analysis, and quote the two expansions flagged for word splitting. Neither has an effect. Quoting the array element in shquot also stops an argument holding a tab or a newline from being split into several quoted words. That output is meant to be pasted back into a shell, where the split silently alters the command. AI-assisted. --- bin/aomp_common_vars | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/bin/aomp_common_vars b/bin/aomp_common_vars index 4d1e5a5e00..e43313bd5a 100644 --- a/bin/aomp_common_vars +++ b/bin/aomp_common_vars @@ -9,6 +9,10 @@ # # The bash syntax ENVNAME=${ENVNAME:-value} checks if ENVNAME is # already set. If not, it assigns it the value following the :- +# +# Most variables defined here are consumed by the sourcing scripts, +# so their uses are invisible to static analysis. +# shellcheck disable=SC2034 # --- Start standard header to set AOMP environment variables ---- realpath=$(realpath "$0") @@ -262,9 +266,11 @@ function cmquot() { # copy & pasted into the user's terminal. Output should not be further quoted. function shquot() { local -a output + local arg Escaped output=() for arg in "$@"; do - output+=(\'${arg//\'/\'\\\'\'}\') + Escaped=${arg//\'/\'\\\'\'} + output+=("'${Escaped}'") done printf '%s' "${output[*]}" } @@ -568,11 +574,11 @@ declare -a ASAN_FLAGS if [ "$AOMP_BUILD_SANITIZER" == 1 ]; then if [ -f "${LLVM_INSTALL_LOC}/bin/clang" ]; then - ASAN_LIB=$(${LLVM_INSTALL_LOC}/bin/clang --print-file-name=libclang_rt.asan-x86_64.so) + ASAN_LIB=$("${LLVM_INSTALL_LOC}"/bin/clang --print-file-name=libclang_rt.asan-x86_64.so) ASAN_LIB_PATH=$(dirname "$ASAN_LIB") if [ ! -d "$ASAN_LIB_PATH" ]; then #Suppose above search path fails then via 'LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON' the host asan library would lose the suffix - ASAN_LIB=$(${LLVM_INSTALL_LOC}/bin/clang --print-file-name=libclang_rt.asan.so) + ASAN_LIB=$("${LLVM_INSTALL_LOC}"/bin/clang --print-file-name=libclang_rt.asan.so) ASAN_LIB_PATH=$(dirname "$ASAN_LIB") fi else From 99b34ac2665e41d981fa3eff76ff5b1f0d074f06 Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 02/11] [NFC] Add common function: merge_variable_with_inputs Merge a delimited variable with a list of inputs, skipping empty ones and avoiding dangling delimiters. Prepends by default so new inputs take priority. AI-assisted. --- bin/aomp_common_vars | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/bin/aomp_common_vars b/bin/aomp_common_vars index e43313bd5a..44b953a223 100644 --- a/bin/aomp_common_vars +++ b/bin/aomp_common_vars @@ -866,3 +866,48 @@ function help_build_aomp(){ EOF exit 0 } + +# Merge the contents of a variable with a list of input items. +# Usage: merge_variable_with_inputs --delimiter \ +# [--append|--prepend] [ ...] +# Default delimiter: ":" +# Default mode: --prepend (new inputs take priority / appear first). +# Empty/unset inputs are skipped; no dangling delimiters are produced. +# +# Example: +# merge_variable_with_inputs PATH "${AOMP:+${AOMP}/bin}" +# merge_variable_with_inputs CMAKE_MODULE_PATH --delimiter ";" \ +# --append "${AOMP:+${AOMP}/lib/cmake}" +function merge_variable_with_inputs() { + local VarName="$1"; shift + local Delimiter=":" + local Mode="prepend" + + while [ "$#" -gt 0 ]; do + case "$1" in + --delimiter) Delimiter="$2"; shift 2 ;; + --append) Mode="append"; shift ;; + --prepend) Mode="prepend"; shift ;; + --) shift; break ;; + *) break ;; + esac + done + + local -a InputItems=("$@") + local -n __MergeTargetVar="${VarName}" + + local Joined="" + local Item + for Item in "${InputItems[@]}"; do + [ -n "${Item}" ] && \ + Joined="${Joined:+${Joined}${Delimiter}}${Item}" + done + + # join2(a, b): a + Delimiter + b, but only if BOTH are non-empty; + # otherwise whichever side is non-empty (or "" if both are). + if [ "${Mode}" == "append" ]; then + __MergeTargetVar="${__MergeTargetVar}${__MergeTargetVar:+${Joined:+${Delimiter}}}${Joined}" + else + __MergeTargetVar="${Joined}${Joined:+${__MergeTargetVar:+${Delimiter}}}${__MergeTargetVar}" + fi +} From ea90073802f520dfecbdb105d1b92ce715d5cb2d Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 03/11] [llamacpp] Fix exports and refactor CMake Fix directory determination used during the aomp_common_vars sourcing. Derive ROCM_PATH from AOMP. Export PATH and LD_LIBRARY_PATH such that AOMP and ROCM_PATH take precedence. Refactor CMake configuration to allow easy printing and add corresponding print. Log the CMake configure step. AI-assisted. --- bin/run_llama.sh | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/bin/run_llama.sh b/bin/run_llama.sh index ddb2f6cd2e..04aad8511e 100755 --- a/bin/run_llama.sh +++ b/bin/run_llama.sh @@ -8,9 +8,12 @@ # Build script for LLaMA with HIP support using AOMP compiler +ScriptDir=$(dirname "$(realpath "$0")") + # shellcheck source=/dev/null -. aomp_common_vars +. "${ScriptDir}"/aomp_common_vars +: "${ROCM_PATH:=$(realpath -m "${AOMP}/../..")}" : "${AOMP_GPU:=gfx90a}" : "${LLAMA_GPU:=$AOMP_GPU}" @@ -24,6 +27,17 @@ : "${LLAMA_BENCH_HF_ID:=ggml-org/gemma-3-1b-it-GGUF}" : "${LLAMA_CACHE:=$HOME/.cache/llama.cpp}" +# Add AOMP and ROCM_PATH to PATH and LD_LIBRARY_PATH and export them. +merge_variable_with_inputs PATH "${AOMP:+${AOMP}/bin}" "${ROCM_PATH:+${ROCM_PATH}/bin}" +merge_variable_with_inputs LD_LIBRARY_PATH \ + "${AOMP:+${AOMP}/lib}" \ + "${AOMP:+${AOMP}/lib/x86_64-unknown-linux-gnu}" \ + "${ROCM_PATH:+${ROCM_PATH}/lib}" + +export PATH +export LD_LIBRARY_PATH +export ROCM_PATH + pushd "${AOMP_REPOS_TEST}" || exit mkdir -p "${LLAMA_TLDIR}" && cd "${LLAMA_TLDIR}" || exit @@ -92,19 +106,28 @@ else cd .. fi -echo "Configuring build with CMake..." if [ "${DoConfigure}" == "yes" ]; then + echo "Configuring build with CMake..." rm -rf "${LLAMA_BUILD_DIR}" - cmake -B build \ - -S src \ - -DCMAKE_PREFIX_PATH="${AOMP}"/lib/cmake \ - -DGGML_HIP=On \ - -DCMAKE_BUILD_TYPE="${LLAMA_BUILD_MODE}" \ - -DGPU_TARGETS="${LLAMA_GPU}" \ - ${CmakeGenerator:+"${CmakeGenerator}"} \ - -DCMAKE_C_COMPILER="${AOMP}"/bin/clang \ - -DCMAKE_CXX_COMPILER="${AOMP}"/bin/clang++ \ - -DCMAKE_HIP_COMPILER="${AOMP}"/bin/clang++ + + CMakeArgs=() + if [ -n "${CmakeGenerator}" ]; then + CMakeArgs+=("${CmakeGenerator}") + fi + + CMakeArgs+=("-S" "src") + CMakeArgs+=("-B" "build") + CMakeArgs+=("-DCMAKE_PREFIX_PATH=${ROCM_PATH}") + CMakeArgs+=("-DGGML_HIP=On") + CMakeArgs+=("-DCMAKE_BUILD_TYPE=${LLAMA_BUILD_MODE}") + CMakeArgs+=("-DGPU_TARGETS=${LLAMA_GPU}") + CMakeArgs+=("-DCMAKE_C_COMPILER=${AOMP}/bin/clang") + CMakeArgs+=("-DCMAKE_CXX_COMPILER=${AOMP}/bin/clang++") + CMakeArgs+=("-DCMAKE_HIP_COMPILER=${AOMP}/bin/clang++") + + printf 'cmake'; printf ' %q' "${CMakeArgs[@]}"; printf '\n' + cmake "${CMakeArgs[@]}" 2>&1 | + tee "${LLAMA_TESTS_LOG_LOCATION}/cmake-configure.log" fi if [ "${DoCompile}" == "yes" ]; then From 5a73f7e8efd68de33b6b110028e266539385d2fb Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 04/11] [NFC] Add common function: get_cmake_module_path Search a list of prefixes for lib/cmake/ and return the cmake directory holding it. Defaults to AOMP, then ROCM_PATH, then /opt/rocm, so a package missing from the ROCm under test resolves to the system ROCm. AI-assisted. --- bin/aomp_common_vars | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/bin/aomp_common_vars b/bin/aomp_common_vars index 44b953a223..c2d803a5da 100644 --- a/bin/aomp_common_vars +++ b/bin/aomp_common_vars @@ -911,3 +911,40 @@ function merge_variable_with_inputs() { __MergeTargetVar="${Joined}${Joined:+${__MergeTargetVar:+${Delimiter}}}${__MergeTargetVar}" fi } + +# Return the path containing the requested CMake module directory. +# Usage: get_cmake_module_path [ ...] +# Searches each given Path, in order, for /lib/cmake/. +# Empty path arguments are skipped (safe to pass an unset/empty variable). +# If no Path arguments are given, defaults to searching AOMP, then ROCM_PATH +# (or a path derived from AOMP, if set), then /opt/rocm. +function get_cmake_module_path() { + local Module="$1" + shift + local -a SearchPaths=("$@") + + # No explicit candidates given: fall back to the default search order. + # Default: AOMP -> ROCM_PATH (if empty: AOMP/../..) -> /opt/rocm + if [ "$#" -eq 0 ]; then + SearchPaths=( + "${AOMP}" + "${ROCM_PATH:-${AOMP:+$(realpath -m "${AOMP}/../../")}}" + "/opt/rocm" + ) + fi + + # Assumptions: + # All CMake modules are located within ./lib/cmake/. + # All CMake module configuration files are named *onfig*.cmake. + local Path + for Path in "${SearchPaths[@]}"; do + if [ -n "${Path}" ] && [ -d "${Path}/lib/cmake/${Module}" ] && + compgen -G "${Path}/lib/cmake/${Module}/${Module}"'*onfig*.cmake' \ + > /dev/null; then + # Return the parent(!) directory. + echo "${Path}/lib/cmake" + return 0 + fi + done + return 1 +} From b40b1caf1f85fd60d60f76f2fee48480bed60d47 Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 05/11] [llamacpp] Resolve the required ROCm packages individually ggml needs hip, hipblas and rocblas. Look each of them up separately so the ROCm under test is preferred and another installation is only added to CMAKE_PREFIX_PATH for what it does not ship itself, with a warning naming it. AI-assisted. --- bin/run_llama.sh | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/bin/run_llama.sh b/bin/run_llama.sh index 04aad8511e..3e85a6ef25 100755 --- a/bin/run_llama.sh +++ b/bin/run_llama.sh @@ -115,9 +115,40 @@ if [ "${DoConfigure}" == "yes" ]; then CMakeArgs+=("${CmakeGenerator}") fi + # Determine the CMake module paths of required ROCm packages. + CMakePrefixPath="${ROCM_PATH}" + declare -A SeenPrefix=() + for Package in hip hipblas rocblas; do + if ! PackageCmakeDir=$(get_cmake_module_path "${Package}"); then + Msg="ERROR: no CMake package '${Package}' below ${AOMP}," + Msg+=" ${ROCM_PATH} or /opt/rocm" + echo "${Msg}" + exit 1 + fi + + # Anything found below the ROCm under test needs no extra prefix. + # Removing a prefix that is present shortens the path, so a path that + # comes back unchanged did not start with it. + if [ "${PackageCmakeDir#"${AOMP}"/}" != "${PackageCmakeDir}" ] || + [ "${PackageCmakeDir#"${ROCM_PATH}"/}" != "${PackageCmakeDir}" ]; then + continue + fi + + Msg="WARNING: ${ROCM_PATH} does not provide ${Package}," + Msg+=" using ${PackageCmakeDir}" + echo "${Msg}" + + # Two packages commonly resolve to the same place; append it only once. + if [ -z "${SeenPrefix[${PackageCmakeDir}]:-}" ]; then + SeenPrefix["${PackageCmakeDir}"]=1 + CMakePrefixPath+=";${PackageCmakeDir}" + fi + done + unset SeenPrefix + CMakeArgs+=("-S" "src") CMakeArgs+=("-B" "build") - CMakeArgs+=("-DCMAKE_PREFIX_PATH=${ROCM_PATH}") + CMakeArgs+=("-DCMAKE_PREFIX_PATH=${CMakePrefixPath}") CMakeArgs+=("-DGGML_HIP=On") CMakeArgs+=("-DCMAKE_BUILD_TYPE=${LLAMA_BUILD_MODE}") CMakeArgs+=("-DGPU_TARGETS=${LLAMA_GPU}") From a6e22e979906181648750b9e945601bebda4ef51 Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 06/11] [NFC] Add common function: add_cmake_rocm_header_priority_args A ROCm package borrowed from another installation exports its whole include directory, HIP headers included, which CMake emits as -isystem. Since clang searches its own ROCm last, those headers win over the ROCm under test. Emit the include directory of the ROCm under test through CMAKE__COMPILER_ARG1, the only slot ahead of the includes CMake generates; every *_FLAGS variable lands behind them. AI-assisted. --- bin/aomp_common_vars | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/bin/aomp_common_vars b/bin/aomp_common_vars index c2d803a5da..91453e244d 100644 --- a/bin/aomp_common_vars +++ b/bin/aomp_common_vars @@ -948,3 +948,28 @@ function get_cmake_module_path() { done return 1 } + +# Keep the HIP headers of the ROCm under test ahead of every other ROCm's. +# Usage: add_cmake_rocm_header_priority_args [ ...] +# Appends one CMake argument per language (default: HIP); does nothing when +# ships no HIP headers of its own. +# +# A borrowed hipBLAS/rocBLAS exports its whole include directory, which CMake +# emits as -isystem, ahead of the compiler's own ROCm that clang searches last. +# CMAKE__COMPILER_ARG1 is the only slot in front of those includes; every +# *_FLAGS variable lands behind them. Keep CMAKE__COMPILER a plain path, +# CMake reassigns ARG1 when the compiler itself carries arguments. +function add_cmake_rocm_header_priority_args() { + local -n __HeaderPriorityArgs="$1"; shift + local RocmRoot="$1"; shift + local -a Languages=("$@") + [ "${#Languages[@]}" -gt 0 ] || Languages=("HIP") + + [ -n "${RocmRoot}" ] && [ -d "${RocmRoot}/include/hip" ] || return 0 + + local Language + for Language in "${Languages[@]}"; do + __HeaderPriorityArgs+=( + "-DCMAKE_${Language}_COMPILER_ARG1:STRING=-isystem ${RocmRoot}/include") + done +} From 0f3c47409b9e5dd31ab42bce860ccd545cc57cb8 Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 07/11] [llamacpp] Keep the HIP headers of the ROCm under test first Without this the HIP headers of whichever ROCm provides hipblas and rocblas are used, which fails to compile whenever they predate the compiler under test. AI-assisted. --- bin/run_llama.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/run_llama.sh b/bin/run_llama.sh index 3e85a6ef25..64d283709e 100755 --- a/bin/run_llama.sh +++ b/bin/run_llama.sh @@ -156,6 +156,10 @@ if [ "${DoConfigure}" == "yes" ]; then CMakeArgs+=("-DCMAKE_CXX_COMPILER=${AOMP}/bin/clang++") CMakeArgs+=("-DCMAKE_HIP_COMPILER=${AOMP}/bin/clang++") + # CMake modules export their whole include directory, HIP headers included, + # which would shadow the ROCm under test and e.g. its HIP headers. + add_cmake_rocm_header_priority_args CMakeArgs "${ROCM_PATH}" + printf 'cmake'; printf ' %q' "${CMakeArgs[@]}"; printf '\n' cmake "${CMakeArgs[@]}" 2>&1 | tee "${LLAMA_TESTS_LOG_LOCATION}/cmake-configure.log" From da337cad84555a71c74d9ac8d9f30a9f041f4729 Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 08/11] [NFC] Add common function: check_cmake_rocm_header_priority Confirm the include directory survived into the CMake cache. A lost entry only breaks the build while the two ROCm header sets are incompatible; otherwise it silently builds against the wrong ones. AI-assisted. --- bin/aomp_common_vars | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/bin/aomp_common_vars b/bin/aomp_common_vars index 91453e244d..b337c7f127 100644 --- a/bin/aomp_common_vars +++ b/bin/aomp_common_vars @@ -973,3 +973,39 @@ function add_cmake_rocm_header_priority_args() { "-DCMAKE_${Language}_COMPILER_ARG1:STRING=-isystem ${RocmRoot}/include") done } + +# Verify that the ROCm header priority survived the CMake run. +# Usage: check_cmake_rocm_header_priority [ ...] +# A lost entry only breaks the build while the two ROCm header sets are +# incompatible, otherwise it silently builds against the wrong ones. +function check_cmake_rocm_header_priority() { + local BuildDir="$1"; shift + local RocmRoot="$1"; shift + local -a Languages=("$@") + [ "${#Languages[@]}" -gt 0 ] || Languages=("HIP") + + [ -n "${RocmRoot}" ] && [ -d "${RocmRoot}/include/hip" ] || return 0 + + local CacheFile="${BuildDir}/CMakeCache.txt" + if [ ! -f "${CacheFile}" ]; then + echo "ERROR: ${CacheFile} not found" + return 1 + fi + + local Language Entry Msg Status=0 + for Language in "${Languages[@]}"; do + Entry=$(grep "^CMAKE_${Language}_COMPILER_ARG1:" "${CacheFile}" || true) + case "${Entry}" in + *"-isystem ${RocmRoot}/include"*) ;; + *) + Msg="ERROR: CMAKE_${Language}_COMPILER_ARG1 lost" + Msg+=" ${RocmRoot}/include, its HIP headers can be shadowed" + Msg+=" by another ROCm" + echo "${Msg}" + Status=1 + ;; + esac + done + + return "${Status}" +} From 48b35d35054e2a066656ce2cf3d49fef5ef18749 Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 09/11] [llamacpp] Verify the ROCm header priority after configuring AI-assisted. --- bin/run_llama.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/run_llama.sh b/bin/run_llama.sh index 64d283709e..1af4860894 100755 --- a/bin/run_llama.sh +++ b/bin/run_llama.sh @@ -163,6 +163,9 @@ if [ "${DoConfigure}" == "yes" ]; then printf 'cmake'; printf ' %q' "${CMakeArgs[@]}"; printf '\n' cmake "${CMakeArgs[@]}" 2>&1 | tee "${LLAMA_TESTS_LOG_LOCATION}/cmake-configure.log" + + # Make sure the ROCm header priority is preserved. + check_cmake_rocm_header_priority "${LLAMA_BUILD_DIR}" "${ROCM_PATH}" || exit 1 fi if [ "${DoCompile}" == "yes" ]; then From 88a70b3004b5e054237a5703d11ead52fb1d7009 Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 10/11] [llamacpp] Raise the ctest timeout test-backend-ops alone runs for about 2500s on MI350X and is killed by the 1500s ctest applies by default, which reports as a test failure rather than as an unfinished test. AI-assisted. --- bin/run_llama.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bin/run_llama.sh b/bin/run_llama.sh index 1af4860894..fb6eed311d 100755 --- a/bin/run_llama.sh +++ b/bin/run_llama.sh @@ -23,6 +23,10 @@ ScriptDir=$(dirname "$(realpath "$0")") : "${LLAMA_BUILD_MODE:=Release}" : "${LLAMA_TESTS_LOG_LOCATION:=$LLAMA_TLDIR/logs}" +# CTest 'test-backend-ops' exceeds the 1500s default timeout. +# Measured on MI350X: ~2500s +: "${LLAMA_CTEST_TIMEOUT:=3600}" + # Model to use in benchmarks (default is a smaller model) : "${LLAMA_BENCH_HF_ID:=ggml-org/gemma-3-1b-it-GGUF}" : "${LLAMA_CACHE:=$HOME/.cache/llama.cpp}" @@ -179,7 +183,8 @@ if [ "${DoCTest}" == "yes" ]; then echo "Log in ${LLAMA_TESTS_LOG_LOCATION}/ctest.log" # Some model files are git-lfs and come from huggingface. They will auto-download during test - ctest --output-on-failure 2>&1 | tee "${LLAMA_TESTS_LOG_LOCATION}/ctest.log" + ctest --output-on-failure --timeout "${LLAMA_CTEST_TIMEOUT}" 2>&1 | + tee "${LLAMA_TESTS_LOG_LOCATION}/ctest.log" fi run_llama_bench() { From 4b6743aec9a8b1d32d7812e5a7a9de1ad1c98cf3 Mon Sep 17 00:00:00 2001 From: Michael Halkenhaeuser Date: Wed, 23 Sep 2026 13:52:37 +0000 Subject: [PATCH 11/11] [llamacpp] Log the build step AI-assisted. --- bin/run_llama.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/run_llama.sh b/bin/run_llama.sh index fb6eed311d..66105052cb 100755 --- a/bin/run_llama.sh +++ b/bin/run_llama.sh @@ -174,7 +174,8 @@ fi if [ "${DoCompile}" == "yes" ]; then echo "Building LLaMA..." - cmake --build "${LLAMA_BUILD_DIR}" --parallel -j "${AOMP_BUILD_JOBS}" + cmake --build "${LLAMA_BUILD_DIR}" --parallel -j "${AOMP_BUILD_JOBS}" 2>&1 | + tee "${LLAMA_TESTS_LOG_LOCATION}/cmake-build.log" fi if [ "${DoCTest}" == "yes" ]; then