Skip to content
Snippets Groups Projects
  1. 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
  2. Oct 16, 2018
  3. Oct 15, 2018
  4. Oct 12, 2018
  5. Oct 11, 2018
  6. 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
  7. 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.
      488ece0c
  8. Oct 03, 2018
  9. 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
  10. 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
  11. Sep 19, 2018
  12. Sep 18, 2018
  13. 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
  14. Sep 07, 2018
  15. 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
  16. Sep 05, 2018
  17. Sep 01, 2018
  18. 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)
      d637c8bc
  19. Aug 29, 2018
  20. Aug 24, 2018
  21. Aug 22, 2018
  22. 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
  23. 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
  24. Jul 31, 2018
    • Sam Yates's avatar
      Split multi_event_stream.cu implementation. (#556) · ac581c6b
      Sam Yates authored
      * Remove dependency on memory library and range utils from `multi_event_stream.cu` source.
      
      Fixes #545
      ac581c6b
    • noraabiakar's avatar
      Manage distributed_context using shared pointers (#555) · 0d6b365a
      noraabiakar authored and Sam Yates's avatar Sam Yates committed
      * Replace distributed_contest with shared_ptr<distributed_context> in execution_context and pass around the shared pointer instead of a raw pointer.
      * Fix construction of mpi_context
      * Remove num_threads() from arb and arb::threading. Modify mpi_context so it also returns a shared_ptr. proc_allocation is initialized from execution context to determine available resources.
      * Rename threading backend files. Delete useless files.
      * Pass execution_context by const reference or value.
      * Remove code duplication in thread_system constructors.
      0d6b365a