Skip to content

CPU-only CoFiI2P execution probe

The user confirmed no GPU environment is available. CPU-only operation is now a constraint, not a pending GPU request. Existing MI search/multistart negatives and stereo-surface failures remain closed; this probe checks an actual model execution path rather than repeating those searches.

The previous geometry bridge has not yet established full model CPU execution. This bounded experiment imports the pinned external CoFiI2P model in an isolated source copy, supplies synthetic CPU geometry and random seeded weights, and executes its real mode='test' path with all label inputs None. No learned checkpoint or real frame is used. Success is an execution result, not official CPU/GPU parity, usable learned correspondences or accuracy.

Frozen changes and inputs

tools/cofii2p_cpu_probe.py accepts the reviewed external source directory, a geometry-bridge NPZ and a new output directory. It refuses an upstream revision other than ed90edf51cca540ee76152d91133c7e79b63256c or a dirty tracked tree, then copies it outside Calibrex core. Only two external source files are patched:

  • model/network.py: four active .cuda() calls become transfers to the relevant input's device. The unused Open3D import is removed. The predicted-pair threshold loop fails explicitly if it passes its score domain without obtaining four pairs, rather than looping forever on untrained features. No pairs are invented.
  • model/kpconv/kernel_points.py: retain native NumPy kernel generation, noise and rotation, replacing only Open3D PLY cache I/O with NumPy cache I/O. Remove unused matplotlib/Open3D imports. Debug plotting and alternate Open3D helper paths are not supported by this probe and are not called.

The existing SciPy bridge supplies points, mean intensity/normals and five KNN levels. Its Open3D ordering/tie/grid differences remain explicit. A deterministic random512×160 image is generated locally; prepared real-image parity is not asserted. Options use the original image size, group normalization and original model dimensions. The reduced case changes point count only, retaining128 neighbors. Only the small einops==0.8.1 dependency was installed; existing CPU torch2.4.0 is used. No TorchVision/Open3D/GPU package installation is needed for this specific forward path.

Protocol

Pin seed20261030 and two CPU threads. First run2048/1024/512/256/128 points. Only if that completes, run the already generated standard bridge with20480/10240/ 5120/2560/1280 points, same seed/thread count and code. Each process has a180s ceiling. If it times out or fails, retain the error; do not adjust weights, seed, model scores, image or matching rules to manufacture correspondence success.

Record source/driver/input hashes, random state hash, init/forward time, peak Linux RSS, progress hooks, all eight output shapes, CPU device/finiteness, and exact repeat-forward equality. The native test path chooses correspondences; no ground-truth fine coordinates or reference pose are supplied. The source copy and binary outputs remain under /workspace/work/cofii2p-cpu-probe-20261030/. The plan freezes the implementation before execution. No calibration fits, PnP accuracy scoring or real-data selection.

Even if successful, the official checkpoint, its terms/training/image provenance and numerical parity remain unresolved. A random-weight CPU forward is not a validated scientific reproduction or a successful calibration provider. It can remove an assumed GPU requirement for the exercised model graph, not the need for suitable learned weights.

Outcome

Frozen implementation 3b15f88a; both predeclared cases completed. See reduced result and standard result.

Synthetic input Initialization First forward Peak process RSS Predicted pairs Exact repeat
2048 points 5.40s 4.13s 735.4MiB 10 yes
20480 points 5.53s 10.36s 1901.6MiB (1.86GiB) 4 yes

Both processes used two CPU threads and torch2.4.0+cpu/einops0.8.1. Every one of the eight returned tensors was finite and on CPU. The seeded full model-state hash was identical across the two point counts. Native test-mode predicted pairs were retained without injecting correspondences or labels. Four random predicted pairs are an execution output, not evidence of correct or sufficient registration geometry. No PnP accuracy test or learned-checkpoint inference occurred.

Timing excludes geometry preparation, source copying and initialization. Peak RSS includes imports, initialization and repeat-forward verification. These are workload-specific observations, not latency/memory guarantees for learned weights or different pair counts. The plan's protocol hash identifies the pre-run document at the frozen commit; this section adds the subsequent outcome.

CPU feasibility is established for this exercised model graph and local geometry implementation. A GPU is no longer a prerequisite for continuing this route. The source modifications are not a verified CPU/GPU or Open3D numerical reproduction. Checkpoint-dependent behavior, native preprocessing parity, code/checkpoint terms and training provenance remain open. Next obtain official weights through an authorized accessible location and run a bounded CPU checkpoint smoke; do not ask for a GPU or restart MI/stereo tuning because no GPU is available.