我需要建立一个重型分子动力学模拟器。我想知道python + numpy是不是一个好选择。这将用于制作,所以我想从一个好的语言开始。我想知道我是否应该开始使用像eg.scala这样的函数式语言。我们是否有足够的库支持scala中的科学计算?或者你认为好的任何其他语言/范例组合 - 以及为什么。如果您过去实际构建了一些内容并且正在根据经验进行讨论,请提及它,因为它将帮助我收集数据点。
非常感谢!
答案 0 :(得分:12)
高性能的MD实现往往是绝对必要的(与功能相反),大数据阵列胜过面向对象的设计。我曾与LAMMPS合作,虽然它有瑕疵,但确实可以完成任务。一个更吸引人的选择是HOOMD,它从一开始就针对带有CUDA的Nvidia GPU进行了优化。 HOOMD没有LAMMPS的所有功能,但界面看起来好一点(它可以从Python编写脚本)并且它的性能非常高。
我实际上使用高级面向对象设计实现了我自己的MD代码(Java和Scala),并且与经过大量调整和使用C ++ / CUDA的流行MD实现相比,发现了令人失望的性能。现在,似乎很少有科学家编写自己的MD实现,但能够修改现有的实现是有用的。
答案 1 :(得分:6)
答案 2 :(得分:5)
我相信大多数高性能的MD代码都是用Fortran,C或C ++等本地语言编写的。现代GPU编程技术最近也受到青睐。
像Python这样的语言可以更快地开发本机代码。另一方面,性能通常比编译的本机代码差。
给你一个问题。你为什么要编写自己的MD代码?那里有很多图书馆。你不能找到一个适合你的需求吗?
答案 3 :(得分:3)