our_knp/cats-dogs/acceleration-results/cpu-altai-multithread.patch
int 979aa90bb4 Add 2026-10-14 handoff materials, verify accelerated runs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:29:08 +03:00

53 lines
2 KiB
Diff

--- a/knp/backends/cpu/cpu-multi-threaded-backend/impl/backend.cpp
+++ b/knp/backends/cpu/cpu-multi-threaded-backend/impl/backend.cpp
@@ -32,6 +32,9 @@
#include <spdlog/spdlog.h>
#include <functional>
+#include <cstdlib>
+#include <cerrno>
+#include <stdexcept>
#include <unordered_map>
#include <vector>
@@ -53,10 +56,27 @@
}
+
+// Experiment-local factory configuration; the original backend is unchanged.
+static size_t configured_size(const char* name, size_t fallback, size_t maximum)
+{
+ const char* value = std::getenv(name);
+ if (!value || !*value) return fallback;
+ if (*value < '0' || *value > '9') throw std::invalid_argument(name);
+ char* end = nullptr;
+ errno = 0;
+ const auto parsed = std::strtoull(value, &end, 10);
+ if (errno || *end || !parsed || parsed > maximum) throw std::invalid_argument(name);
+ return static_cast<size_t>(parsed);
+}
+
std::shared_ptr<MultiThreadedCPUBackend> MultiThreadedCPUBackend::create()
{
SPDLOG_DEBUG("Creating multi-threaded CPU backend instance...");
- return std::make_shared<MultiThreadedCPUBackend>();
+ return std::make_shared<MultiThreadedCPUBackend>(
+ configured_size("KNP_CPU_THREADS", 2, 256),
+ configured_size("KNP_CPU_POPULATION_PART", 64, 1000000),
+ configured_size("KNP_CPU_PROJECTION_PART", 8192, 10000000));
}
--- a/knp/backends/cpu/cpu-multi-threaded-backend/include/knp/backends/cpu-multi-threaded/backend.h
+++ b/knp/backends/cpu/cpu-multi-threaded-backend/include/knp/backends/cpu-multi-threaded/backend.h
@@ -79,7 +79,8 @@
*/
using SupportedNeurons = boost::mp11::mp_list<
knp::neuron_traits::BLIFATNeuron, knp::neuron_traits::SynapticResourceSTDPBLIFATNeuron,
- knp::neuron_traits::LIFNeuron>;
+ knp::neuron_traits::LIFNeuron,
+ knp::neuron_traits::AltAILIF, knp::neuron_traits::SynapticResourceSTDPAltAILIFNeuron>;
/**
* @brief List of synapse types supported by the multi-threaded CPU backend.