Page 1 of 1

OpenMM-plumed plugin on CUDA platform

Posted: Tue Jun 20, 2017 1:18 pm
by fisiksnju
Hi,

I have been working with OpenMM-plumed plugin on CUDA platform recently. I do not know if I correctly understand the code, it seems that when we run simulation on CUDA, there is lots of communication between OpenMM and plumed. Based on this function: https://github.com/peastman/openmm-plum ... s.cpp#L198, it seems that at every step OpenMM firstly copies current state to plumed and then receives calculated results from plumed and do post-computation. Since plumed is running on CPU (I checkout the code and there is no CUDA implementation for that), will this communication affect simulation speed?

Thanks!

Wei

Re: OpenMM-plumed plugin on CUDA platform

Posted: Tue Jun 20, 2017 2:40 pm
by peastman
Yes, there's some overhead from that. It's usually not too bad, but it does slow things down a bit. A bigger problem is that Plumed itself can be very slow.

We're working on a native CV feature within OpenMM that has the potential to be a lot faster. Take a look at https://github.com/pandegroup/openmm/pull/1837 if you're interested. The API is in https://github.com/peastman/openmm/blob ... mCVForce.h. If you'd like to try it out, I'd value your feedback.

Peter

Re: OpenMM-plumed plugin on CUDA platform

Posted: Wed Jun 21, 2017 1:43 pm
by fisiksnju
Thank you!

May I know what is the difference between "CustomCVForce" and "CustomManyParticleForce"? Is it that "CustomCVForce" breaks the expression of "CustomManyParticleForce" into two parts: first part defines CV with "addCollectiveVariable" and second one defines energy in terms of CVs?

Thanks!

Wei

Re: OpenMM-plumed plugin on CUDA platform

Posted: Wed Jun 21, 2017 1:46 pm
by peastman
I'm not sure what you're talking about. CustomManyParticleForce is totally unrelated. It has nothing to do with collective variables.

Peter

Re: OpenMM-plumed plugin on CUDA platform

Posted: Wed Jun 21, 2017 1:55 pm
by fisiksnju
For instance, if we want to do umbrella sampling on one dihedral angle, can we just pass:

Code: Select all

1/2 * (phi - 1) ^ 2;
phi = dihedral(p1,p2,p3,p4);
into "CustomManyParticleForce"

Or equivalently we may also pass

Code: Select all

1/2 * (phi - 1) ^ 2;
into "CustomCVForce"

and then define "phi" as a CV separately.

Is that how CustomCVForce works?

Wei

Re: OpenMM-plumed plugin on CUDA platform

Posted: Wed Jun 21, 2017 2:04 pm
by peastman
Maybe you mean CustomCompoundBondForce instead of CustomManyParticleForce?

Yes, that's the basic idea. In the most trivial case, you could add a single CV called "v" to the CustomCVForce, then set its energy expression to just "v". In that case, its energy would be the same as if you had just added the Force defining the CV directly to the System. Of course, in that case there wouldn't be any reason to use CustomCVForce.

Peter

Re: OpenMM-plumed plugin on CUDA platform

Posted: Thu Jun 22, 2017 7:21 am
by fisiksnju
Thank you for clarifying this!

Just curious, are you going to implement biasing methods (e.g. metadynamics and some others) on top of Custom CV in OpenMM package?

Wei

Re: OpenMM-plumed plugin on CUDA platform

Posted: Thu Jun 22, 2017 9:42 am
by peastman
Yes, that's the plan.

Peter

Re: OpenMM-plumed plugin on CUDA platform

Posted: Thu Jun 22, 2017 12:59 pm
by fisiksnju
Nice to hear that!

Thank you!

Wei

Re: OpenMM-plumed plugin on CUDA platform

Posted: Fri Aug 18, 2017 1:11 pm
by spadanco
It was so good