Hi Tim,

Thanks for all the insights that you share with me in your last email. 
It has been of great help.

On 02.07.2012 21:58, Tim Vandermeersch wrote:
> This is in accordance with what I said above. However if you really
> want to improve performance a better approach would be to implement
> cut-offs using a neighbour list. (There are cut-offs in OBForceField

I have a look at the NeighborList algorithm and I agree with you it 
will be the best strategy for getting a performance improvement. For 
now, I want to focus on the optimization that I could carry out faster 
with the less impact in terms of rewriting code. Also because I want to 
experiment with performance optimization by means of parallelization 
using the GPU.

>
> If you care to use large molecules: Currently OBForceField::Setup
> pre-calculates Calculation objects for all n^2 atom pairs. A
> OBFFVDWCalculationMMFF94 uses 228 bytes and a
> OBFFElectrostaticCalculationMMFF94 uses 140 bytes. When there 3000
> atoms, 3000*3000*(228+140) = 3.3 GB which easily throws an out of
> memory exception if you only have 4 GB of RAM. For 5000 atoms, 9.2 GB
> is needed! (this assumes you use 64-bit and sizeof(double)=8 and
> sizeof(int)=4)
>

This is an important constraint that I need to consider. The whole 
purpose of using GPU is to be able to offload a huge amount of CPU 
intensive routines, in other words very large molecules. Otherwise the 
communication step needed to copy the molecule to the device won't be 
shadowed by the processing defeating the purpose of using GPU 
altogether.

Taking this into account I started also looking at other 
CPU-constrained operations in OpenBabel. Martin suggested we first have 
a look at the conformer generation code (Confab) that you, Noel, Geoff 
and Chris were working before. In terms of parallelization it looks 
already very promising because each conformer energy computation can 
theoretically be handled alone, and even small-sized proteins will 
generate a respectable amount of conformers to keep the GPU busy.

> I started this a while ago but haven't kept it in sync with OB trunk
> so if this is used you should make sure to also check the current SVN
> trunk code to get bug fixes and other improvemts. It is more modular
> though. The force field class should only be concerned with computing
> the energy and gradients and provide an API for accessing them.
> minimisation etc. should be placed in different classes.
>

I already have a look and notice you went for a more modular approach. 
Indeed this is what I will be aiming for. I'm thankful that you guys 
share this resource with me, because I didn't knew about it, and even if 
it is not current it will help me as a blueprint to develop the class 
diagram, understand the dependencies and bootstrap my project.

> Cheers,
> Tim

Cheers,
Omar

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
OpenBabel-Devel mailing list
OpenBabel-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-devel

Reply via email to