Chunk 33.0

In this chunk, the session focused on two major efforts: finalizing Phase 12 documentation and benchmarking, and planning/implementing the integration of the `cuzk` proving daemon into Curio's task orchestrator. First, the Phase 12 split GPU proving API and memory backpressure fixes were formally documented in `cuzk-project.md`, along with a comprehensive low-memory benchmark sweep across nine configurations (`partition_workers` 1–12, `gpu_workers_per_device` 1–2). This established a linear memory scaling formula (`~69 GiB baseline + pw × ~20 GiB`) and concrete RAM tier recommendations (128 GiB minimum, 256 GiB sweet spot, 512+ GiB optimal). The example configuration file was updated with optimal defaults and RAM-tier guidelines, and all changes were committed as `9bb657e5`. The second half of the chunk shifted to architectural planning and initial implementation of `cuzk` integration with Curio. A detailed plan was laid out to add a `CuzkConfig` section to Curio's configuration (`deps/config/types.go`), create a Go gRPC client library (`lib/cuzk/client.go`) generated from the existing protobuf definitions, and modify four task types (PoRep, SnapDeals, WindowPoSt, WinningPoSt) to delegate SNARK computation to the `cuzk` daemon. The key design decisions include: bypassing Curio's local resource accounting when `cuzk` is enabled (zeroing GPU/RAM costs in `TypeDetails()`), using `CanAccept()` to query the daemon's queue status for backpressure, and splitting vanilla proof generation (local, needs sector data) from SNARK proving (offloaded to `cuzk`). A new file `lib/ffi/cuzk_funcs.go` was created to provide `SealCalls` methods that generate vanilla proofs locally and then submit them to the `cuzk` daemon via gRPC. The generated protobuf stubs compile successfully, and the integration wiring is in progress.

From Benchmark to Integration: The cuzk–Curio Proving Pipeline Comes Together 2457 words

Message Articles