Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev beagle clean #321

Open
wants to merge 63 commits into
base: development
Choose a base branch
from
Open

Dev beagle clean #321

wants to merge 63 commits into from

Conversation

spydr073
Copy link
Contributor

This branch allows for users to choose to use BEAGLE as a backend for likelihood calculations. There are 2 additional dependencies that must be installed to compile with BEAGLE support: BEAGLE-LIB and Eigen3.

Implemented:

  • Selecting and using BEAGLE enabled devices (cpu, sse, avx, gpu, opencl, cuda)
  • Settings for BEAGLE scaling, float/double, threading
  • Likelihood calculations for single matrix substitution models (JC, HKY, F81, GTR, etc.)
  • Among Site Rate Variation (ASRV)
  • Invariable sites (+I)
  • Choice of using eigensystems or per-node transition matrices for likelihood calculations (eigen way is prefered)

Partially Implemented:

  • Currently there is a problem using ASRV and the per-node transition matrices backend (ASRV currently just works with the eigen backend)
  • Mixture Models are partially implemented. I was unable to figure out how to set the category weights for the mixtures properly in BEAGLE.

Not Implemented:

  • Partitioned analyses
  • Using BEAGLE with MPI

To compile:

  • ./build.sh -beagle true -eigen true

Commands and options to use in Rev scripts to use BEAGLE:

beagleInfo()
setOption("useBeagle", <boolean>)
setOption("beagleDevice", <natural>)
setOption("beagleResource", <beagle_resource>)
setOption("beagleDoublePrecision", <boolean>)
setOption("beagleMaxCPUThreads", <natural>)
setOption("beagleScalingMode", <scaling_mode>)
setOption("beagleDynamicScalingFrequency", <natural>)

beagle_resource options:

cpu
cpu_sse
cpu_avx
gpu_opencl
gpu_cuda

scaling_mode options:

manual
auto
always
dynamic

When using dynamic scaling, users may also want to set the beagleDynamicScalingFrequency.
The default scaling frequency is 100.

Killian Smith and others added 30 commits October 28, 2021 11:46
RevBayes now successfully builds with beagle. Likelihoods are not correct yet though...
…system or transition matrices for beagle calculations
@bredelings
Copy link
Contributor

Hi Killian,

  1. can you rebase this onto origin/development? There are a number of merge conflict you would need to solve. If you have questions about how to do this, you can message me on slack.

  2. if the BEAGLE code can't handle ASRV, what do you propose for the running tests? Ideally we should be testing the eigen and beagle configurations.

-BenRI

@bredelings
Copy link
Contributor

I think this is the wrong branch. It looks like the right branch is dev_beagle. Is that right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants