GooFit fitting package
GooFit is a highly parallel fitting framework originally designed for High Energy Physics.
This package can be installed with pip, but uses SciKit-Build, and is build, fully optimized, on your system. Because of this, there are a few caveats when running a pip install. Make sure you have SciKit-Build (pip install scikit-build) before you attempt an install. Also, if you don’t have a recent version of CMake (3.8 or better recommended), also run pip install cmake. When you build, you should also use pip’s -v flag, so that you can see it build (and observe the configuration options). Otherwise, you might wait a very long time without output (especially if CUDA was found).
Using pip 10+:
pip install -v goofit
Using pip < 10:
pip install scikit-build pip install -v goofit
GooFit will automatically look for CUDA, and build in GPU mode if it finds CUDA. You can pick a specific version by passing through a CMake option (see below), or by setting an environment variable, GOOFIT_DEVICE before building. You may want to build with OpenMP as a backend to avoid using your GPU, or you might want the CPP version if you are using Anaconda on macOS. Here are the three common backends:
GOOFIT_DEVICE=CUDA pip install -v goofit GOOFIT_DEVICE=OMP pip install -v goofit GOOFIT_DEVICE=CPP pip install -v goofit
If you want to send arbitrary commands to CMake through PIP, you will need to pass each option through, starting with a -- option. Pip will try to reuse the built version if you do not pass options, but will rebuild if you pass options, so this works for a rebuild, unlike the lines above. This is how you would do this to set OMP as the backend:
pip install -v goofit –install-option=”–” –install-option=”-DGOOFIT_DEVICE=OMP”
If you want to add PDFs to GooFit, or use GooFit pacakges, you should be working in a local directory using git. In the following example, I’m assuming you’ve set up SSH keys with GitHub; you can use https instead if you prefer by changing the URL to https://github.com/GooFit/GooFit.git:
git clone --recursive email@example.com:GooFit/GooFit.git cd goofit
You can set up a quick environment using pipenv:
pipenv install --dev
Then activate that environment:
The normal install here works, though as usual you should include verbose output:
pip install -v .
You can pass through options to the build command, for example:
pip install -v . --install-options="--" --install-options="-DGOOFIT_PACKAGES=OFF"
Building a source package from git
For developers only:
To make a source package, start with a clean (such as new) git GooFit package with all submodules checked out:
git clone --branch=master --recursive --depth=10 firstname.lastname@example.org:GooFit/GooFit.git cd goofit python setup.py sdist python -m twine upload dist/*
To make a binary package, use instead:
python setup.py bdist_wheel -- -DGOOFIT_OPTI="-march=core2"