Skip to main content

GPU/CPU Galactic Binary Waveforms

Project description

gbgpu: GPU/CPU Galactic Binary Waveforms

GBGPU is a GPU-accelerated version of the FastGB waveform which has been developed by Neil Cornish, Tyson Littenberg, Travis Robson, and Stas Babak. It computes gravitational waveforms for Galactic binary systems observable by LISA using a fast/slow-type decomposition. For more details on the original construction of FastGB see arXiv:0704.1808.

The current version of the code is very closely related to the implementation of FastGB in the LISA Data Challenges' Python code package. The waveform code is entirely Python-based. It is about 1/2 the speed of the full C version, but much simpler in Python for right now. There are also many additional functions including fast likelihood computations for individual Galactic binaries, as well as fast C-based methods to combine waveforms into global fitting templates.

The code is CPU/GPU agnostic. CUDA and NVIDIA GPUs are required to run these codes for GPUs.

See the documentation for more details. This code was designed for arXiv:2205.03461. If you use any part of this code, please cite arXiv:2205.03461, its Zenodo page, arXiv:0704.1808, and arXiv:1806.00500.

Getting Started

  1. Run pip install. This works only for CPU currently. For GPU, see below for installing from source.
pip install gbgpu
  1. To import gbgpu:
from gbgpu.gbgpu import GBGPU

Prerequisites

To install this software for CPU usage, you need Python >3.4, and NumPy. We generally recommend installing everything, including gcc and g++ compilers, in the conda environment as is shown in the examples here. This generally helps avoid compilation and linking issues. If you use your own chosen compiler, you may need to add information to the setup.py file.

To install this software for use with NVIDIA GPUs (compute capability >5.0), you need the CUDA toolkit and CuPy. The CUDA toolkit must have cuda version >8.0. Be sure to properly install CuPy within the correct CUDA toolkit version. Make sure the nvcc binary is on $PATH or set it as the CUDAHOME environment variable.

Installing

To pip install (only for CPU currently):

pip install gbgpu

To install from source:

  1. Install Anaconda if you do not have it.

  2. Create a virtual environment. Note: There is no available conda compiler for Windows. If you want to install for Windows, you will probably need to add libraries and include paths to the setup.py file.

conda create -n gbgpu_env -c conda-forge gcc_linux-64 gxx_linux-64 gsl numpy Cython scipy jupyter ipython h5py matplotlib python=3.12 cmake
conda activate gbgpu_env
If on MACOSX, substitute `gcc_linux-64` and `gxx_linus-64` with `clang_osx-64` and `clangxx_osx-64`.
  1. If using GPUs, use pip to install cupy. If you have cuda version 9.2, for example:
pip install cupy-cuda92
  1. Clone the repository.
git clone https://github.com/mikekatz04/GBGPU.git
cd GBGPU
  1. Run install. Make sure CUDA is on your PATH.
pip install -v -e .

Running the Tests

Change to the testing directory:

cd gbgpu/tests

Run in the terminal:

python -m unittest discover

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Current Version: 1.2.2

Authors

  • Michael Katz
  • Travis Robson
  • Neil Cornish
  • Tyson Littenberg
  • Stas Babak

Contributors

  • Mathieu Dubois
  • Maxime Pigou

License

This project is licensed under the Apache License - see the LICENSE file for details.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

gbgpu_cuda11x-1.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

gbgpu_cuda11x-1.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

gbgpu_cuda11x-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gbgpu_cuda11x-1.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

gbgpu_cuda11x-1.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file gbgpu_cuda11x-1.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gbgpu_cuda11x-1.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf110b9da0b9dc8c22036be8c5d5ac474d5e9e1d34fbf954a9884d74892e6a1e
MD5 d3d5010c63da2ea7945f526f304af782
BLAKE2b-256 aedee52aad2b2155ce310f2e42d04f731c279cc968446f166ed3024f62f19203

See more details on using hashes here.

File details

Details for the file gbgpu_cuda11x-1.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gbgpu_cuda11x-1.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 532ed3ebcdcaebc7a8de521c9589d576617531b92b9aa276db90a73295cf9f35
MD5 1c81d547bfdf4093a564dac78d9bc82e
BLAKE2b-256 e3c6f8835d57b81abf9dcac4bd2ad962578c757d5209fc05f677d61ffd653ba2

See more details on using hashes here.

File details

Details for the file gbgpu_cuda11x-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gbgpu_cuda11x-1.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3c9c6b2492d9b2f26e624fd004cf8c43690215bd8f23e8230b6da1b83bc21475
MD5 b9b2fc9fc16da8e0c7183d4d8124df13
BLAKE2b-256 3726c410fb4400afcbd947c4e0ea7b09829389e95db67a150a3df44667ba9cfb

See more details on using hashes here.

File details

Details for the file gbgpu_cuda11x-1.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gbgpu_cuda11x-1.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 43d81d75929441e2ff5f92f6052633e86dc7049f251419f3596345cb381d78a1
MD5 e836809916eeec1e78c528cf7da4cc44
BLAKE2b-256 f5109af601ae96f60061316b2b85d9087608d4a310692a926ef21da7a00da2bd

See more details on using hashes here.

File details

Details for the file gbgpu_cuda11x-1.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gbgpu_cuda11x-1.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c124e55e72f26f7f7efa06256c9b6d5803cd1ad85a96300fde3bf06b060ca663
MD5 1bfda728c07a32a3ee2bbb7703162d03
BLAKE2b-256 557adcfad46bf3cc5956b0a69f706f87d8ec3637977c36ae43fc43339a4b57ae

See more details on using hashes here.

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