分子动力学模拟器的最佳语言,可在生产中运行。 (Python的+ numpy的?)

时间:2011-08-04 21:03:53

标签: python scala numpy simulation scientific-computing

我需要建立一个重型分子动力学模拟器。我想知道python + numpy是不是一个好选择。这将用于制作,所以我想从一个好的语言开始。我想知道我是否应该开始使用像eg.scala这样的函数式语言。我们是否有足够的库支持scala中的科学计算?或者你认为好的任何其他语言/范例组合 - 以及为什么。如果您过去实际构建了一些内容并且正在根据经验进行讨论,请提及它,因为它将帮助我收集数据点。

非常感谢!

4 个答案:

答案 0 :(得分:12)

高性能的MD实现往往是绝对必要的(与功能相反),大数据阵列胜过面向对象的设计。我曾与LAMMPS合作,虽然它有瑕疵,但确实可以完成任务。一个更吸引人的选择是HOOMD,它从一开始就针对带有CUDA的Nvidia GPU进行了优化。 HOOMD没有LAMMPS的所有功能,但界面看起来好一点(它可以从Python编写脚本)并且它的性能非常高。

我实际上使用高级面向对象设计实现了我自己的MD代码(Java和Scala),并且与经过大量调整和使用C ++ / CUDA的流行MD实现相比,发现了令人失望的性能。现在,似乎很少有科学家编写自己的MD实现,但能够修改现有的实现是有用的。

答案 1 :(得分:6)

  1. 你为什么要这样做?您可以使用许多好的,免费提供的分子动态包:LAMMPSGromacsNAMDHALMD都会立即出现记住(以及像CHARMM,AMBER等那些免费提供的产品)根据您的目的修改任何这些将比编写您自己的,以及任何这些软件包,成千上万的用户和数十个贡献者容易得多。 ,会比你自己写的更好。
  2. Python + numpy适用于原型设计,但它会比C / C ++ / Fortran快得多(是的,即使是与快速库相关联的numpy),这是所有其他人使用的。除非您使用GPU,否则所有的辛苦工作都是在用C / C ++编写的内核中完成的。

答案 2 :(得分:5)

我相信大多数高性能的MD代码都是用Fortran,C或C ++等本地语言编写的。现代GPU编程技术最近也受到青睐。

像Python这样的语言可以更快地开发本机代码。另一方面,性能通常比编译的本机代码差。

给你一个问题。你为什么要编写自己的MD代码?那里有很多图书馆。你不能找到一个适合你的需求吗?

答案 3 :(得分:3)

如果你想使用Python,另一种选择是看看OpenMM:

https://simtk.org/home/openmm

这是一个Molecular Dynamics API,它具有您需要的许多基本元素(集成商,恒温器,恒压器等),并支持通过CUTA和OpenCL通过OpenCL和GPU在CPU上运行。它有一个我以前用过的python包装器,基本上模仿了底层的c-api调用。它已被合并到GromacsMDLab中,所以你有一些如何整合它的例子,如果你真的死于从(半)划痕构建东西

然而正如其他人所说,我强烈建议您在开始重新发明轮子之前先看看NAMD,Gromacs,HOOMD,LAMMPS,DL_POLY等是否符合您的需求。