add network benchmark
[sddekit.git] / TODO.md
blobb39a4e01cac912f2ec6117519d94e2c392473aa7
1 # todo
3 report issues here by pull request.
5 ## immediate
7 x reorg src/ include/ test/
8 x rework interpretation of c in/out
9 x add restrict everywhere
10 x network sys (connectivity, heterogeneous model sets & couplings)
11 x out fn spatio temporal filtering, plain file binary/ascii, in-mem buffer
12 x (REJECTED) models loop over nx as appropriate (too complicated)
13 x model knows its index within overall system (for e.g. spatial parameters)
15 - tvb models
16 - bindings Java/R/Py/MATLAB
17 - impl Jf Jg Jc (they are placeholders for now), scheme (taylor o(2) / llmult), tests (sparse jac)
18 - provide finite diff scheme
19 - general temporal filter
21 ## verification & validation
23 stability, convergence, memory, speed, etc. we should generate a table
24 with rows per system, cols per method, and fill in statistics
26 x exact history test from TVB
27 - cover history with more difficult cases (double updates, etc)
28 - implement a few favorite sys (gen2Dosc, epileptor, jansenrit)
29 - e.g. convergence test systems from Biscay et al
30 - LL DDE tests from Jimenez  2006
31 - test problems from Kuechler Platen 2000 references (page 1)
32 - convert test collector to makefile
33 - lorenz chaos, test lyapunov expo 
34 - test main --test-name --test --bench (if whole suite gets too slow)
35 - drift & diffusion integrals can be handled independently?
37 ## opt
39 - eval randn only for nnz g? test w/ benchmark
40 - solv deleg common cases to dedicated code path (if profiling says it make sense!)
41 - allow specializations to SDE, ignoring delays, idem for DDE, ignore g
42 - sort net.M to evaluate models block-wise 
43 - specialize out sfilt handle differet nfilt for x & c
44 - specialize hist for integer delay case (use gist impl)
45 - hist linear interp, cache lookup vector between time steps
47 ## software engineering
49 - move this todo to jira
50 x const correctness (not really a thing in c)
51 - move to cmake (cython: github.com/thewtex/cython-cmake-example)
52 - convert makefile to premake / cmake, adhoc stuff to python script
53 - use py/matlab/java test frameworks over bindings
54 - consistently memcpy inputs during init to make easier bindings
55   to dynamic langs which may dealloc param arrays (free after of course).
56 - error handler system like GSL
57 - test malloc fails a la http://stackoverflow.com/questions/3868716
58 - add lint checks to lint.sh (e.g. all allocations use MALLOCHECK)
59 - hide structs into opaque pointers, impl get/set methods
60 x doxygen
61 - coverage
62 - profiling / benchmarks
63 - {cache, call}grind
64 - test gcc profile guided optimizations?
65 - emscripten for web js page (llvm dragonegg for fortran code)
67 - mingw/vim not satisfactory on windows
69 ## ocl
71 - #include existing math into cl kernels
73 ## cli
75 - e.g. ./sk --jr --emcolor --tf 1e3 --conn cocomac.h5
76 - separate config, needs hdf5 etc