Skip to content
Snippets Groups Projects
  1. Jun 16, 2022
  2. Jan 24, 2022
    • Thorsten Hater's avatar
      More robust build-catalogue (#1784) · d0dc6bd7
      Thorsten Hater authored
      - build-catalogue
        - now installed by pip
        - enable GPU-backends
        - isolate from being installed in a non-default dir
        - rename to arbor-build-catalogue
        - allow hand-written C++ mechanisms to be linked in the same catalogue.
      - CMake
        - enable PIC on arbor always to allow linking to shared objects
        - use relative paths when configuring a-b-c, to make relocation less of a problem
      - Python
          - ensure a-b-c is installed by pip, along with headers and libarbor.a
          - throw errors if tools (cmake scripts, arbor package, modcc) missing
          - transition setup.py setuptools -> skbuild.
      - Wheels
          - Add NML2 support to wheels
          - scripts/build-wheels.sh builds wheels, in principle valid for submission to PyPI, on your own hardware. This should be kept in sync with .github/workflows/ciwheel.yml
          - scripts/patchwheel.py corrects the rpath in the libraries in the wheels, working around a bad interplay between auditwheel and skbuild, see pypa/auditwheel#363
          - Python Wheels are tested as part of the Github Action 
          - Add nml and bundled status to config().
      d0dc6bd7
  3. Oct 07, 2021
  4. Sep 20, 2021
    • Robin De Schepper's avatar
      Fixed MRO and code duplication in `setup.py` (#1672) · f13f786a
      Robin De Schepper authored
      The duplication arose from slightly more complicated composition than usual but could be resolved by proper MRO, it took me a few passes from its original form as well before I figured out the situation is not as complicated as it seems.
      
      `super()` is equal to `super(cls, self)` where `cls` is obtained from the current function's class scope. If arg 2  is an object it will start an MRO search of the object, but skipping classes before the 1st arg type is encountered. In our case with the following base classes: `(_command_template, base_command_class)` this means we can define our base logic in `_command_template` and use `super()` calls there to traverse the MRO in `(base_command_class,)`, so by simply defining `class install_command(_command_template, install)` and `bdist_wheel_command(_command_template, bdist_wheel)` our MRO issue is solved and the duplication removed.
      f13f786a
  5. Jun 23, 2021
  6. May 26, 2021
  7. Mar 05, 2021
  8. Feb 18, 2021
  9. Feb 09, 2021
  10. Feb 05, 2021
    • Nora Abi Akar's avatar
      Move neuroml handling to arbor-io and wrap for pyarb (#1327) · 4029d06b
      Nora Abi Akar authored
      * Move contents of `arbornml` to to `arborio` 
      * `arborio` will be built with NeuroML2 morphology support if `ARB_CMAKE_NEUROML` is set. 
      * Wrap `arborio::neuroml` and `arborio::morphology_data` for pyarb.
      * Add documentation.
      * add `neuroml` flag to `setup.py`
      
      Fixes #1256
      Fixes #1234
      4029d06b
  11. Jan 07, 2021
  12. Jan 06, 2021
  13. Jan 05, 2021
    • Benjamin Cumming's avatar
      Remove dependence of docs on the Python module (#1293) · d326f2ea
      Benjamin Cumming authored
      Revert a change introduced in #1282 that required the python module for arbor to build the documentation.
      
      This breaks the readthedocs build, where arbor is not available.
      
      * Remove arbor dependence from `doc/conf.py`, reverting to the original "out of core" approach
      * Fix other recently introduced issues that lead to CMake errors when configuring the documentation
        when the Python target is not configured.
        * The CMake variable `PYTHON_EXECUTABLE` wasn't set, but was required to make calls to the
           Python interpreter.
        * Instead of relying on pybind11 to find Python, explicitly detect it using `find_package(Python3 ...)`
        * Make Python3 a hard requirement when building the Python wrapper
        * And a soft requirement otherwise, that will fail only when the docs are built.
      d326f2ea
  14. Oct 15, 2020
  15. Apr 15, 2020
    • Nora Abi Akar's avatar
      Compile arbor for AMD and Nvidia GPUs using clang (#1007) · 90a1e6d7
      Nora Abi Akar authored
      - Add option to compile Arbor for HIP/CUDA backend using Clang. 
      - Add new CMake option `ARB_GPU_COMPILE_TYPE` to distinguish between three possible gpu platforms/builds: `cuda-nvcc`; `cuda-clang`; `hip-clang`
      - Add gpu wrapper functions in `arbor/backends/gpu/gpu_api.hpp` and `arborenv/gpu_api.hpp` which call HIP/CUDA functions depending on the platform
      - Rename functions and files: cuda -> gpu
      - Add downgraded warp primitives for HIP
      - Implement `uuid` workaround for HIP
      - Set correct alignment and warp size for AMD gpus
      - Update installation guide and docs.
      - Update pip/setuptools to support new gpu targets
      
      Fixes #833
      90a1e6d7
  16. Apr 09, 2020
    • Benjamin Cumming's avatar
      Fix setuptools to work with older Pip (#1010) · 1338599a
      Benjamin Cumming authored
      Work around issue caused by some versions of pip skipping the `install` stage when no additional command line args are passed via `--install-option`.
      
      Keep settings that can be modified via install option in a singleton that initializes them to their default.
      1338599a
  17. Apr 06, 2020
    • Benjamin Cumming's avatar
      Finalize support for PyPi package (#1002) · 04705503
      Benjamin Cumming authored
      * add MANIFEST file that describes all paths required in source distribution so that pip can compile Arbor.
      * fixes to `setup.py` to help it work across supported Python versions.
      
      Tested with:
      * setup tools and pip
      * python 3.7 and 3.8
      * pip 19 and pip 20
      * Linux and OS X
      04705503
  18. Feb 28, 2020
    • Benjamin Cumming's avatar
      pip / setuptools support (#977) · 45885c22
      Benjamin Cumming authored
      Add a `setup.py` for installing Arbor directly with pip/setuptools.
      
      Implement a setuptools extension for CMake in `setup.py`. To be honest, I don't understand entirely how it works, but setuptools is obtuse enough that I don't feel at all guilty about this.
      
      Define additional flags for optionally enabling GPUs, MPI, Vectorization and micro-architecture targets, for more adventurous users.
      
      The documentation is updated with a "howto pip" for more casual users who don't want anything to do with CMake.
      
      Fixes #958 .
      45885c22