level 1
aabb2432519
楼主
如题。我想知道在Mathematica中,如何统计一段代码在运行时,总共进行了多少次浮点运算。
不过我也不知道我的描述是否有问题,或者Mathematica是不是真的做到这件事,所以这里简单说一下来龙去脉。
事情是这样的,我的一篇论文中,算法部分的代码是用Mathematica实现的。现在主编对于我关于计算机这一部分的讨论不满意,希望我能用roofline模型,对代码进行定量的评估,以此来判断代码性能是否已达到我计算机的极限。
我之前并没有接触过什么是roofline模型,在网上简单找了一些资料,了解到大致的意思就是:统计代码在运行时,所需要进行的浮点运算次数(对应FLOPS),以及所需要进行读写的字节数(对应Band-Width),求这两者的比值,称作计算强度,或者访存比(Operational Intensity)。
查阅了Mathematica的一些帮助文档,我注意到可以用MaxMemoryUsed[]和ByteCount[]来实现读写字节数量的统计。但找了很久的资料也没看到,有什么办法可以统计浮点运算次数,直接或间接的,目前也没什么思路。所以来贴吧问问看,集思广益,说不定有小伙伴能想到办法,又或者有大佬能给我提点一下。
2023年06月26日 12点06分
1
不过我也不知道我的描述是否有问题,或者Mathematica是不是真的做到这件事,所以这里简单说一下来龙去脉。
事情是这样的,我的一篇论文中,算法部分的代码是用Mathematica实现的。现在主编对于我关于计算机这一部分的讨论不满意,希望我能用roofline模型,对代码进行定量的评估,以此来判断代码性能是否已达到我计算机的极限。
我之前并没有接触过什么是roofline模型,在网上简单找了一些资料,了解到大致的意思就是:统计代码在运行时,所需要进行的浮点运算次数(对应FLOPS),以及所需要进行读写的字节数(对应Band-Width),求这两者的比值,称作计算强度,或者访存比(Operational Intensity)。
查阅了Mathematica的一些帮助文档,我注意到可以用MaxMemoryUsed[]和ByteCount[]来实现读写字节数量的统计。但找了很久的资料也没看到,有什么办法可以统计浮点运算次数,直接或间接的,目前也没什么思路。所以来贴吧问问看,集思广益,说不定有小伙伴能想到办法,又或者有大佬能给我提点一下。