"""Load physarum natively on hosts without a published variant (e.g. a Pi). JIT-builds the local source with `torch.utils.cpp_extension` and exposes the identical `physarum` module API. import load_local physarum = load_local.load() sim = physarum.Physarum(width=1024, height=1024, agents=200000) """ import os import sys import types _cached = None def load(verbose=False): global _cached if _cached is not None: return _cached from torch.utils.cpp_extension import load as _jit root = os.path.dirname(os.path.abspath(__file__)) ext = _jit(name="physarum_ext", sources=[os.path.join(root, "local_bind.cpp"), os.path.join(root, "physarum_csrc", "physarum_cpu.cpp"), os.path.join(root, "physarum_csrc", "flow_cpu.cpp")], extra_cflags=["-O3"], verbose=verbose) ops_mod = types.ModuleType("physarum._ops") ops_mod.ops = type("_Ops", (), {"physarum_step": staticmethod(ext.physarum_step), "flow_cg": staticmethod(ext.flow_cg)})() sys.modules["physarum._ops"] = ops_mod sys.path.insert(0, os.path.join(root, "torch-ext")) import physarum _cached = physarum return physarum