53 lines
2 KiB
Diff
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.
|