Skip to main content

CUDA Batch Integration Engine - for doing a lot at once.

Project description

CuBIE

CUDA batch integration engine for python

docs CUDA tests Python Tests codecov PyPI - Version] test build

A batch integration system for systems of ODEs and SDEs, for when elegant solutions fail and you would like to simulate 1,000,000 systems, fast. This package was designed to simulate a large electrophysiological model as part of a likelihood-free inference method (eventually, package [cubism]), but the machinery is domain-agnostic.

While in early development, using this library as a way to experiment with and learn about some better software practice than I have used in past, including testing, CI/CD, and other helpful tactics I stumble upon. As such, there will be some clunky bits.

The interface is not yet stable. As of v0.0.3, the symbolic interface for creating problems is up and running, and batch solves can be performed using Euler's method only, with a slightly clumsy API and some disorganised documentation.

Roadmap:

-v0.0.4: Implicit integration methods.

  • Currently in development: Matrix-free solvers
  • Next up:
    • Adaptive time-stepping loops and abstraction of the integrator loop base class.
    • Backward Euler method
    • Rosenbrock methods
    • Radau methods
    • Runge-Kutta methods
  • v0.0.5: API improvements. This version should be stable enough for use in research - I will be using it in mine.
  • v0.1.0: Documentation to match the API, organised in the sane way that a robot does not.

I'm completing this project to use it to finish my PhD, so I've got a pretty solid driver to get to v0.0.5 as fast as my little fingers can type. I am motivated to get v0.1.0 out soon after to see if there is interest in this tool from the wider community.

Documentation:

https://ccam80.github.io/cubie/

Installation:

pip install cubie

System Requirements:

  • Python 3.8 or later
  • CUDA Toolkit 12.9 or later
  • NVIDIA GPU with compute capability 6.0 or higher (i.e. GTX10-series or newer)

Contributing:

Pull requests are very, very welcome! Please open an issue if you would like to discuss a feature or bug before doing a bunch of work on it.

Project Goals:

  • Make an engine and interface for batch integration that is close enough to MATLAB or SciPy that a Python beginner can get integrating with the documentation alone in an hour or two. This also means staying Windows-compatible.
  • Perform integrations of 10 or more parallel systems faster than MATLAB or SciPy can
  • Enable extraction of summary variables only (rather than saving time-domain outputs) to facilitate use in algorithms like likelihood-free inference.
  • Be extensible enough that users can add their own systems and algorithms without needing to go near the core machinery.
  • Don't be greedy - allow the user to control VRAM usage so that cubie can run alongside other applications.

Non-Goals:

  • Have the full set of integration algorithms that SciPy and MATLAB have. The full set of known and trusted algorithms is long, and it includes many wrappers for old Fortran libraries that the Numba compiler can't touch. If a problem requires a specific algorithm, we can add it as a feature request, but we won't set out to implement them all.
  • Have a GUI. MATLABs toolboxes are excellent, but from previous projects (specifically CuNODE, the precursor to cubie), GUI development becomes all-consuming and distracts from the purpose of the project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cubie-0.0.3.tar.gz (133.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cubie-0.0.3-py3-none-any.whl (160.8 kB view details)

Uploaded Python 3

File details

Details for the file cubie-0.0.3.tar.gz.

File metadata

  • Download URL: cubie-0.0.3.tar.gz
  • Upload date:
  • Size: 133.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cubie-0.0.3.tar.gz
Algorithm Hash digest
SHA256 987ef68de369b5bbd359b25677a04ae68636f84506eb85cc6d2c2b0361e383ef
MD5 33e307fb668fb2f96f76bbeb91c66a18
BLAKE2b-256 7090e92e5622b4b1df24daaccf84767d54bbcbe7660c7b217005efd114ad47d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cubie-0.0.3.tar.gz:

Publisher: pypi.yml on ccam80/cubie

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cubie-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: cubie-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 160.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cubie-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7e12d53ac791ecb4c4f793d030dd3fb98d9e3c59a3e48b25f3820dc4531f4316
MD5 d06e752c81ae7c325e076e0ad65bba49
BLAKE2b-256 4a17b23193469fa1d16717ae2f5e269af1e1d66eb64e89e55fb470780ce81624

See more details on using hashes here.

Provenance

The following attestation bundles were made for cubie-0.0.3-py3-none-any.whl:

Publisher: pypi.yml on ccam80/cubie

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page