| set -e | |
| SEEDS=() | |
| METASEED="" | |
| NUM_SEED=-1 | |
| META_START=0 | |
| while [[ $# -gt 0 ]]; do | |
| case $1 in | |
| --metaseed) | |
| shift | |
| METASEED=$1 | |
| ;; | |
| --num_seed) | |
| shift | |
| NUM_SEED=$1 | |
| ;; | |
| --meta_start) | |
| shift | |
| META_START=$1 | |
| ;; | |
| *) | |
| echo "Unknown argument: $1" | |
| exit 1 | |
| ;; | |
| esac | |
| shift | |
| done | |
| if [[ -z "$METASEED" ]]; then | |
| echo "Error: --metaseed must be provided." | |
| exit 1 | |
| fi | |
| IFS=',' read -r -a GPU_ARRAY <<< "$GPU_IDS" | |
| NUM_PROCESSES=${#GPU_ARRAY[@]} | |
| if [[ -n "$METASEED" ]]; then | |
| if [[ $NUM_SEED -lt 0 ]]; then | |
| echo "Error: you must set --num_seed when using --metaseed." | |
| exit 1 | |
| fi | |
| echo "[INFO] Using metaseed=$METASEED" | |
| echo "[INFO] Will use seeds index range [$META_START, $NUM_SEED)" | |
| mapfile -t ALL_SEEDS < <( | |
| shuf -i 0-9999 \ | |
| --random-source=<(awk -v s="$METASEED" 'BEGIN { while (1) printf "%s", s }') \ | |
| | head -n $NUM_SEED | |
| ) | |
| # SEEDS=("${ALL_SEEDS[@]:META_START:NUM_SEED-META_START}") | |
| SEEDS=("${ALL_SEEDS[@]:$META_START:$((NUM_SEED - META_START))}") | |
| echo "[INFO] Total Seeds Generated: ${#ALL_SEEDS[@]}" | |
| echo "[INFO] Using Seeds: ${SEEDS[@]}" | |
| fi | |
| > "seeds-$METASEED.txt" | |
| for seed in "${SEEDS[@]}"; do | |
| echo $seed >> "seeds-$METASEED.txt" | |
| done |