MATLAB的博客

实用的建议在前沿的人

从HPC咨询公司,更快的在MATLAB R2023a fzero函数

在2021年的某个时间,我做一些高性能计算(HPC)咨询公司在英格兰南部的一所大学。这涉及各种各样的东西,比如让代码规模跨多个节点,减少内存需求和速度优化。这是一个巨大的成功和我最初的代码无法运行在他们的HPC系统不仅但规模很好地运行。然后我把6 x速度作为奖励增加优化用户的代码。
我最终与MATLAB的卡住了fzero函数。用户的代码调用它数十亿倍,而简单函数的开销透露,之前没有人报道。
我有一个和发展做了一些修正,聊天在R2022a, fzero 比以前快了约3倍吗对于简单的情况下是这样的。这是好,但数学核心团队的一员,鲍比,想进一步调查。他做了一些优化,也发现任何函数使用变长度输入宗量有一些额外的开销,可以解决通过JIT编译器。背后的团队JIT编译照顾这和现在很多功能使用变长度输入宗量快一点了。
这些补丁fzero更快的简单类型的函数被使用在我的HPC的情况。发行说明总是比较前面的MATLAB版本但是显示累计收益,我喜欢比较这个基准R2021b是当我第一次注意到这个函数问题。
N = 1 e6;
rng默认的
水平= 1.5 *兰德(N, 1);
= 0 (N, 1);
抽搐
i = 1: N
(我)= fzero (@ (x) fzeroFun (x,水平(i)), 2 [0]);
结束
toc
运行时间是1.669698秒。
  • R2021b: 28.52秒
  • R2022a: 10.25秒
  • R2023a: 1.67秒
这几乎是一个17 x加速跨几个版本,用户不需要改变他们的代码!所有这些优化的累积效应随时间增加。
函数定义
函数u = fzeroFun (x, lv)
% fzero函数来解决
u = x * sin (x) - lv;
结束
|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。