gpt4 book ai didi

c - 有没有更好的方法来优化 lennard jones 势函数?

转载 作者:太空狗 更新时间:2023-10-29 15:13:36 27 4
gpt4 key购买 nike

事实上,它是 Lennard Jones 势的导数。原因是我正在编写一个分子动力学程序,至少 80% 的时间花在以下函数上,即使使用最激进的编译器选项 (gcc ** -O3)。

double ljd(double r) /* Derivative of Lennard Jones Potential for Argon with 
respect to distance (r) */
{
double temp;
temp = Si/r;
temp = temp*temp;
temp = temp*temp*temp;
return ( (24*Ep/r)*(temp-(2 * pow(temp,2))) );
}

此代码来自文件“functs.h”,我将其导入到我的主文件中。我认为以这种方式使用临时变量会使函数更快,但我担心创建它们太浪费了。我应该使用静态吗?另外,代码是使用 openmp 并行编写的,所以我真的不能将 temp 声明为全局变量吗?

变量 Ep 和 Si 已定义(使用#define)。我只使用 C 大约 1 个月。我试图查看 gcc 生成的汇编代码,但我完全迷失了。\

最佳答案

我会首先摆脱对 pow() 的调用:

double ljd(double r) /* Derivative of Lennard Jones Potential for Argon with 
respect to distance (r) */
{
double temp;
temp = Si / r;
temp = temp * temp;
temp = temp * temp * temp;
return ( (24.0 * Ep / r) * (temp - (2.0 * temp * temp)) );
}

关于c - 有没有更好的方法来优化 lennard jones 势函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com