Skip to content
Snippets Groups Projects
  1. Jun 25, 2018
    • Sam Yates's avatar
      Feature/lib install target part i (#506) · ad1c78ab
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      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.
      ad1c78ab
  2. Nov 21, 2016
    • Ben Cumming's avatar
      fix modcc bug printing else branches (#93) · bc6bb3ba
      Ben Cumming authored and Sam Yates's avatar Sam Yates committed
      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.
      bc6bb3ba
  3. Oct 26, 2016
  4. Oct 24, 2016
    • Sam Yates's avatar
      Reorganize validation data generation · b263eb24
      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.
      b263eb24
  5. Oct 22, 2016
  6. Oct 11, 2016
    • Sam Yates's avatar
      Enhanced validation tests. · ee3b83c5
      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...
      ee3b83c5
  7. Oct 07, 2016
  8. Oct 04, 2016
  9. Aug 05, 2016
  10. Jul 15, 2016
    • Sam Yates's avatar
      Rescue validate_synapse.cpp, check in validation data · 16ec9bbf
      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.
      16ec9bbf
  11. Jul 03, 2016
    • Vasileios Karakasis's avatar
      Treat whitespace lines in SWC file parser. · 6bd1b2db
      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.
      6bd1b2db
  12. May 25, 2016
  13. Apr 28, 2016
  14. Apr 01, 2016
  15. Jan 26, 2016