Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bring NMODL transpiler under NEURON project #3265

Draft
wants to merge 855 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
855 commits
Select commit Hold shift + click to select a range
e42ce3e
Update to latest hpc-coding-conventions (BlueBrain/nmodl#1198)
Mar 5, 2024
071dc07
Transition to `pyproject.toml` (BlueBrain/nmodl#1147)
JCGoran Mar 6, 2024
74c30e4
Add building wheels using cibuildwheel (BlueBrain/nmodl#1155)
JCGoran Mar 6, 2024
121bf58
Fix parsing directories (BlueBrain/nmodl#1203)
JCGoran Mar 7, 2024
e24c4ab
Improve CLI help message. (BlueBrain/nmodl#1205)
1uc Mar 8, 2024
d29cd06
Add `--version` flag to CLI (BlueBrain/nmodl#1210)
JCGoran Mar 11, 2024
46f4d68
Move `IndexRemover` to its own .hpp and .cpp file. (BlueBrain/nmodl#1…
1uc Mar 11, 2024
82a503d
Fail for invalid `<<` reaction equation. (BlueBrain/nmodl#1204)
1uc Mar 11, 2024
59c8e09
Enable formatting Python files. (BlueBrain/nmodl#1207)
1uc Mar 11, 2024
2fc51fb
Implement access to neuron global variables. (BlueBrain/nmodl#1192)
1uc Mar 11, 2024
e354d3e
Fix indexed COMPARTMENT block. (BlueBrain/nmodl#1209)
1uc Mar 12, 2024
2b3cb12
Cosmetic change. (BlueBrain/nmodl#1215)
1uc Mar 14, 2024
514113d
Update docstring of `SemanticAnalysisVisitor` (BlueBrain/nmodl#1220)
JCGoran Mar 18, 2024
c8d48a4
Make default log level "warning" (BlueBrain/nmodl#1222)
JCGoran Mar 18, 2024
ad66ca4
Add minor fixes to generate_references on MacOS (BlueBrain/nmodl#1228)
JCGoran Mar 25, 2024
b15b611
Fix current warnings (BlueBrain/nmodl#1230)
alkino Mar 26, 2024
0ec7f33
Unroll kinetic blocks (BlueBrain/nmodl#1214)
1uc Apr 5, 2024
e291895
Add dependency of `generate_references` on `nmodl`. (BlueBrain/nmodl#…
1uc Apr 5, 2024
cb5ad5d
Set conductances when using NONSPECIFIC_CURRENT (BlueBrain/nmodl#1218)
JCGoran Apr 8, 2024
da6f3fb
Localize kinetic reaction rates. (BlueBrain/nmodl#1232)
1uc Apr 9, 2024
7aa91ca
Check python compile-time vs runtime (BlueBrain/nmodl#1242)
alkino Apr 17, 2024
ba0bf9c
Fix dependency issues when included in NRN. (BlueBrain/nmodl#1243)
1uc Apr 18, 2024
dcfb6d8
Launch Python embedded interpreter only if using sympy (BlueBrain/nmo…
alkino Apr 18, 2024
06213b0
Fix array variables. (BlueBrain/nmodl#1233)
1uc Apr 18, 2024
3fc802d
Improvements for handling python bindings CMake option (BlueBrain/nmo…
pramodk Apr 23, 2024
bca91b1
Bug fix for NEURON wheel creation (BlueBrain/nmodl#1245)
pramodk Apr 25, 2024
b66198f
Update test for nonspecific current (BlueBrain/nmodl#1235)
JCGoran May 7, 2024
b1f2da5
Remove `print_device_method_annotation` (BlueBrain/nmodl#1249)
JCGoran May 7, 2024
00f3d8c
Remove unused variable in NEURON codegen (BlueBrain/nmodl#1252)
JCGoran May 7, 2024
945fc27
Fix missing variables when calling functions or procedures in INITIAL…
JCGoran May 7, 2024
8ab8033
Implement simplified expsyn. (BlueBrain/nmodl#1238)
1uc May 7, 2024
51161dc
Functioning hh.mod (BlueBrain/nmodl#1237)
JCGoran May 10, 2024
cadefe2
Implement `net_send`. (BlueBrain/nmodl#1239)
1uc May 13, 2024
529f703
Move common codegen code to parent class `CodegenCppVisitor` (BlueBra…
JCGoran May 13, 2024
57d562c
Rework references. (BlueBrain/nmodl#1254)
1uc May 14, 2024
c296508
Simulate spike running a section. (BlueBrain/nmodl#1261)
1uc May 14, 2024
034abb6
Tests for voltage dependency function/procedures. (BlueBrain/nmodl#1253)
1uc May 15, 2024
8629b11
Fix missing variables when calling a FUNCTION or PROCEDURE in BREAKPO…
JCGoran May 16, 2024
7b827aa
Bump to PyBind11 2.12 (BlueBrain/nmodl#1267)
alkino May 16, 2024
805f2df
Assign default value in PARAMETER block. (BlueBrain/nmodl#1262)
1uc May 16, 2024
832f8ff
Remove `virtual` keyword where it's not needed (BlueBrain/nmodl#1250)
JCGoran May 21, 2024
9bb7dc0
Fix bug with state named 'is'. (BlueBrain/nmodl#1263)
1uc May 22, 2024
d63b17c
Refactor `nmodl ... blame --line N`. (BlueBrain/nmodl#1265)
1uc May 22, 2024
acb94c6
Move POINT_PROCESS and TQITEM code. (BlueBrain/nmodl#1272)
1uc May 22, 2024
ca3f947
Fix ARTIFICIAL_CELL net_send. (BlueBrain/nmodl#1273)
1uc May 24, 2024
00a32f5
Fix `net_send` from NET_RECEIVE block. (BlueBrain/nmodl#1276)
1uc May 27, 2024
a24c6d0
Add `net_event`. (BlueBrain/nmodl#1275)
1uc May 27, 2024
d93bcbb
Implement `net_move`. (BlueBrain/nmodl#1277)
1uc May 27, 2024
04d90c4
Fix recursive FUNCTION calls (BlueBrain/nmodl#1278)
JCGoran May 27, 2024
4bb9251
Disallow PROCEDUREs using TABLEs containing the same var (BlueBrain/n…
JCGoran May 29, 2024
c57439d
Add `-DNMODL_MAX_ERRORS=3` (default: 1). (BlueBrain/nmodl#1282)
1uc May 29, 2024
c6a0d2c
Deduplicate `print_backend_info`. (BlueBrain/nmodl#1284)
1uc May 30, 2024
2fcc599
Make `generate_references.py` configurable. (BlueBrain/nmodl#1286)
1uc May 31, 2024
b49dd09
Implement GLOBALs. (BlueBrain/nmodl#1285)
1uc Jun 3, 2024
b60d841
Add TABLE statement for NEURON codegen (BlueBrain/nmodl#1247)
JCGoran Jun 3, 2024
e086d1d
Minor cleanup. (BlueBrain/nmodl#1281)
1uc Jun 3, 2024
766d275
Replace `-fmax-errors` with `-ferror-limit` on Clang (BlueBrain/nmodl…
JCGoran Jun 4, 2024
45e2582
Fix missing null-terminator. (BlueBrain/nmodl#1291)
1uc Jun 4, 2024
82f8ba6
Fix missing SUFFIX. (BlueBrain/nmodl#1293)
1uc Jun 4, 2024
7d723f9
Remove generation of INCLUDE file in the tests (BlueBrain/nmodl#1295)
pramodk Jun 4, 2024
9e2adea
Fix rendering of docs (BlueBrain/nmodl#1298)
JCGoran Jun 4, 2024
5ae44c3
Use `ParamVector` in codegen (BlueBrain/nmodl#1289)
JCGoran Jun 4, 2024
432037e
Cleanup 'usecases'. (BlueBrain/nmodl#1294)
1uc Jun 10, 2024
3f9438a
Micro-improve documentation. (BlueBrain/nmodl#1304)
1uc Jun 10, 2024
281d90a
Make `nmodl` independent of `nmodl`. (BlueBrain/nmodl#1305)
1uc Jun 10, 2024
73bcd42
Modernize NMODL -> Python layer. (BlueBrain/nmodl#1306)
1uc Jun 12, 2024
45b78c9
Consistently use `_lmc` and references. (BlueBrain/nmodl#1309)
1uc Jun 12, 2024
9deb54e
Fix thread_variables in functions and tables. (BlueBrain/nmodl#1310)
1uc Jun 12, 2024
04ab229
Lift shared code for KINETIC. (BlueBrain/nmodl#1312)
1uc Jun 12, 2024
0b3d6d5
Fix integration tests. (BlueBrain/nmodl#1313)
1uc Jun 12, 2024
06e84d3
Fix typo in pybind CMakeLists (BlueBrain/nmodl#1317)
JCGoran Jun 12, 2024
a32b6a9
Register `kinetic`. (BlueBrain/nmodl#1319)
1uc Jun 13, 2024
a9b184e
Detailed blame. (BlueBrain/nmodl#1320)
1uc Jun 13, 2024
900a9cc
Fix calls from NET_RECEIVE. (BlueBrain/nmodl#1311)
1uc Jun 13, 2024
31819ba
Implement top-level LOCAL variables. (BlueBrain/nmodl#1315)
1uc Jun 13, 2024
53b7a6b
Fix RANGE and FUNCTION/PROCEDURE name conflict (BlueBrain/nmodl#1318)
JCGoran Jun 13, 2024
98925d5
Add debug logging to parser (BlueBrain/nmodl#1229)
JCGoran Jun 17, 2024
e32604c
Document global variables (BlueBrain/nmodl#1321)
1uc Jun 17, 2024
e5b492e
Fix (NON)LINEAR block with explicit SOLVEFOR (BlueBrain/nmodl#1326)
JCGoran Jun 20, 2024
4f13f11
check_table_function got a new _globals parameter (BlueBrain/nmodl#1328)
alkino Jun 20, 2024
e0b64f8
Fix implicit argument handling (BlueBrain/nmodl#1325)
JCGoran Jun 27, 2024
d549a61
Fix docstring of `print_function_or_procedure` (BlueBrain/nmodl#1330)
JCGoran Jul 5, 2024
d7b7dbe
Include solvers to avoid include path dependency. (BlueBrain/nmodl#1329)
matz-e Jul 5, 2024
a812d1e
Implement `diam` and `area`. (BlueBrain/nmodl#1323)
1uc Jul 8, 2024
bf38cb0
Fix thread variables with Newton code. (BlueBrain/nmodl#1332)
1uc Jul 9, 2024
845cb70
Implement `wrote_conc`. (BlueBrain/nmodl#1334)
1uc Jul 11, 2024
2d3a10b
Implement printing for CONSTANT. (BlueBrain/nmodl#1339)
1uc Jul 12, 2024
3caf31f
Don't print `int*` range variables. (BlueBrain/nmodl#1340)
1uc Jul 12, 2024
3935a3d
Implement VALENCE. (BlueBrain/nmodl#1341)
1uc Jul 15, 2024
3c027a1
Fix bug in TABLE for POINT_PROCESS. (BlueBrain/nmodl#1342)
1uc Jul 15, 2024
36c036f
Fix FUNCTION, PROCEDURE with Newton. (BlueBrain/nmodl#1343)
1uc Jul 15, 2024
e0672d3
Conditionally print Newton boiler plate. (BlueBrain/nmodl#1345)
1uc Jul 15, 2024
672fa3c
Fix RANGE PARAMETER defaults. (BlueBrain/nmodl#1346)
1uc Jul 16, 2024
e344420
Remove unnecessary warning messages (BlueBrain/nmodl#1350)
pramodk Jul 16, 2024
de78b61
Remove usage of `unistd` from Flex (BlueBrain/nmodl#1348)
JCGoran Jul 16, 2024
9080396
Simplify internal code. (BlueBrain/nmodl#1347)
1uc Jul 17, 2024
3e76e58
Smaller changes for MSVC compatibility. (BlueBrain/nmodl#1355)
matz-e Jul 17, 2024
6dc117d
Implement CI to check for STL misuse (BlueBrain/nmodl#1358)
matz-e Jul 19, 2024
eeeacdd
Provide both end() iterators to std::mismatch to prevent seeking beyo…
matz-e Jul 22, 2024
5668567
Accept negative number for limits (BlueBrain/nmodl#1352)
alkino Jul 22, 2024
d4c87ec
Deduplicate integer magic code. (BlueBrain/nmodl#1362)
1uc Jul 22, 2024
16c9f1e
Fix `net_send` and `net_move` for ARTIFICIAL_CELLs. (BlueBrain/nmodl#…
1uc Jul 22, 2024
5e7152f
Simplify by using structured binding. (BlueBrain/nmodl#1361)
1uc Jul 22, 2024
cc50e52
Build with MSVC (BlueBrain/nmodl#1354)
matz-e Jul 22, 2024
373ce20
Formatting. (BlueBrain/nmodl#1368)
1uc Jul 23, 2024
a2b83cc
Use SymPy solver when using `derivimplicit` method with NEURON codege…
JCGoran Jul 26, 2024
a41c168
Downgrade warning to info. (BlueBrain/nmodl#1371)
1uc Jul 30, 2024
2264153
Use `info.top_verbatim_blocks`. (BlueBrain/nmodl#1372)
1uc Jul 30, 2024
7934678
Isolate all VERBATIM token renaming. (BlueBrain/nmodl#1373)
1uc Jul 30, 2024
6b3ea45
Add VERBATIM markers. (BlueBrain/nmodl#1374)
1uc Jul 30, 2024
62a7d0a
Print `add_nrn_has_net_event`. (BlueBrain/nmodl#1375)
1uc Jul 30, 2024
4013b42
Reduce comparator duplication. (BlueBrain/nmodl#1377)
1uc Jul 30, 2024
b85cc1a
Simplify `float_variable_name` (NEURON version). (BlueBrain/nmodl#1376)
1uc Jul 31, 2024
25507a6
Remove `print_backend_namespace_{start,stop}`. (BlueBrain/nmodl#1378)
1uc Jul 31, 2024
e24c304
Remove `print_namespace_{begin,end}`. (BlueBrain/nmodl#1379)
1uc Aug 5, 2024
0de3feb
Remove pointless check. (BlueBrain/nmodl#1382)
1uc Aug 5, 2024
91b17d4
Move `print_{function,procedure}` upwards. (BlueBrain/nmodl#1381)
1uc Aug 5, 2024
071e441
Refactor `print_namespace_{start,stop}.` (BlueBrain/nmodl#1380)
1uc Aug 7, 2024
ee69b6a
Remove unhelpful comment. (BlueBrain/nmodl#1385)
1uc Aug 9, 2024
0564211
Pass code-generator name to usecase scripts. (BlueBrain/nmodl#1386)
1uc Aug 9, 2024
94d381c
Initialize STATE variables. (BlueBrain/nmodl#1387)
1uc Aug 9, 2024
04fa81e
Assert side effects in KINETIC blocks. (BlueBrain/nmodl#1392)
1uc Aug 12, 2024
9ac8db5
Load 'morphology' symbol during registration (BlueBrain/nmodl#1393)
alkino Aug 12, 2024
5365975
Implement RANDOM for NEURON. (BlueBrain/nmodl#1367)
1uc Aug 12, 2024
60091f7
Throw an error when using `derivimplicit` with `PROCEDURE` block (Blu…
JCGoran Aug 12, 2024
537a5d5
Add a virtual destructor to ~Blame (BlueBrain/nmodl#1401)
alkino Aug 14, 2024
76f0a86
Remove state TODOs. (BlueBrain/nmodl#1397)
1uc Aug 14, 2024
5154362
Surround oneliners with `{}`. (BlueBrain/nmodl#1398)
1uc Aug 14, 2024
3bb801a
Deduplicate renaming of state vars (BlueBrain/nmodl#1400)
alkino Aug 14, 2024
393f663
Install pywrapper even as a submodule. (BlueBrain/nmodl#1337)
matz-e Aug 14, 2024
386afe1
Add toggling of `emit_cvode` flag for codegen (BlueBrain/nmodl#1384)
JCGoran Aug 16, 2024
730a7ab
Add CMake export infrastructure (BlueBrain/nmodl#1288)
matz-e Aug 21, 2024
5ea0f96
Remove `newton_diff_solver`. (BlueBrain/nmodl#1402)
1uc Aug 22, 2024
4896b03
Initialize _extcall_thread. (BlueBrain/nmodl#1408)
1uc Aug 23, 2024
1e4498d
Rename FUNCTION/PROCEDURE arguments. (BlueBrain/nmodl#1407)
1uc Aug 23, 2024
a15da66
Remove several bad tests. (BlueBrain/nmodl#1410)
1uc Aug 29, 2024
f0d9f64
Remove broken code. (BlueBrain/nmodl#1411)
1uc Aug 29, 2024
125bfdb
Refactor `codegen_global_variables`. (BlueBrain/nmodl#1412)
1uc Aug 29, 2024
428b8cf
Newton error propagation based convergence check. (BlueBrain/nmodl#1403)
1uc Aug 29, 2024
8d42bdd
Use aligned_alloc as we do in CoreNEURON too (BlueBrain/nmodl#933)
ohm314 Aug 29, 2024
5e54b50
Remove CodeCov. (BlueBrain/nmodl#1416)
1uc Aug 30, 2024
b4ba87a
Revert "Newton error propagation based convergence check. (BlueBrain/…
1uc Aug 30, 2024
5e8174c
Not vectorized MOD files don't have thread data. (BlueBrain/nmodl#1413)
1uc Sep 4, 2024
b6704c9
On failure `generate_references.py` save error message. (BlueBrain/nm…
1uc Sep 4, 2024
1cd5a7e
Get voltage via `prop->node`. (BlueBrain/nmodl#1414)
1uc Sep 9, 2024
99d567e
LINEAR requires `sympy --analytic` to work. (BlueBrain/nmodl#1422)
1uc Sep 9, 2024
dea2b3c
Prepare for fmt v11. (BlueBrain/nmodl#1423)
1uc Sep 10, 2024
4b616aa
Implement ELECTRODE_CURRENT. (BlueBrain/nmodl#1425)
1uc Sep 11, 2024
fd784b6
Implement CONSTRUCTOR/DESTRUCTOR. (BlueBrain/nmodl#1424)
1uc Sep 11, 2024
cff6c5c
Reapply "Newton error propagation based convergence check." (BlueBrai…
1uc Sep 13, 2024
4d67155
Remove pointless comment. (BlueBrain/nmodl#1429)
1uc Sep 17, 2024
4773509
Fix `nrn_ghk`. (BlueBrain/nmodl#1432)
1uc Sep 17, 2024
63edc51
Fiddle CONSTRUCTOR/DESTRUCTOR. (BlueBrain/nmodl#1431)
1uc Sep 17, 2024
96b5969
Implement EXTERNAL. (BlueBrain/nmodl#1430)
1uc Sep 18, 2024
19d490c
Extract NET_RECEIVE arguments and common code. (BlueBrain/nmodl#1436)
1uc Sep 19, 2024
28719da
Cosmetic changes to netcon related code. (BlueBrain/nmodl#1439)
1uc Sep 19, 2024
0d68dd5
Support `NET_RECEIVE{ INITIAL { ... }}`. (BlueBrain/nmodl#1437)
1uc Sep 19, 2024
dfdfd47
Print more information on failure. (BlueBrain/nmodl#1441)
1uc Sep 19, 2024
fce3ed4
Print tracebacks of Python exceptions. (BlueBrain/nmodl#1442)
1uc Sep 19, 2024
335800c
Add the missing `fornetcon_data` "integer" variable. (BlueBrain/nmodl…
1uc Sep 20, 2024
64dba27
Refactor statement splitting code. (BlueBrain/nmodl#1443)
1uc Sep 20, 2024
46b9ab9
Implement FOR_NETCONS. (BlueBrain/nmodl#1440)
1uc Sep 20, 2024
77f0507
Format MOD files. (BlueBrain/nmodl#1445)
1uc Sep 23, 2024
086b403
Minor cosmetic improvements. (BlueBrain/nmodl#1446)
1uc Sep 23, 2024
d442e74
Refactor `print_setdata_functions`. (BlueBrain/nmodl#1447)
1uc Sep 23, 2024
5c606f5
Rename `print_check_table_entrypoint`. (BlueBrain/nmodl#1448)
1uc Sep 23, 2024
7e8360f
Refactor `print_wrapper`. (BlueBrain/nmodl#1449)
1uc Sep 23, 2024
167a35d
Refactor registering HOC/Python entrypoints. (BlueBrain/nmodl#1451)
1uc Sep 23, 2024
ddfbd27
Allow `derivimplicit` to use finite differences. (BlueBrain/nmodl#1444)
1uc Sep 23, 2024
6f6f5e4
Extract global struct printing for FUNCTION_TABLE. (BlueBrain/nmodl#1…
1uc Sep 24, 2024
36c69ab
Lift FUNCTION_TABLE code. (BlueBrain/nmodl#1454)
1uc Sep 24, 2024
55188be
Use `print_function_table_call`. (BlueBrain/nmodl#1460)
1uc Sep 24, 2024
d91922b
Introduce `function_table_parameter`. (BlueBrain/nmodl#1459)
1uc Sep 24, 2024
cce4be5
Fix misleading comments. (BlueBrain/nmodl#1458)
1uc Sep 24, 2024
7284d94
Refactor registering callables. (BlueBrain/nmodl#1453)
1uc Sep 24, 2024
7f281b6
Refactor print_function_prototypes. (BlueBrain/nmodl#1452)
1uc Sep 24, 2024
a4377c6
Refactor declaring FUNCTION/PROCEDURES. (BlueBrain/nmodl#1456)
1uc Sep 24, 2024
3f6951a
Remove CircleCI stub. (BlueBrain/nmodl#1465)
1uc Sep 25, 2024
bc400a5
Implement FUNCTION_TABLE. (BlueBrain/nmodl#1457)
1uc Sep 25, 2024
3b7ad7b
Fix POINTER variables. (BlueBrain/nmodl#1462)
1uc Sep 25, 2024
623dad5
Remove `hoc_nrnpointerindex`. (BlueBrain/nmodl#1464)
1uc Sep 25, 2024
431058d
Implement `nrn_pointing`. (BlueBrain/nmodl#1463)
1uc Sep 25, 2024
5c66906
Remove comment. (BlueBrain/nmodl#1468)
1uc Sep 25, 2024
eafe8f1
Make a single argument ctor explicit. (BlueBrain/nmodl#1470)
1uc Sep 25, 2024
74edb35
Use `<nlohmann/json_fwd.hpp>`. (BlueBrain/nmodl#1472)
1uc Sep 30, 2024
a0a5dfc
Use forward declaration for nmodl lexer. (BlueBrain/nmodl#1473)
1uc Sep 30, 2024
07c90e2
Reduce usage of Pybind11 headers. (BlueBrain/nmodl#1474)
1uc Sep 30, 2024
45967e8
Avoid name collision `is_valid_construct`. (BlueBrain/nmodl#1475)
1uc Sep 30, 2024
8f7881e
Remove unused variable (BlueBrain/nmodl#1485)
JCGoran Oct 1, 2024
ef7368a
Remove useless template. (BlueBrain/nmodl#1477)
1uc Oct 1, 2024
aeaebfe
Use compiled version of spdlog. (BlueBrain/nmodl#1476)
1uc Oct 1, 2024
f864d34
Use finite differences in `differentiate2c` for implicit functions (B…
JCGoran Oct 3, 2024
09a2bac
Safely join paths in `main.cpp`. (BlueBrain/nmodl#1494)
1uc Oct 3, 2024
a94dfdf
Use target fmt::fmt instead of fmt (BlueBrain/nmodl#1495)
alkino Oct 3, 2024
2f77729
Remove empty visitor from `main.cpp`. (BlueBrain/nmodl#1496)
1uc Oct 3, 2024
cfd23ff
Improve COMPARTMENT names & documentation. (BlueBrain/nmodl#1498)
1uc Oct 3, 2024
9018110
Improve `LONGITUDINAL_DIFFUSION`. (BlueBrain/nmodl#1497)
1uc Oct 3, 2024
d36953e
Number files lexicographically. (BlueBrain/nmodl#1499)
1uc Oct 3, 2024
4b5f49e
Add support for diffing expressions with indexed vars in `differentia…
JCGoran Oct 7, 2024
0268450
Refactor printing setup code in entrypoints. (BlueBrain/nmodl#1502)
1uc Oct 8, 2024
10a9721
Improve comments. (BlueBrain/nmodl#1505)
1uc Oct 10, 2024
3e84a8c
Remove declaration of `remove_statements_from_block` method (BlueBrai…
JCGoran Oct 10, 2024
b2536e9
Improve naming of `LinEquation`. (BlueBrain/nmodl#1509)
1uc Oct 10, 2024
50159f6
Simplify `try_replace_tagged_statement`. (BlueBrain/nmodl#1510)
1uc Oct 10, 2024
e7c66f8
Implement LONGITUDINAL_DIFFUSION. (BlueBrain/nmodl#1504)
1uc Oct 10, 2024
1916a37
Refactor forcing `sympy --analytic`. (BlueBrain/nmodl#1511)
1uc Oct 14, 2024
575f707
Register `longitudinal_diffusion` usecase group (BlueBrain/nmodl#1515)
JCGoran Oct 14, 2024
2bf6916
NONLINEAR requires `sympy --analytic`. (BlueBrain/nmodl#1512)
1uc Oct 14, 2024
0d36af5
Eigen solvers in ARTIFICIAL_CELLS can't use voltage. (BlueBrain/nmodl…
1uc Oct 15, 2024
85fcd72
Add support for differentiating array variables (BlueBrain/nmodl#1517)
JCGoran Oct 15, 2024
3dc0ffc
Hide most functions/global variables. (BlueBrain/nmodl#1520)
1uc Oct 17, 2024
49eee16
Fix FUNCTION_TABLE with POINT_PROCESS/ARTIFICIAL_CELL. (BlueBrain/nmo…
1uc Oct 17, 2024
99f473d
Refactor printing FUNCTIONS. (BlueBrain/nmodl#1523)
1uc Oct 18, 2024
81c536d
SOLVE procedure. (BlueBrain/nmodl#1521)
1uc Oct 21, 2024
0de788d
Implement `stringutils::join_arguments`. (BlueBrain/nmodl#1524)
1uc Oct 21, 2024
91bce59
Ignore '.pkl' and '.png' in 'test/usecases'. (BlueBrain/nmodl#1527)
1uc Oct 21, 2024
e84b61c
Rename 'shared_global'. (BlueBrain/nmodl#1528)
1uc Oct 22, 2024
9fc020f
Avoid premature segfaults. (BlueBrain/nmodl#1529)
1uc Oct 22, 2024
08465a9
Refactor HOC/Python wrapper printing. (BlueBrain/nmodl#1522)
1uc Oct 22, 2024
7a68791
Support `SUFFIX nothing`. (BlueBrain/nmodl#1525)
1uc Oct 22, 2024
72c2465
Add `CvodeBlock` and `CvodeVisitor` (BlueBrain/nmodl#1467)
JCGoran Oct 28, 2024
3c23845
Prepare for deprecating `vectorize`. (BlueBrain/nmodl#1537)
1uc Oct 28, 2024
2865975
Adjust thread-variable promotion condition. (BlueBrain/nmodl#1534)
1uc Oct 28, 2024
2a2f7af
Don't have instance copies of POINTER. (BlueBrain/nmodl#1538)
1uc Oct 28, 2024
ac12364
Consider NONLINEAR vectorizable. (BlueBrain/nmodl#1533)
1uc Oct 28, 2024
a60b28d
Remove tests for not `vectorized` code. (BlueBrain/nmodl#1535)
1uc Oct 29, 2024
8a624d1
Consider LINEAR as vectorizeable. (BlueBrain/nmodl#1536)
1uc Oct 29, 2024
4fe0a8f
Handle voltage via instance specific copy. (BlueBrain/nmodl#1532)
1uc Oct 29, 2024
de92e70
Whitespace. (BlueBrain/nmodl#1541)
1uc Oct 29, 2024
0c46d4b
Move shared parallel hint code. (BlueBrain/nmodl#1542)
1uc Oct 29, 2024
0b95004
Lower printing of VERBATIM code. (BlueBrain/nmodl#1543)
1uc Oct 29, 2024
97d4615
Lift shared `print_top_verbatim_blocks` code. (BlueBrain/nmodl#1544)
1uc Oct 29, 2024
feec104
Refactor variable name of random variables. (BlueBrain/nmodl#1546)
1uc Oct 30, 2024
46eef5f
For CoreNEURON, DERIVATIVE doesn't need sympy. (BlueBrain/nmodl#1547)
1uc Oct 31, 2024
1d30052
Codegen for CVODE (BlueBrain/nmodl#1493)
JCGoran Oct 31, 2024
c6450b3
Rename `print_parallel_iteration_hint`. (BlueBrain/nmodl#1545)
1uc Nov 1, 2024
04bd752
Initial attempt at implementing VERBATIM. (BlueBrain/nmodl#1364)
1uc Nov 4, 2024
0215885
Remove superfluous Codegen ctor. (BlueBrain/nmodl#1548)
1uc Nov 6, 2024
e5f73d5
Extend `reindent_text(..., indent_level)`. (BlueBrain/nmodl#1549)
1uc Nov 6, 2024
51b2b90
Hide `CodegenCppVisitor::setup`. (BlueBrain/nmodl#1550)
1uc Nov 6, 2024
3c10184
Fix NMODL_GENERATED_SOURCES without Python. (BlueBrain/nmodl#1553)
1uc Nov 6, 2024
6ed454e
Fix typo (BlueBrain/nmodl#1552)
JCGoran Nov 6, 2024
c271fd3
Emit CVODE callback only on demand. (BlueBrain/nmodl#1551)
1uc Nov 7, 2024
9788b67
Fix race condition in CMake code. (BlueBrain/nmodl#1555)
1uc Nov 7, 2024
167c2ae
Fix CMake integration of NMODL generation. (BlueBrain/nmodl#1554)
1uc Nov 7, 2024
8618d49
Lower PROTECT related code. (BlueBrain/nmodl#1556)
1uc Nov 13, 2024
917a61b
Fix for finite differences. (BlueBrain/nmodl#1558)
1uc Nov 13, 2024
23679c3
Support PROTECT via _NMODLMUTEX{,UN}LOCK. (BlueBrain/nmodl#1557)
1uc Nov 14, 2024
cb23f0b
Bump min Python version from 3.8 to 3.9 (BlueBrain/nmodl#1559)
JCGoran Nov 19, 2024
ab66e5e
Merge remote-tracking branch 'nmodl/master'
pramodk Dec 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
369 changes: 369 additions & 0 deletions cmake/nmodl/CMakeLists.txt

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions cmake/nmodl/ClangTidyHelper.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
set(ENABLE_CLANG_TIDY
OFF
CACHE BOOL "Add clang-tidy automatically to builds")
if(ENABLE_CLANG_TIDY)
find_program(CLANG_TIDY_EXE NAMES "clang-tidy")
if(CLANG_TIDY_EXE)
message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}")
set(CLANG_TIDY_CHECKS
"-*,modernize-*,readability-*,performance-*,cppcoreguidelines-*,clang-analyzer-core*,google-*"
)
set(CMAKE_CXX_CLANG_TIDY
"${CLANG_TIDY_EXE};-checks=${CLANG_TIDY_CHECKS};-fix;-header-filter='${CMAKE_SOURCE_DIR}/*'"
CACHE STRING "" FORCE)
else()
message(AUTHOR_WARNING "clang-tidy not found!")
set(CMAKE_CXX_CLANG_TIDY
""
CACHE STRING "" FORCE) # delete it
endif()
endif()
54 changes: 54 additions & 0 deletions cmake/nmodl/CompilerHelper.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
if(CMAKE_CXX_COMPILER_ID MATCHES "PGI" OR CMAKE_CXX_COMPILER_ID MATCHES "NVHPC")
set(NMODL_PGI_COMPILER TRUE)

# CMake adds standard complaint PGI flag "-A" which breaks compilation of of spdlog and fmt
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION --c++14)

# Avoid errors related to "excessive recursion at instantiation of function ...", Eigen-related
# (in accelerated regions), e.g., transposeInPlace()
list(APPEND NMODL_EXTRA_CXX_FLAGS "-Wc,--pending_instantiations=0")

# ~~~
# PGI enables number of diagnostic messages by default classes which results into thousands of
# messages specifically for AST. Disable these verbose warnings for now.
# TODO : fix these warnings from template modification (#272)
# ~~~
if(${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 20.7)
set(NMODL_COMPILER_WARNING_SUPPRESSIONS --diag_suppress=1,82,111,115,177,186,611,997,1097,1625)
else()
# https://forums.developer.nvidia.com/t/many-all-diagnostic-numbers-increased-by-1-from-previous-values/146268/3
# changed the numbering scheme in newer versions. The following list is from a clean start 13
# August 2021. It would clearly be nicer to apply these suppressions only to relevant files.
# Examples of the suppressed warnings are given below.
# ~~~
# "ext/spdlog/include/spdlog/fmt/fmt.h", warning #1-D: last line of file ends without a newline
# "ext/fmt/include/fmt/format.h", warning #111-D: statement is unreachable
# "ext/fmt/include/fmt/format.h", warning #128-D: loop is not reachable
# "ext/spdlog/include/spdlog/fmt/bundled/format.h", warning #185-D: dynamic initialization in unreachable code
# "ext/json/json.hpp", warning #186-D: pointless comparison of unsigned integer with zero
# "src/ast/all.hpp", warning #998-D: function "..." is hidden by "..." -- virtual function override intended?
# "ext/spdlog/include/spdlog/fmt/bundled/format.h", warning #1098-D: unknown attribute "fallthrough"
# "ext/pybind11/include/pybind11/detail/common.h", warning #1626-D: routine is both "inline" and "noinline"
# "ext/spdlog/include/spdlog/fmt/bundled/core.h", warning #1676-D: unrecognized GCC pragma
# ~~~
# The following warnings do not seem to be suppressible with --diag_suppress:
# ~~~
# "src/codegen/codegen_cuda_visitor.cpp", NVC++-W-0277-Cannot inline function - data type mismatch
# "nvc++IkWUbMugiSgNH.s: Warning: stand-alone `data16' prefix
# ~~~
# The situation may be better once https://github.com/fmtlib/fmt/pull/2582 is included in a
# release.
set(NMODL_COMPILER_WARNING_SUPPRESSIONS --diag_suppress=1,111,128,185,186,998,1098,1626,1676)
# There are a few more warnings produced by the unit test infrastructure.
# ~~~
# "test/unit/visitor/constant_folder.cpp", warning #177-D: variable "..." was declared but never referenced
# ~~~
set(NMODL_TESTS_COMPILER_WARNING_SUPPRESSIONS --diag_suppress=177)
endif()
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(NMODL_COMPILER_MAX_ERRORS_FLAG -fmax-errors=${NMODL_MAX_ERRORS})
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(NMODL_COMPILER_MAX_ERRORS_FLAG -ferror-limit=${NMODL_MAX_ERRORS})
endif()
7 changes: 7 additions & 0 deletions cmake/nmodl/Config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/nmodlTargets.cmake")

set(nmodl_BINARY ${PACKAGE_PREFIX_DIR}/@nmodl_BINARY@)

check_required_components(nmodl)
12 changes: 12 additions & 0 deletions cmake/nmodl/ExternalProjectHelper.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
find_package(Git QUIET)

# initialize submodule with given path
function(initialize_submodule path)
if(NOT ${GIT_FOUND})
message(
FATAL_ERROR "git not found and ${path} sub-module not cloned (use git clone --recursive)")
endif()
message(STATUS "Sub-module : missing ${path}: running git submodule update --init")
execute_process(COMMAND git submodule update --init -- ${path}
WORKING_DIRECTORY ${NMODL_PROJECT_SOURCE_DIR})
endfunction()
17 changes: 17 additions & 0 deletions cmake/nmodl/FlexHelper.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Often older version of flex is available in /usr. Even we set PATH for newer flex, CMake will set
# FLEX_INCLUDE_DIRS to /usr/include. This will result in compilation errors. Hence we check for flex
# include directory for the corresponding FLEX_EXECUTABLE. If found, we add that first and then we
# include include path from CMake.

get_filename_component(FLEX_BIN_DIR ${FLEX_EXECUTABLE} DIRECTORY)

if(NOT FLEX_BIN_DIR MATCHES "/usr/bin")
if(NOT FLEX_INCLUDE_PATH)
get_filename_component(FLEX_INCLUDE_PATH ${FLEX_BIN_DIR} PATH)
set(FLEX_INCLUDE_PATH ${FLEX_INCLUDE_PATH}/include/)
endif()
if(EXISTS "${FLEX_INCLUDE_PATH}/FlexLexer.h")
message(STATUS " Adding Flex include path as : ${FLEX_INCLUDE_PATH}")
include_directories(${FLEX_INCLUDE_PATH})
endif()
endif()
49 changes: 49 additions & 0 deletions cmake/nmodl/GitRevision.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# For now use simple approach to get version information as git is always avaialble on the machine
# where we are building

find_package(Git)

if(GIT_FOUND)

# get last commit sha1
execute_process(
COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
WORKING_DIRECTORY ${NMODL_PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE NMODL_GIT_REVISION_SHA1
RESULT_VARIABLE NMODL_GIT_STATUS
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT NMODL_GIT_STATUS EQUAL 0)
set(NMODL_GIT_REVISION_SHA1 "git-error")
endif()

# get last commit date
execute_process(
COMMAND ${GIT_EXECUTABLE} show -s --format=%ci
WORKING_DIRECTORY ${NMODL_PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE NMODL_GIT_REVISION_DATE
RESULT_VARIABLE NMODL_GIT_STATUS
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT NMODL_GIT_STATUS EQUAL 0)
set(NMODL_GIT_REVISION_SHA1 "git-error")
endif()

# remove extra double quotes
string(REGEX REPLACE "\"" "" NMODL_GIT_REVISION_DATE "${NMODL_GIT_REVISION_DATE}")
set(NMODL_GIT_REVISION "${NMODL_GIT_REVISION_SHA1} ${NMODL_GIT_REVISION_DATE}")

# get the last version tag from git
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --abbrev=0 --tags
WORKING_DIRECTORY ${NMODL_PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE NMODL_GIT_LAST_TAG
RESULT_VARIABLE NMODL_GIT_STATUS
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT NMODL_GIT_STATUS EQUAL 0)
# Must be a valid version from CMake's perspective.
set(NMODL_GIT_LAST_TAG "0.0")
endif()
else()
set(NMODL_GIT_REVISION "unknown")
# Must be a valid version from CMake's perspective.
set(NMODL_GIT_LAST_TAG "0.0")
endif()
30 changes: 30 additions & 0 deletions cmake/nmodl/PythonLinkHelper.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# =============================================================================
# Support for building NMODL without python library
# =============================================================================
# ~~~
# When NMODL is built under environment (e.g. manylinux) without python-dev
# package i.e. libpython.so, we have to build extension and binaries by
# ignoring undefned symbols. The python library will be loaded later on target
# system.
# ~~~

# use same variable name as NEURON as it won't be user option
set(LINK_AGAINST_PYTHON
TRUE
CACHE BOOL "Disable linking to python library")

mark_as_advanced(LINK_AGAINST_PYTHON)

# Flags for ignoring undefined symbols for wheel
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(UNDEFINED_SYMBOLS_IGNORE_FLAG "-Wl,-undefined,dynamic_lookup")
else()
set(UNDEFINED_SYMBOLS_IGNORE_FLAG "-Wl,--unresolved-symbols=ignore-all")
endif()

if(NOT LINK_AGAINST_PYTHON)
string(APPEND CMAKE_EXE_LINKER_FLAGS " ${UNDEFINED_SYMBOLS_IGNORE_FLAG}")
set(NMODL_WRAPPER_LIBS pyembed dl)
else()
set(NMODL_WRAPPER_LIBS pyembed pywrapper dl)
endif()
25 changes: 25 additions & 0 deletions cmake/nmodl/RpathHelper.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright 2023 Blue Brain Project, EPFL. See the top-level LICENSE file for details.
#
# SPDX-License-Identifier: Apache-2.0

# =============================================================================
# Set full RPATHs in build-tree, also set RPATHs in install for non-system libs
# =============================================================================

# use, i.e. don't skip the full RPATH for the build tree
set(CMAKE_SKIP_BUILD_RPATH FALSE)

# when building, don't use the install RPATH already (but later on when installing)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)

set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")

# add the automatically determined parts of the RPATH which point to directories outside the build
# tree to the install RPATH
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

# the RPATH to be used when installing, but only if it's not a system directory
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
if("${isSystemDir}" STREQUAL "-1")
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
endif("${isSystemDir}" STREQUAL "-1")
1 change: 1 addition & 0 deletions cmake/nmodl/hpc-coding-conventions
Submodule hpc-coding-conventions added at f8f8d6
Loading
Loading