Skip to content

Performance optimisations for the compartmental feature. (WIP) - #1319

Draft
LeanderEwert wants to merge 489 commits into
nest:mainfrom
LeanderEwert:origin/LeanderEwert_cm_optimized
Draft

Performance optimisations for the compartmental feature. (WIP)#1319
LeanderEwert wants to merge 489 commits into
nest:mainfrom
LeanderEwert:origin/LeanderEwert_cm_optimized

Conversation

@LeanderEwert

Copy link
Copy Markdown
Collaborator

Various performance optimisations for the cm feature, including streamlined data movement, a more SIMD-friendly variable layout, common sub-expression elimination across multiple expressions, and a more efficient synapse implementation.

… close to zero to skip calculation of step-function.

State of functionality: Almost fully working. Explicitly written ODEs for synapses not supported yet. (next up)
…ion changed to be done by decorators.

Concentration mechanism imlplementation and unification of mechanism info collection in progress.
…ion changed to be done by decorators.

Concentration mechanism imlplementation and unification of mechanism info collection in progress.
…erEwert

# Conflicts:
#	doc/fig/nestml_clip_art.png
#	doc/fig/synapse_conceptual.png
#	pynestml/codegeneration/resources_nest/point_neuron/directives/CommonPropertiesDictionaryReader.jinja2
#	pynestml/frontend/frontend_configuration.py
#	pynestml/frontend/pynestml_frontend.py
#	pynestml/generated/PyNestMLLexer.py
#	pynestml/generated/PyNestMLParser.interp
#	pynestml/generated/PyNestMLParser.py
#	pynestml/generated/PyNestMLParserVisitor.py
#	pynestml/utils/messages.py
#	pynestml/visitors/ast_symbol_table_visitor.py
#	tests/cocos_test.py
…stem. ToDo: Completing commenting and removing legacy code-parts and inline debugging code.
-Compile warnings fixed.
-v_comp nestml state excluded from becoming mechanism state.
-syns_info_enricher structure aligned to other mechanism enrichers.
-debugging code removed
-antlr4-python3-runtime set to 4.12 (from 4.10) in requirements.txt to remove missmatch warnings.
…erEwert

# Conflicts:
#	pynestml/generated/PyNestMLParser.interp
#	pynestml/generated/PyNestMLParser.py
#	pynestml/grammars/PyNestMLParser.g4
#	requirements.txt
#	tests/docstring_comment_test.py
…erEwert

# Conflicts:
#	pynestml/generated/PyNestMLParser.interp
#	pynestml/generated/PyNestMLParser.py
#	pynestml/grammars/PyNestMLParser.g4
#	requirements.txt
#	tests/docstring_comment_test.py
…/LeanderEwert

# Conflicts:
#	pynestml/generated/PyNestMLParser.interp
#	pynestml/generated/PyNestMLParser.py
#	pynestml/grammars/PyNestMLParser.g4
#	requirements.txt
#	tests/docstring_comment_test.py
…o neuron if parameter is not of type ASTNeuron
…ameters etc. where an index in the array range points to the states/parameters that used to be contained in its own object representing a mechanism in one specific compartment.
…p and the required modification of the datastructure.
…erEwert

# Conflicts:
#	pynestml/codegeneration/printers/nest_variable_printer.py
#	pynestml/codegeneration/printers/python_variable_printer.py
#	pynestml/codegeneration/resources_nest/point_neuron/directives/IfStatement.jinja2
#	pynestml/frontend/pynestml_frontend.py
#	pynestml/symbols/variable_symbol.py
#	pynestml/utils/ast_utils.py
#	pynestml/utils/messages.py
#	tests/cocos_test.py
@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

Branch1319/merge
Testbedubuntu-latest

🚨 1 Alert

IterationBenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Upper Boundary
(Limit %)
0tests/nest_continuous_benchmarking/test_nest_continuous_benchmarking.py::TestNESTContinuousBenchmarking::test_stdp_nn_synapseLatency
seconds (s)
📈 plot
🚷 threshold
🚨 alert (🔔)
3.99 s
(+18.12%)Baseline: 3.38 s
3.72 s
(107.38%)

Click to view all benchmark results
BenchmarkLatencyBenchmark Result
seconds (s)
(Result Δ%)
Upper Boundary
seconds (s)
(Limit %)
tests/nest_continuous_benchmarking/test_nest_continuous_benchmarking.py::TestNESTContinuousBenchmarking::test_stdp_nn_synapse📈 view plot
🚷 view threshold
🚨 view alert (🔔)
3.99 s
(+18.12%)Baseline: 3.38 s
3.72 s
(107.38%)

BenchmarkLatencyBenchmark Result
seconds (s)
(Result Δ%)
Upper Boundary
seconds (s)
(Limit %)
tests/nest_continuous_benchmarking/test_nest_continuous_benchmarking.py::TestNESTContinuousBenchmarking::test_stdp_nn_synapse📈 view plot
🚷 view threshold
🚨 view alert (🔔)
3.28 s
(-2.56%)Baseline: 3.37 s
3.71 s
(88.58%)

BenchmarkLatencyBenchmark Result
seconds (s)
(Result Δ%)
Upper Boundary
seconds (s)
(Limit %)
tests/nest_continuous_benchmarking/test_nest_continuous_benchmarking.py::TestNESTContinuousBenchmarking::test_stdp_nn_synapse📈 view plot
🚷 view threshold
🚨 view alert (🔔)
3.35 s
(-0.57%)Baseline: 3.37 s
3.71 s
(90.39%)

🐰 View full continuous benchmarking report in Bencher

@clinssen
clinssen marked this pull request as draft February 17, 2026 13:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants