- Jun 25, 2018
-
-
CMake and build refactoring * Use CUDA as first-class language (leading to CMake 3.9 minimum version requirement). * Use 'modern CMake' interface libraries for compiler options, include file and library dependency tracking. Interface library targets: * `arbor-deps`: compiler options and library requirements for the `libarbor.a` static library, as governed by configure-time options and environment. * `arbor-private-headers`: include path for non-installed headers, as required by unit tests and arbor itself. * `arbor-aux`: helper classes and utilities used across tests and examples. * `ext-json`, `ext-tclap`, `ext-tbb`, `ext-benchmark`, `ext-sphinx_rtd_theme`: externally maintained software that we include (directly or via submodule) in the `ext/` subdirectory. * Single static library `libarbor.a` includes all built-in modules and CUDA objects. * Simply configuration options: * `ARB_WITH_TRACE`, `ARB_AUTORUN_MODCC_ON_CHANGES` `ARB_SYSTEM_TYPE` removed. * External `modcc` is provided by `ARB_MODCC` configuration option; if provided `modcc` is still buildable, but is not included in the default target. * `ARB_PRIVATE_TBBLIB`, defaulting to `OFF`, instructs the build to make TBB from the included submodule. * Extend `ErrorTarget` functionality to provide a dummy target or an error target based on a condition. * Generate header version defines and library version variables based on git status and project version, via new script `include/git-source-id`. * All generated binaries now placed in `bin/` subdirectory at build. * Install targets installs: public headers (incomplete); static library; `modcc` tool; `lmorpho` executable; `html` documentation (examples, tests and validation data are currently not installed). * Executable targets have had the `.exe` suffix removed; unit tests are labelled `unit` (arbor unit tests), `unit-modcc` (modcc unit tests), `unit-local` (distributed tests with local context), `unit-mpi` (distributed tests with MPI context). * More graceful handling of configure-time detection of `nrniv`, Julia and required Julia modules for validation data generation. * Add `cmake/FindJulia.cmake`, `cmake/FindTBB.cmake` package finders, and adjust `cmake/FindUnwind.cmake` to use link library-style properties. * Adjust travis script to test `unit-local` and `unit-mpi` if appropriate. * Simply documentation `conf.py`. Source relocation and reorganization * All external project sources and files moved to `ext/`. * Source code refactoring to decouple library-using code from the configure-time definitions that govern arbor behaviour: removes conditional code in public headers that depends upon `ARB_WITH_X`-type definitions at compile time. Affected code is is in the public interfaces for MPI, the threading implementation, and the profiler. * Remove `util/debug.hpp`; split out functionality for pretty-printing from assertion handling. * Make FVM cell non-physical voltage check a run-time cell-group parameter. * Move spike double buffer implementation to `simulation.cpp`. * Make timer utility wrap POSIX `clock_gettime` independent of threading configuration. * Make `mpi_error` derive from `system_error` and follow C++11 `system_error` semantics. * `EXPECTS` macro replaced by `arb_assert` macro. * JSON dependency removed from `libarbor.a` and header files: moved to auxiliary library. * Publicly visible macros garner an `ARB_` prefix as required. * Move SWC test file to `test/unit` directory. * Work-in-progress splitting of public from private includes: as a convention not entirely adhered to as yet, private headers within arbor source are included with `""`, public headers with `<>`. Modcc interface changes * Expose via `--namespace` option the functionality that sets the namespace in generated code. * Use `--profile` option to add profiler hooks to generated code; uses public function interface directly rather than `PE/PL` macros in order to avoid public `PE` and `PL` defines.
-
- Nov 21, 2016
-
-
fixes #90 The c and cuda printer were not printing else branches in if else statements. * added logic for printing else branches * added if-else expressions to data/test.mod No unit tests were added because we don't currently have a unit testing framework for the output mechanisms.
-
- Oct 26, 2016
-
-
Vasileios Karakasis authored
-
- Oct 24, 2016
-
-
Sam Yates authored
* 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.
-
- Oct 22, 2016
-
-
Vasileios Karakasis authored
-
- Oct 11, 2016
-
-
Sam Yates authored
Validation of simulation results by comparing L-infinity distance and maximum peak displacement in voltage traces taken at mid-points and end-points of sections. Note that these tests will broadly _fail_ at this point. Reference data generation and visualization: * Use voltage traces as validation data from NEURON; refactor generation scripts. * Generate validation data as a dependency of `validation.exe`. * Store validation data in a `tsplot`-compatible format. * Extend `tsplot` to handle multiple time series per file, a non-time 'time' axis (see `-A` option), filtering of time series by meta data queries (see `-s` option). * Remove pre-generated spike-time validation data files. Core extensions: * Add a single-cell `singleton_recipe` recipe wrapper. * Allow cell descriptions to be cloned (explicitly) for use with this wrapper. * Add `simple_sampler` which maintains a trace of scalar observables as a vector of (time, value) pairs. * Allow cell groups to be exposed from `mode...
-
- Oct 07, 2016
-
-
Vasileios Karakasis authored
-
- Oct 04, 2016
-
-
Vasileios Karakasis authored
-
- Aug 05, 2016
-
-
Vasileios Karakasis authored
The resulting trees are not equivalent to the initial ones. All offending branches were split and their non-contiguous part was moved directly below the root.
-
- Jul 15, 2016
-
-
Sam Yates authored
* Clean up validation CMake * Use configure-time path to validation data by default * Checks in validation data * Bring validate_synapses up to date with current source API. * Allow -p option in validation test to point to validation data directory.
-
- Jul 03, 2016
-
-
Vasileios Karakasis authored
Whitespace-only lines are now treated correctly in SWC file parser. This automatically leads to a consistent and nice handling of old mac-style eol; they are just another whitespace (not newline). Refined the test cases a bit. Added support for mapping swc record types to nest::mc::segmentKind. This required the adjustment in some tests + the ball_and_stick file, since the dendrite type of swc record is type '3'. Before, everything except soma was added (hardcoded) as a dendrite. An swc_parse_error will be thrown in case of an impossible mapping. Also, no check is performed for inconsistencies of SWC record types along a branch; the type of the branch is assumed to be the type of the first record (compartment) in the branch. Finally, adapted to the coding style.
-
- May 25, 2016
-
-
Benjamin Cumming authored
-
- Apr 28, 2016
-
-
Benjamin Cumming authored
-
- Apr 01, 2016
-
-
Benjamin Cumming authored
-
- Jan 26, 2016
-
-
Benjamin Cumming authored
-
Benjamin Cumming authored
-