macroevolution / bamm

A program for multimodel inference on speciation and trait evolution
GNU General Public License v2.0
33 stars 10 forks source link

Make multithreading an option #22

Closed josephwb closed 10 years ago

josephwb commented 10 years ago

I know the idea is to go eventually with Metropolis coupling, but an easy and quick option is to use multithreading with the current single-chain implementation. I've been playing with this, and it scales nicely; I just need to fix a synchronization problem. I will probably create a separate branch for this. The way I have been working is that there is a separate Makefile for the MT compilation, but this could take the form of 1) a flag during compilation, or 2) a single compilation, where MT is turned on (or off) via the control file.

drabosky commented 10 years ago

Very interesting - so how is the multithreading working? is it automatically figuring which calculations can be split? I'm very curious about what sort of (ballpark) speedups you can get with this....

you guys are keeping me from finishing my lecture - this is more interesting!

On Nov 21, 2013, at 10:51 AM, Joseph W. Brown wrote:

I know the idea is to go eventually with Metropolis coupling, but an easy and quick option is to use multithreading with the current single-chain implementation. I've been playing with this, and it scales nicely; I just need to fix a synchronization problem. I will probably create a separate branch for this. The way I have been working is that there is a separate Makefile for the MT compilation, but this could take the form of 1) a flag during compilation, or 2) a single compilation, where MT is turned on (or off) via the control file.

— Reply to this email directly or view it on GitHub.

redcurry commented 10 years ago

Very cool. Once I get to autoconf, I imagine the MT compilation could be an option while configuring the system.

josephwb commented 10 years ago

Yeah, that will be great to have autoconf (issue #6) going.

I won't be able to get back to this MT until this evening.

redcurry commented 10 years ago

Since BAMM now uses Metropolis Coupled MCMC and does so in parallel (using C++11 threads), I will close this issue.