gpt4 book ai didi

optimization - 牛顿法分形生成的 theta 函数评估的加速

转载 作者:行者123 更新时间:2023-12-03 16:11:09 28 4
gpt4 key购买 nike

我一直在尝试生成 Newton's method Jacobi theta functions 的分形-- 我对 mpmath 的尝试需要很长时间,所以我尝试用 C 进行编码。

用于生成以下图像的来源在这里: http://owen.maresh.info/allegra.c并将使用 gcc allegra.c -o allegra -lm 进行编译,然后应作为 ./allegra > jacobi.pnm 调用


(来源:maresh.info)

所以:
* 有什么方法可以加快评估速度——这花了半小时以上的时间来制作这张图片? (我希望能够使用不同的名称快速生成这些图像,以便我可以制作电影)
* 我知道我在 theta 函数定义中犯了一个错误,但我很难找到不连续的原因。

出于引用目的,此图像是通过对 ϑ3(z,0.001-0.3019*i) 执行标准牛顿方法生成的

最佳答案

首先尝试使用 -O3 启用编译器优化和/或 -fast .对我的系统进行的快速测试显示性能提高了 3 倍

此外,在尝试更改代码以提高性能时,拥有更快的运行时间是有益的,也许通过将主循环更改为 for(a=0;a<10 /* 512*/ ;a++)
另请注意:GCC 支持 complex numbers并查看手册页 complex , cpow , 和 cexp并包含文件 /usr/include/complex.h
我分析了该应用程序,发现它大部分时间都花在 powc() 上。 .不幸的是,当我将 powc() 更改为使用 cpow() 时从数学库中,它的运行速度比您的实现慢。

如果您正在运行的系统具有多个内核,则可以通过将外部主循环与 OpenMP 并行化来相当容易地缩短挂钟时间。但是,当您为动画生成图像帧时,仅使用单独的过程生成每一帧可能是最有效的(我喜欢 xargs -P # -n 1 用于这种类型的粗粒度并行化。)

关于optimization - 牛顿法分形生成的 theta 函数评估的加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135845/

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