50 lines
1.2 KiB
Bash
Executable File
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)"
|