Skip to content
Snippets Groups Projects
  1. Nov 27, 2018
    • Sam Yates's avatar
      Workaround for CMake 3.12 bug passing -thread to nvcc (#649) · af15856d
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      CMake wants to run a device link pass with nvcc despite
      there being no CUDA seperable compilation enabled anywhere,
      and then passes on -pthread to that unnecessary nvcc
      invocation when we use the Threads dependency. The latter,
      at least, is fixed in CMake 3.13.
      
      We used the prefer -pthread option for compatibility with
      our earlier build configuration; turning it off will
      hopefully have no consequence.
      
      We also enable device linking on the arbor library. Which
      is not needed, but if they are going to insist on doing it,
      it should be on the library rather than the executable.
      
      CMake then goes and does it on the executable anyway. Great.
      
      Fixes #645.
      af15856d
  2. Nov 21, 2018
  3. Nov 13, 2018
    • Felix Huber's avatar
      squashed merge for fine matrix solver · 0b7f88ca
      Felix Huber authored and Benjamin Cumming's avatar Benjamin Cumming committed
      0b7f88ca
    • Sam Yates's avatar
      Revert "Squashed merge for fine matrix solver (#640)" · 67b70a80
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      This reverts commit be2a8a9f.
      67b70a80
    • Benjamin Cumming's avatar
      Squashed merge for fine matrix solver (#640) · be2a8a9f
      Benjamin Cumming authored and Sam Yates's avatar Sam Yates committed
      Add a new Hines matrix solver implementation for the GPU that can solve a single tree in parallel with multiple threads. It replaces the interleaved solver, which used a single thread to solve each matrix.
      Branches with the same common root in the tree can be solved independently on each of the forward and backward solution passes. 
      
      * Add a matrix storage type, `arb::gpu::matrix_state_fine` that stores the branches of multiple trees for efficient backward and forward substitution.
      * Extend the `arb::tree` data structure to support operations for choosing a new root node and determining a root node which minimises the maximum distance between the root and any of the trees leaves. 
      * Implement code for rebalancing a set of matrix trees, a.k.a. a "forest" of trees.
      * Add CUDA kernels for efficiently performing matrix assembly and matrix solution steps.
      * Add CMake option `ARB_WITH_GPU_FINE_MATRIX` for toggling the new solver (default `on`).
      be2a8a9f
  4. Oct 16, 2018
  5. Oct 15, 2018
  6. Oct 12, 2018
  7. Oct 11, 2018
  8. Oct 10, 2018
    • Sam Yates's avatar
      Add installable CMake config for arbor (#616) · 7ade5c26
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Fixes #612.
      
      * Fix issues with permissions on directories created at install time (at least for CMake 3.11+).
      * Add CMake export guff to various targets and install an `arbor-config.cmake` for consumption by other CMake-based projects.
      7ade5c26
  9. Oct 04, 2018
    • Benjamin Cumming's avatar
      Extend ring (#611) · 488ece0c
      Benjamin Cumming authored
      Extend the ring benchmark to have an optional number of synapses attached to each cell, instead of a fixed count of one synapse per cell.
      This doesn't change the behavior of the model: only the first synapse is used for communication. The other synapses only effect is to
      increase the per-cell computational overheads, to more effectively mimic real world performance.
  10. Oct 03, 2018
  11. Oct 01, 2018
    • noraabiakar's avatar
      Add CMake options for V100 support (#608) · 2334ada8
      noraabiakar authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Add CMake options for V100 support. fixes #605
      2334ada8
    • noraabiakar's avatar
      Fix GPU installation (#607) · 9129b2eb
      noraabiakar authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Updates the install docs. Fixes #604
      9129b2eb
    • akuesters's avatar
      Integrating Mac OS X and clang compiler into Travis CI (#601) · e755a420
      akuesters authored and Benjamin Cumming's avatar Benjamin Cumming committed
      changes: 
      - .travis.yml:
        - added matrix for different osx's, since enumeration style only works for `env` and `compiler`
      
      - scripts/travis/build.sh:
        - changed getting compiler version from ``${CXX} -dumpversion`` to ``${CXX} --version | grep -m1 ""`` 
        - added `--oversubscribe` flag to `mpiexec` on Mac to allow more processes on a node than processing elements
        - added `--mca btl tcp,self` flag for Open MPI to use the "tcp" and "self" BTLs for transporting MPI messages on Mac
      e755a420
    • Sam Yates's avatar
      Fix double throw of captured exception in thread group. (#606) · d6aec81a
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Fixes #603.
      
      * Clear exception pointer in exception_state helper class after move of state.
      * Rename exception_state::get() method to reset().
      * Call std::terminate() if task_group is destroyed before tasks are collected with wait().
      * Do not attempt to collect tasks in destructor for task_group.
      * Do not attempt to rethrow exception in destructor for exception_state.
      * Add unit test to verify correct exception behaviour when a task_group is runs and waits on a series of tasks.
      * Add unit test for terminate behaviour as above.
      
      Code quality fix ups:
      * Remove unused warning variable warning in threading exception tests.
      * Address if-statement spacing in threading.hpp.
      * Use ARB_HAVE_MPI in execution_context.cpp instead of introducing a dependency on generated version header via feature macro ARB_MPI_ENABLED.
      d6aec81a
  12. Sep 26, 2018
    • noraabiakar's avatar
      Threading exceptions (#595) · b5662870
      noraabiakar authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Propagate exceptions generated in `task_group` tasks on different threads in the threading backend, so that they are thrown on the main thread on `task_group.wait()`.
      
      Add tests that verify that exceptions are propagated correctly.
      
      Fixes #310.
      b5662870
  13. Sep 19, 2018
  14. Sep 18, 2018
  15. Sep 17, 2018
    • noraabiakar's avatar
      Dry-run mode (#582) · a2b39382
      noraabiakar authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Dry-run mode: 
      * An implementation of distributed_context that is used to mimic the performance of running an MPI distributed simulation with n ranks.
      * Verifiable against an MPI run with the same parameters. 
      
      Implementation: 
      * Describe the model on a single domain (tile) and translate it to however many domains we want to mimic using arb::tile and arb::symmetric_recipe. This allows us to know the exact behavior of the entire system by only running the simulation on a single node.
      * Mimic communication between domains using arb::dry_run_context
      
      Example: 
      * dryrun in example/ is a verifiable example of using dry-run mode with mc_cells
      
      Other:
      * Documentation of dry-run mode 
      * unit test for dry_run_context 
      a2b39382
  16. Sep 07, 2018
  17. Sep 06, 2018
    • Sam Yates's avatar
      Clarify vectorization-enabled build errors. (#588) · 1ffccf2d
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Fixes #587.
      
      * Eliminate Clang warnings from GCC-tree-optimization bug work-around.
      * Error with static-assert if simd type is used with a missing simd abi.
      * Clarify install documentation regarding use of ARB_VECTORIZE with ARB_ARCH.
      1ffccf2d
  18. Sep 05, 2018
  19. Sep 01, 2018
  20. Aug 30, 2018
    • Benjamin Cumming's avatar
      Opaque Public Context (#576) · d637c8bc
      Benjamin Cumming authored
      Make the execution context presented to users an opaque handle, moving all implementation of the gpu, thread and distributed contexts into the back end.
      
      * move `execution_context` and `distributed_context` definitions to the back end
      * create `execution_context` handle called `context` in the public API
      * provide `make_context` helper functions that build different context configurations (default, user-specified local resources, with MPI)
      * update documentation for all parts of the public API that touch contexts
      * move `distributed_context` docs to the developer documentation (from the public API docs)
  21. Aug 29, 2018
  22. Aug 24, 2018
  23. Aug 22, 2018
  24. Aug 20, 2018
    • Sam Yates's avatar
      Global temperature for NMODL mechanisms. (#565) · fa0d7aef
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Global temperature for mechanisms.
      
      * Make 'celsius' magic in modcc: now an indexed variable.
      * Add a new temperature data source for indexed variables.
      * Add support to printers for indexed variables that reference a scalar.
      * Check that indexed variables aren't used in PROCEDURE blocks (this is a problem not just for 'celsius').
      * Modify built-in mod files to pass celsius as a parameter to rates() procedures.
      * Add global temperature to shared_state classes, and initialize through backend mechanism superclasses.
      * Add some infrastructure for unit-test only mechanisms.
      * Set modcc flags globally in top level CMakeLists.txt.
      * Add test mechanism/module for checking celsius setting.
      * Add unit test for multicore and gpu mechanism celsius setting.
      * Make common mechanism private field data access helper for unit tests.
      * Use helper in temperature, synapses tests.
      * Fix warning in `distribued_context.hpp` about errant semicolon.
      * Fix global scal...
      fa0d7aef
  25. Aug 06, 2018
    • Sam Yates's avatar
      Bugfix/build osx macports (#563) · 3bafa1b3
      Sam Yates authored
      Two MacPorts/gcc7 issues:
      
      std::uint64_t is unsigned long long on OS X, breaking an assumption about size_t in the distributed_context interface.
      Problems with missing errno defines in the standard library headers.
      With MacPorts gcc7, the installed c++config.h defines _GLIBCXX_HAVE_EOWNERDEAD and _GLIBCXX_HAVE_ENOTRECOVERABLE, but the corresponding errno defines are not provided by
      sys/errno.h unless __DARWIN_C_SOURCE, which takes its value from _POSIX_C_SOURCE if defined, is greater than or equal to 200809L. Technically a MacPorts configuration bug? but easily worked around.
      
      Use basic integral types for communication collectives interfaces.
      Define _POSIX_C_SOURCE to be 200809L for glob.cpp.
      Fixes #562.
      3bafa1b3