计算效率对比(MATLAB代码)

Parfor 函数

matlab 调用并行计算,主要是将 for 语句写成 parfor. 关于如何使用 parfor 并行,网上有一大堆教程,这里不再赘述。下面是相关链接:

https://www.cnblogs.com/noah0532/p/8648317.html
https://blog.sina.com.cn/s/blog_866e7fa70101cv08.html
https://blog.csdn.net/qq_40368490/article/details/126645056
...

本地电脑测试

电脑有 12 个线程: Number of workers: 12.

这是电脑配置

不难发现,资源监控器开了 12 个 MATLAB 进程

 

服务器测试

服务器一个节点有 36 个核,我们同时运行 36 个进程进行测试

测试代码见附件

测试结果如下

可以发现,采用 parfor 后,计算时间大大降低。从串行的 206s 到 6 s.

输入 top 查看进程:

附件

点击查看 test.m 代码
tic
n = 1200;
A = 500;
a = zeros(n);
for i = 1:n
a(i) = max(abs(eig(rand(A))));
end
toc

点击查看 test_par.m 代码
p = parpool('local',36);
clear;
tic
n = 1200;
A = 500;
a = zeros(n);
parfor i = 1:n
b = sample(A);
a(i) = b;
end
clear b;
toc
delete(gcp('nocreate'));


function [a] = sample(A)
a = max(abs(eig(rand(A))));
end
posted @ 2023-04-01 10:32  ghzphy  阅读(205)  评论(0)    收藏  举报