Omp (#38)
* first version of openmp threading back end * adding openmp parallel sort implementation * OpenMP sort working * Support for units syntax within state block. * Add soma-less cable cell to test cells. Also: * Ensure intrinsic and passive properties properly set on test cells. * Change bulk resistivity default. * Align defaults with values used in most of the NEURON validation scripts. * Use consistent 100 Ω·m bulk resistivity across both NEURON test models and basic validation cells. * OpenMP back end working * Add Extrae+paraver support, needs to fix compilation warnings * Reorganize validation data generation * Move generation and data to top-level validation directory. * Make BUILD_VALIDATION_DATA and VALIDATION_DATA_DIR cache vars. * Add helper CMake functions for data generation. Note `validation/ref/numeric/foo.sh` is just a placeholder. * Bugfix: hh_soma.jl * Use consistent scaling for y[1] scalar voltage in hh_soma.jl * Also: add more reserved target names to CMakeLists.txt helper function. * Refactor convergence tests; add numeric soma ref. * Amend data directory path in validation tests. * Enmodulate `hh_soma.jl` * Add HH channel reference data generations script. * Switch `validate_soma.cpp` to numeric reference data. * Consolidate common code in `validate_ball_and_stick.cpp` * Add (nearly) Rallpack1 validation test (see below). * Gentle failure on absence of reference data in `validate_ball_and_stick.cpp` Can't yet override mechanism default parameter values, so the cable cell model added to `test_common_cells.hpp` lets the default stand; validation script will have to use the default membrane conductance rather than that given by Rallpack1. * Add Rallpack1 validation, plus bugfix, clean * Implement Rallpack1 validation test (with a workaround for inability to set membrane conductance). * Fix bug in L≠1 case in PassiveCable.jl (this may still be wrong). * Fix bug in peak delta computation in trace analysis when both traces have no local maxima. * Gentle failure on missing `numeric_soma.json` * Allow multiple `-s` selection operations for `tsplot`, acting disjunctively. * Remove errant test file. * file's cleanup * Remove tabs * Use correct routine in numeric_rallpack1.jl x0.3 * Configure-time test for julia * `math::infinity<>()` wrapper for infinity * Use name `i_e` for Stim current density * Use `math::infinity<>()` for infinite value * Adds unit tests for the STATE block. * Add "lib" to search prefixes for libtbb * Fix quoting error in library search. * Add "lib" to prefixes when system is "Linux". * Address deprecated use of 'symbol' warning. Julia 0.5 deprecates use of `symbol` instead of `Symbol`. This patch just substitutes the correct call. * Address deprecated use of 'symbol' warning. Julia 0.5 deprecates use of `symbol` instead of `Symbol`. This patch just substitutes the correct call. * Addresses PR comments. * Unit tests for math.hpp * Tests for `math::pi`, `math::lerp`, `math::area_frustrum` and `math::volume_frustrum` * Fix `math:pi<long double>()`. * Extend range, view functionality. * New `filter` view: lazily selects based on predicate. * Generic `front` and `back` for sequences. * New rangeutil STL wrappers `stable_sort_by`, `all_of`, `any_of`. * Consolidate common utility unit testing structures into `tests/unit/common.hpp` * Add `ball_and_squiggle` model; fix `ball_and_taper`. * Make `test_common_cells.hpp` and `ball_and_taper.py` agree. * Add `ball_and_squiggle` model that has a tapering undulating profile. * Address PR#46 review comments. * Add documentation of template parameters for `filter_iterator`. * Document use of `uninitalized<F>` for holding functional objects in `filter_iterator` and `transform_iterator` * Consolidate validation test code (issue #41) * Simplify trace analysis and reporting code in `trace_analysis.hpp` * Consolidate convergence test run procedures into new class `convergence_test_runner`. * New compartment info structure for FVM. * Make `algorithm::sum`, `algorithm::mean` more generic, allowing use with array types. * Add `div_compartment` compartment representation, that holds geometric information for each half of a compartment that will then be used in calculating control volumes. * Add three compartmentalisation schemes/policies that discretize a segment into `div_compartment` objects: * `div_compartment_by_ends` divides based only on the segment end points and radii. * `div_compartment_sampler` forms frusta by sampling the segment radius at each compartment boundary * `div_compartment_integrator` computes the compartment areas and volumes exactly by summing all frustra in the intersection of the segment and the compartmnet span. * Extrae linked at execution time * cleaning project * Complex compartments * Use divided compartments to determine FVM coefficients. * Pick correct control volume in FVM from sgement position (avoids off-by-half error.) * Add colour override functionality to tsplot: `--colour` option. * Add const accessor for cell soma. * Source formatting, comments in `math.hpp` * Fix `range_view`: was using incorrectly named type trait. * Add unit test for `range_view`. * Allow points of discontinuity to be omitted from L-infinity norm calculations. * Add `-d, --min-dt` option to `validate.exe` to control time step in validation convergence tests. * Add validation test: confirm divided compartment policy does not effect results on simple frustrum dendrites. * Change default max compartments on validation tests to 100 (ad hoc observed convergence limit at dt circa 0.001 ms; finder spatial division would required much finer dt.) * Make NEURON validation data generation scripts use CVODE by default, and with `secondorder=2` when non-zero `dt` is given. * Remove division policy type parameter. * Use only `div_compartment_integrator` for compartmentalization in `fvm_multicell`. The policy will later be moved to a backend policy class. * For now, disable validation tests that test different division policies (see above). * Tweak comments and remove redundant `using`, following comments on PR#54. * Minor twicks and corrections
Showing
- CMakeLists.txt 20 additions, 4 deletionsCMakeLists.txt
- scripts/extrae/extrae.xml 81 additions, 0 deletionsscripts/extrae/extrae.xml
- scripts/extrae/run_instrumented_omp.sh 38 additions, 0 deletionsscripts/extrae/run_instrumented_omp.sh
- scripts/extrae/run_instrumented_serial.sh 19 additions, 0 deletionsscripts/extrae/run_instrumented_serial.sh
- scripts/extrae/run_once.sh 15 additions, 0 deletionsscripts/extrae/run_once.sh
- src/connection.hpp 2 additions, 0 deletionssrc/connection.hpp
- src/threading/omp.hpp 163 additions, 0 deletionssrc/threading/omp.hpp
- src/threading/parallel_stable_sort.h 127 additions, 0 deletionssrc/threading/parallel_stable_sort.h
- src/threading/pss_common.h 110 additions, 0 deletionssrc/threading/pss_common.h
- src/threading/threading.hpp 2 additions, 0 deletionssrc/threading/threading.hpp
- tests/unit/test_spike_store.cpp 1 addition, 0 deletionstests/unit/test_spike_store.cpp
Please register or sign in to comment