#!/bin/bash
CURRENT_DIR=$(pwd)
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
PROJECT_ROOT=$( dirname $( dirname $(dirname "$SCRIPT_DIR")))
UTILS_PATH=${PROJECT_ROOT}/examples/utils
CSV_FILE="${SCRIPT_DIR}/test_shapes.csv"
source $PROJECT_ROOT/3rdparty/shmem/install/set_env.sh || {
echo "[ERROR] Running set_env.sh in $PROJECT_ROOT/3rdparty/shmem/install failed."
exit 1
}
IFS=',' read -ra DEVICE_ID_LIST <<< "$1"
RANK_SIZE=${#DEVICE_ID_LIST[@]}
if [ $RANK_SIZE -gt 8 ]; then
echo "Rank size is illegal"
exit 1
fi
cd ${PROJECT_ROOT}/examples/allgather_matmul/
DATA_DIR=`realpath ./out`
echo "DATA_DIR: $DATA_DIR"
EXEC_BIN=${PROJECT_ROOT}/build/bin/allgather_matmul
tail -n +2 "$CSV_FILE" | while IFS=',' read -r M K N; do
echo "Processing test case: M=${M}, K=${K}, N=${N}"
rm -rf ./out/*.bin
python3 ${UTILS_PATH}/gen_data.py "agmm" 1 ${RANK_SIZE} ${M} ${N} ${K} 0 0 ${DATA_DIR}
IPPORT="tcp://127.0.0.1:8788"
for (( idx = 0; idx < ${RANK_SIZE}; idx = idx + 1 )); do
${EXEC_BIN} "$RANK_SIZE" "$idx" "$IPPORT" "$M" "$N" "$K" "${DATA_DIR}" "$1" &
done
wait
python3 ${UTILS_PATH}/verify_result.py ${DATA_DIR}/output.bin ${DATA_DIR}/golden.bin 1 ${M} ${N} ${K}
done
cd ${CURRENT_DIR}