通过使用不同的语法来加快计算速度

计算科学 matlab 显卡 加速度
2021-12-10 13:12:50

我正在阅读一本关于 Matlab 的书(Jung Suh 和 Youngming Kim 所著的“使用 GPU 计算加速 Matlab - A Primer with Examples”,2013 年。第 1.7 章示例)。

我读了一个例子,它说:

通过使用元素计算、矩阵计算和函数调用来代替 for 循环,可以显着加快速度。

在我阅读的案例中,它将计算时间从 50 秒减少到 0.5 秒。

我的问题:

  1. 哪种语法更“节省资源”和“更快”:function call, for, while, if, switch, 和(即在矩阵或集合中搜索元素)等?

  2. 逐元素计算、加法和矩阵计算等有多快?

为了便于理解,下面给出了一个简短的示例:

%%% First case
tic;
B = 0;
A = 1:1e8;
for i=1:1000
    B = B + A(i);
end
toc;

%%% Second case
tic;
B = 0;
A = 1:1e8;
B = sum(A);
toc;

%%% Third case
C = ones(1e8,1);
tic;
B = 0;
A = 1:1e8;
B = A*C;
toc;

具有以下时序结果

经过的时间是0.463159秒。

经过的时间是0.501524秒。

经过的时间是0.532470秒。

在上面的示例中,所有三种方法都有不同但相当的速度。

0个回答
没有发现任何回复~