Skip to content
Snippets Groups Projects
  1. Feb 24, 2022
    • boeschf's avatar
      export API (#1824) · 675fdbc9
      boeschf authored
      Exports all symbols so arbor can be compiled as set of shared libraries. 
      
      In order to export all symbols correctly, one macro per library and one global macro are added. The content of the macros is determined at configure time depending on build variant (static/shared), compiler, and platforms (linux, mac os) and goes into the library's include directory as `export.hpp` when installed (at build time it resides at cmake's temporary build directory). The per-library macro is named `ARB_LIBNAME_API` and goes in front of to-be-exported symbols. The global macro is `ARB_SYMBOL_VISIBLE`. 
      
      This PR adds the annotation in all of the places where it is required. Most of them are in the public headers (and corresponding sources) but some are also added in internal headers, which were required for the unit tests to link properly.
      
      Fixes #1752
  2. Nov 10, 2021
    • Sam Yates's avatar
      Simplify default proc_allocation generation. (#1725) · e0c13e16
      Sam Yates authored
      * Consolidate default_concurrency, default_gpu functionality into arborenv/default_env.hpp, .cpp.
      * Add new arborenv function `default_allocation()` that uses environment variables ARBENV_NUM_THREADS and ARBENV_GPU_ID to create an `arb::proc_allocation`, with a fallback to `thread_concurrency()`.
      * Use arborenv-specific exceptions instead of generic std::runtime_error etc.
      * Update examples, docs to suit.
      
      Fixes #988 (except for reworking all the unit tests!)
  3. Sep 25, 2020
    • Sam Yates's avatar
      Address c++17 TODO comments. (#1159) · 906dd478
      Sam Yates authored
      * Use structured bindings where noted (there are likely other opportunities in the code).
      * Use `if constexpr` to simplify some template-dispatched code.
      * Remove `arb::uitl::get`, as it is no longer required now that util::variant is replaced.
      * Add `_v` utility inline constexpr template values.
      
      Part of the C++17 migration task #1022.
  4. Feb 27, 2019
    • Benjamin Cumming's avatar
      Documentation: update install guide. (#699) · 49d87aba
      Benjamin Cumming authored
      Update the installation guide to reflect the latest supported tool,
      compiler and library versions.
      
      Remove the Python docs, because they documented features that have not
      been implemented yet. The Python docs can be added incrementally as
      features are implemented.
      
      Start work on oupdating the documenetation for hardware interfaces and
      domain decomposition.
  5. Jan 31, 2019
    • Sam Yates's avatar
      Split out 'arborenv' as an installable library from the sup library. (#679) · f4b2e034
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Make a new installed library `libarborenv.a` covering a subset of the `sup` library functionality, with corresponding installed CMake target `arbor::arborenv`.
      
      * Move NVML or CUDA 10 API decision for GPU UUID discovery to top level CMake.
      * Move affinity, concurrency, MPI init guard, and gpu detection and negotiation functionality out of `sup` and into new library `arborenv`.
      * Move `include/arbor` in project tree to `arbor/include/arbor` (for consistency across `sup`, `arbor`, and `arborenv` subdirectories.)
      * Wrangle more explicit library dependency adding CMake code into the installed `arbor-config.cmake`, to help mitigate [CMake issue #18614](https://gitlab.kitware.com/cmake/cmake/issues/18614).
      * Have `arborenv` code throw `std::runtime_exception` instead of `arb::arbor_error`. (We are still using `arb::mpi_error` though for a failure in `with_mpi`.)
      * Move `scope_exit` into the `arb::util` namespace.
      * Merge `affinity.hpp` into `concurrency.hpp`.
      * Rename `gpu.hpp` to `gpu_env.hpp` in `arborenv` includes.
      
      Fixes #647.
      f4b2e034
  6. Dec 05, 2018
    • Benjamin Cumming's avatar
      Refactor hardware detection to sup (#654) · 712070f1
      Benjamin Cumming authored and Sam Yates's avatar Sam Yates committed
      Refactoring that moves the logic for determining available concurrency and available GPUs from the core Arbor library to the sup library. This also constitutes work towards providing functionality for allocating GPUs to particular ranks when multiple GPUs are visible per rank.
      
      * Move core/thread estimation code to sup library.
      * Change default resource behaviour to use one thread and no GPU.
      * Provide an interface in the sup library for: acquiring a default GPU; for coordinating an allocation of GPUs across multiple MPI ranks.
      712070f1