where-simd-helps/slurm/build.sh

50 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# Build all benchmark binaries on the HPC login node.
#
# Usage: bash slurm/build.sh [--papi] [--rapl]
#
# Run this once after rsyncing, before submitting jobs.
# Binaries are written to harness/build-hpc/.
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BUILD_DIR="${REPO_ROOT}/harness/build-hpc"
WITH_PAPI=OFF
WITH_RAPL=OFF
for arg in "$@"; do
case "$arg" in
--papi) WITH_PAPI=ON ;;
--rapl) WITH_RAPL=ON ;;
*) echo "unknown flag: $arg" >&2; exit 1 ;;
esac
done
echo "=== pqc-bench build ==="
echo "REPO_ROOT : $REPO_ROOT"
echo "BUILD_DIR : $BUILD_DIR"
echo "WITH_PAPI : $WITH_PAPI"
echo "WITH_RAPL : $WITH_RAPL"
echo "CC : ${CC:-default}"
echo "DATE : $(date -Iseconds)"
# Ensure submodule is populated.
if [[ ! -f "${REPO_ROOT}/algorithms/kyber/ref/kem.c" ]]; then
echo "Populating git submodules..."
git -C "$REPO_ROOT" submodule update --init --recursive
fi
cmake \
-B "$BUILD_DIR" \
-S "${REPO_ROOT}/harness" \
-DCMAKE_BUILD_TYPE=Release \
-DWITH_PAPI="${WITH_PAPI}" \
-DWITH_RAPL="${WITH_RAPL}"
cmake --build "$BUILD_DIR" --parallel
echo ""
echo "Built binaries:"
ls -lh "${BUILD_DIR}"/bench_mlkem* 2>/dev/null || echo "(none found)"