#!/usr/bin/env python3 # ============================================================================= # gpu_runner.py — Cycle 4: persistent GPU worker looping over a chunk list # Author: Simon-Pierre Boucher — contact@spboucher.ai # ============================================================================= # Processes chunks sequentially in ONE process so the compiled Metal kernel # and base-prime array are reused. Skips chunks whose output already exists # (idempotent restart). Usage: python3 gpu_runner.py # ============================================================================= import sys from pathlib import Path from gpu_sieve import sieve_segment_gpu from worker_c4 import run def main(): chunks = Path(sys.argv[1]).read_text().split() for i in range(0, len(chunks), 3): lo, hi, out = chunks[i], chunks[i + 1], chunks[i + 2] if Path(out).exists(): continue run(int(float(lo)), int(float(hi)), out, sieve_fn=sieve_segment_gpu, tag="/gpu") if __name__ == "__main__": main()