#include void state_step_cuda(torch::Tensor v, torch::Tensor g, torch::Tensor refractory, torch::Tensor arrival, torch::Tensor spikes, torch::Tensor spike_counts, double g_decay, double alpha, double rest, double reset, double threshold, int64_t refractory_steps); void force_step_cuda(torch::Tensor v, torch::Tensor refractory, torch::Tensor spikes, torch::Tensor spike_counts, torch::Tensor targets, torch::Tensor forced, double reset, int64_t refractory_steps); void fill_edges_cuda(torch::Tensor indptr, torch::Tensor sources, torch::Tensor output_offsets, torch::Tensor output); void segmented_sum_cuda(torch::Tensor sorted_edge_ids, torch::Tensor segment_starts, torch::Tensor segment_targets, torch::Tensor weights, torch::Tensor destination); PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) { m.def("state_step", &state_step_cuda, "Canonical float32 LIF update (CUDA)"); m.def("force_step", &force_step_cuda, "Canonical external spike injection (CUDA)"); m.def("fill_edges", &fill_edges_cuda, "Source/edge ordered CSR expansion (CUDA)"); m.def("segmented_sum", &segmented_sum_cuda, "Fixed-order sequential segmented float32 sum (CUDA)"); }