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

jas*_*son 4 python simulation scala numpy scientific-computing

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

非常感谢!

Kip*_*ros 12

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

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


Jon*_*rsi 6

  1. 你为什么要这样做?有许多好的,免费提供的分子动力学包你可以使用: LAMMPS,Gromacs,NAMD, HALMD都会立即浮现在脑海中(以及CHARMM,AMBER等免费提供的那些)修改其中任何一个以适应你的目的要比编写自己的目的容易得多,而且这些包中的任何一个,包括成千上万的用户和数十个贡献者,都会比你自己写的更好.
  2. Python + numpy适用于原型设计,但它会比C/C++/Fortran快得多(是的,即使是与快速库相关联的numpy),这是其他所有人都使用的.除非您使用GPU,否则所有的辛苦工作都是在用C/C++编写的内核中完成的.


Dav*_*nan 5

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

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

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

  • 也可以使用Python作为"粘合剂",可以这么说,但是使用你提到的语言编写的特殊设计库进行所有处理.或者,可以使用Cython之类的东西. (4认同)