- Nov 28, 2022
-
-
Thorsten Hater authored
Switch XML parser to pugixml; one less runtime dependency and one less blocker to WASM via emscripten.
-
- Nov 23, 2022
-
-
Brent Huisman authored
required for making an emscripten build of the arbor python library * make ARB_MODCC functional again * move add_subdir * no modcc/CMakeLists.txt is needed also when external modcc is used. * review
-
- Oct 27, 2022
-
-
Thorsten Hater authored
Closes #1861 Closes #1783 - arbor-build-catalogue (a-b-c) does no longer need to be in a fixed location - nor do we statically fix the configuration for a-b-c - instead, we rely on `arbor.config` to read the relevant default values - each value can be overriden, if desired - added many more values to the configuration - gpu type and arch - paths and prefix - CXX - report default settings for better diagnosis - implement a fallback for prefix if that does not exist; in particular for the amazing skbuild. In essence you can now use a-b-c as a standalone tool, as long as you have a properly configured py-arbor. Example output after removing `_skbuild` ``` Warning: prefix '/Users/hater/src/arbor/_skbuild/macosx-11.0-x86_64-3.10/cmake-install' does not exist, falling back to '/Users/hater/src/arbor/.direnv/python-3.10.6'. usage: arbor-build-catalogue catalogue_name mod_source_dir Generate dynamic catalogue and build it into a shared object. positional arguments: name Catalogue name. modpfx Directory name where *.mod files live. options: --raw raw [raw ...] Advanced: Raw mechanisms as C++ files. Per <name> the files <name>.hpp, <name>_cpu.cpp (if CPU is enabled) must be present in the target directory and with GPU support also <name>_gpu.cpp and <name>_gpu.cu. -v, --verbose Verbose. -q, --quiet Less output. --cpu CPU Enable CPU support. --debug [path] Don't clean up the generated temp cpp code. Can be a target path for the generated code. --gpu gpu Enable GPU support --gpu-arch gpu_arch Enable GPU support; default=- --cxx cxx Use this C++ compiler; default=/usr/local/opt/llvm/bin/clang++. --prefix prefix Arbor's install prefix; default=/Users/hater/src/arbor/.direnv/python-3.10.6. --bin bin Look here for Arbor utils like modcc; relative to prefix, default=bin. --lib lib Look here for Arbor's CMake config; relative to prefix, default=lib. --data data Look here for Arbor supplementals like generate_catalogue; relative to prefix, default=lib -h, --help Display this help and exit. ```
-
- Oct 25, 2022
-
-
Thorsten Hater authored
- GCC: goes up to 9 from 8, needed by CUDA 11 - CUDA: goes up to 11 from 10 - Clang: 10 up from 8 Closes #1815
-
- Oct 19, 2022
-
-
boeschf authored
- Bump CI actions to latest (cache, checkout, cmake) - Bump mimimal compiler versions - Bump minimal test OS to Ubuntu 20.04 LTS - gtest as submodule (version 1.12.1) - fixes heap corruptions - update gtest macros, include paths Co-authored-by:
Thorsten Hater <24411438+thorstenhater@users.noreply.github.com>
-
- Oct 05, 2022
-
-
boeschf authored
Main changes - uncorrelated and independently distributed white noise generation for point and density mechanisms - enabled by extending nmodl dialect and adjusting modcc (WHITE_NOISE block, stochastic solver method) - SDEs are solved by Euler-Maruyama method (synapse collapsing disabled in this case) - CPU and GPU backends responsible for creating random numbers using random123 - simulation takes a seed value - bumped ABI due to addition of random numbers in ppack Incidental changes - builder pattern for simulation - pimpl idiom supported by util classes
-
- Sep 20, 2022
-
-
Thorsten Hater authored
* Add pybind11 version to config. * Add version check for PB11. * Bump CMake a tiny bit.
-
Thorsten Hater authored
This is prep for meson in addition to simplifying (ie reducing) the amount of scripting we have. In the long run, I'd like to remove `BuildModules.cmake` too, but this might be superseded by meson and this PR is self-contained. # Changes - `modcc` accepts now a list of NMODL files - likewise, `modcc` is now able to spit out a catalogue.cpp file - remove the `generate-catalogue` script, simplify a-b-c - remove some options from `modcc` we never use - No longer allow external modcc
-
- Aug 10, 2022
-
-
Thorsten Hater authored
- Add stacktraces to 1. arbor_exception (and all derived) as `where` 2. arbor_internal_error as `where` 3. arb_assert - Propagate stacktraces to Python exceptions derived from the above. - Expand dev/doc on debugging
-
- Jul 04, 2022
-
-
Brent Huisman authored
Move Python build to `pyproject.toml`, bump Python minver to 3.7, fix macos wheel generation (#1916) * Failing Macos Python wheel builds fixed. * Macos Python wheels now come with dual-arch (x86-64 and arm64) * Moved (nearly) all Python build instructions to `pyproject.toml` * Enables 'build isolation', and need to specify build-deps only once, no need for users or CI scripts to pre-install them. * Enables editable `pip` installs (`pip install -e ./arbor`) * Compatible with 'build frontends' `pip` and `build`. * Passing CMake options actually got shorter * Drop Python 3.6 support.
-
- Jun 16, 2022
-
-
Benjamin Cumming authored
-
- Jun 13, 2022
-
-
Thorsten Hater authored
-
- Jun 10, 2022
-
-
Thorsten Hater authored
# Changes - Bump ABI to v0.1.1 - Add `arb_mechanism` to bundle `type` and `interface`s - Adjust `generate_catalogue` and `build_catalogue` - Return `nullptr` for GPU interfaces if not enabled # Open Questions - How to tell CMake not to link against `libarbor.a` and only use headers? - ~~How to get around `#ifdef ARB_GPU_ENABLED`~~ Update: just embrace it. # Linked Issues Fixes #1834
-
- Mar 22, 2022
-
-
Thorsten Hater authored
-
- Mar 16, 2022
-
-
Thorsten Hater authored
-
- Feb 24, 2022
-
-
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
-
- Jan 24, 2022
-
-
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().
-
Nora Abi Akar authored
- Add support for profiling externally loaded mechanisms. - Move the profiler calls out of the generated C++ code into the `arb::mechanism` methods. - Remove the `--profile` flag from the modcc flags. - Replace `_` delimiter with `:` in profiler. - Replace `const char*` with `const std::string&` for profiler region representation. - Profiler may now contain empty regions that were registered but not profiled, so add some code to filer those out when generating final profile.
-
- Jan 21, 2022
-
-
Thorsten Hater authored
- Bump CMake to 3.18 for better CUDA support. - Clean-up our use of said support. - Remove old cruft and workarounds. - Maintenance in CI: enable MacOS 11; bump CMake versions to 3.18 / 3.22; bump bors CMake to 3.18 Fixes #1790
-
- Dec 03, 2021
-
-
Sebastian Schmitt authored
Add the lmorpho utility back to Arbor The original utility was removed because it was a maintenance burden with no users. Now users are requesting the feature, this PR adds the old code, and updates it to work with the new morphology description API.
-
- Nov 26, 2021
-
-
Benjamin Cumming authored
* add a test that tests that a catalogue built separately can be loaded via the Python interface * further simplification of dynamic library support * move all platform-specific code into the cpp implementation and out of header.
-
- Oct 12, 2021
-
-
Thorsten Hater authored
* Add platform abstraction for loading DLL/SOs. * Throw more informative exceptions when handling DLL/SOs. * More informative errors when dealing with dynamically loaded catalogues. * Translate `arb::file_not_found_error` to `FileNotFoundError` in Python.
-
- Jul 29, 2021
-
-
thorstenhater authored
Implements #1376. * Provide a common C linkage ABI for externally compiled mechanisms, for both CPU and GPU. * Remove mechanism type hierarchy (`concrete_mechanism` etc.), and move corresponding functionality to the back-end shared state objects. Mechanism catalogue is no longer indexed by type id. * Distinguish between SIMD optimal alignment and SIMD width with new `min_align` attribute. Mechanisms provide both pieces of information via ABI.
-
- Jul 02, 2021
-
-
Nora Abi Akar authored
The visibility of symbols in the python shared library is set to 'hidden'. However, examining the dynamic symbol table of the generated `.so` file revealed that all the symbols of the static arbor libraries are still visible. This causes some issues on the Mac M1. To resolve, all source files are now compiled with `-fvisibility=hidden`.
-
- Jun 23, 2021
-
-
Benjamin Cumming authored
- Add an optional CMake option `ARB_CXX_FLAGS_TARGET` for setting target-specific flags to use when compiling for the target architecture (not applied to compilation of modcc). - If `ARB_ARCH=="none"` CMake will not add architecture-specific `mtune/march/mcpu` flags - Remove `ARB_CXXOPT_ARCH` from the installed `arbor-config.cmake`, and replace with more general `ARB_CXX_FLAGS_TARGET`. - Update spack `package.py` to use this feature to pass custom flags. Fixes #1519 Fixes #1522 Replaces PR #1518
-
- Apr 29, 2021
-
-
thorstenhater authored
* Remove std::filesystem to workaround OSX features; use `std::string` in interfaces expecting a path.
-
- Mar 05, 2021
-
-
Brent Huisman authored
* Auto-generate binary Python wheels, triggered by git tags 'v*'. * Wheels are generated for Python versions 3.6-3.9, for Linux using the [PyPA manylinux-2014 image](https://github.com/pypa/manylinux) and MacOS using macos-latest (10.15 at time of writing). * The Action generates `sdist` for any other platforms. * The cibuildwheel action automatically prepares the wheels using [auditwheel](https://cibuildwheel.readthedocs.io/en/stable/options/#repair-wheel-command), which means bundling of external deps (e.g. libxml2 for NeuroML). * The output is all that's needed for publication of a new version to (Test)PyPI. * `setup.py` defaults `neuroml` to on. * A small change to `CMakeLists.txt` was required to build the wheels: based on this [Pybind hint](https://pybind11.readthedocs.io/en/stable/compiling.html#findpython-mode) `Development.Module`is now required, and not `Development` when CMake searches for Python. I confirm this change is needed to make Arbor build in the manylinux docker images, but I do not understand what the change implies, other than that we now don't link to `libpython`.
-
- Mar 03, 2021
-
-
thorstenhater authored
Force nvcc to use the c++ compiler used to compile the c++ code.
-
- Feb 19, 2021
-
-
thorstenhater authored
-
- Feb 05, 2021
-
-
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
-
- Feb 03, 2021
-
-
thorstenhater authored
First phase of dynamically loaded mechanism catalogues. - Add functionality to load and use catalogues from DSOs in Python and C++. - Add documentation and support scripts to build catalogues DSOs. - Re-factor CMakeLists.txt for mechanisms - Limitations - Needs (compatible, preferably identical) arbor sources when building catalogues - Can only work on MacOS and Linux (uses dlfnc)
-
- Jan 06, 2021
-
-
Sebastian Schmitt authored
* Add the ability to use json and pybind11 libraries installed on the system instead of the vesrsions of those libraries bundled as submodules in the Arbor repository * Turned on by default * Toggled using the new `ARB_USE_BUNDLED_LIBS` CMake flag * Update documentation for installation * Update CI and pip workflows to opt in to the bundled libraries
-
- Jan 05, 2021
-
-
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.
-
- Jan 04, 2021
-
-
Brent Huisman authored
Fix CMAKE to use PYTHON_EXECUTABLE that corresponds to the version of Python used to build the python module.
-
- Dec 17, 2020
-
-
Brent Huisman authored
* Docs: emphasised the option of having pip install a local copy of the Arbor source. * CMake: default Python library install path to `${PYTHON_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_path('platlib'))"`. Fixes #1100. * CMake: remove ARB_PYTHON_PREFIX option, added ARB_PYTHON_LIB_PATH option. We cannot know in general where in the prefix the packages are expected by Python.
-
- Nov 09, 2020
-
-
Sebastian Schmitt authored
-
- Nov 01, 2020
-
-
Nora Abi Akar authored
-
- Sep 25, 2020
-
-
Sam Yates authored
* Add CMake infrastructure for new `arbornml` library comprising Arbor's NeuroML2 (C++) support. * Implement NeuroML2 parsing and interpretation, using libxml2 for XML parsing. * Add associated documentation, unit tests. * Replace `arb::util::optional` with `std::optional` in stitch morphology interface. * Add optional prefix to `arb::label_dict` import. * Update CI to test arbornml, with associated workarounds for OS X targets. * Remove glob functionality from `sup`, as it is no longer needed (it was used for lmorpho) and it triggers yet another OS X issue. Fixes #1088.
-
- Sep 22, 2020
-
-
Benjamin Cumming authored
* Move label and s-expr parsing code and unit tests from Python to arbor C++ library. * Update `locset` and `region` constructors that take string arguments to parse strings as s-expressions or "quoted" labels. * Modify the input stream modifier used to parse asc files to use a lookup table for substitutions, renamed it transmogrifier. * Replace `hopefully` type implemented in python headers with an `arb::util::expected`. * Add `ARBDEV_COLOR` CMake option that forces gcc and clang to always output color output. * Allow arbitrary strings in labels in region and locset expressions. * Add `parse_region_expression` and `parse_locset_expression` functions alongside the existing `parse_label_expression` function for use when a region or locset is expected. These calls will promote a quoted string `"label"` to `(region "label")` or `(locset "label")` respectively. * Add user-defined string literals for labels so that the C++ interface can use `"soma"_lab` instead of awkward escaping `"\"soma\""`. * Simplify Python wrapper code.
-
- Sep 14, 2020
-
-
Benjamin Cumming authored
* Update CMake CXX version. * Make CUDA 10 a minimum requirement and remove CUDA 9 support code. * Set up g++ Travis tests to use g++ 8. * Explicitly set C++14 version for nvcc. * Properly split cuda compilation, including in unit tests. * Remove unnecessary modcc `SOLVE` warning. * Update pybind11 module to tag v2.5.0 * Replace `util::size` and `util::data` with `std::` equivalents.
-