试图并行计算一个函数

1视图(30天)
彼得Kupec
彼得Kupec 2022年8月4日
评论道: 彼得Kupec2022年8月5日
我有一个函数在一个程序中,calcuations我相信系列。得到一个数组的值作为输入,然后执行这些计算。根据以往的输出输出不所以我认为这个函数可以通过与本身。我应该提及AT08gui函数是一个我想并行执行。这个for循环应该只运行一次,除非使用多个文件。我道歉,如果我不使用适当的术语我不非常熟悉并行计算和只是想分享一个7000点的负荷计划4个cpu内核之间我必须希望加速这个过程,所以,每个核心将只做1750,希望将会加速这一过程。本质上一样的我运行程序4适当分离实例与数据分开,然后在输出返回一个excel文件。
我希望这是有意义的,希望有可能是一个简单的matlab函数实现我在说什么吗?或者自动这是否和我的MATLAB函数已经运行在并行?
x = 1:长度(弗利斯特雨)
v =弗利斯特雨(x);
如果firstpass = = 1 | | get (handles.Filetype_selector,“价值”)= = 4
Fdat (1) = {v};
[D,哦,Ogh,奥什,Ov Ogv, Osv, ~, ~, ~, ~, AntF, AntB, AntFX, AntBX,用户体验,uy ~] = AT08gui (Psurf,文件名,文件类型,v, Tsurf pMSL,呃,ho哈,苍老师,R,模型,通用,MBD, MBDr,侦破,分辨率,Numfiles, Fdat);
[E] = WRITETA (FNXLS E D v, Tsurf Psurf, pMSL,呃,ho哈,苍老师,模型机汇,哦,奥什,Ogv, Ogh);
firstpass = 0;
其他的
[D,哦,Ogh,奥什,Ov Ogv, Osv] = Get_Ta (AntF、AntB AntFX, AntBX,用户体验,uy, v, Tsurf, Psurf, pMSL,呃,ho哈,R,苍老师,模型,通用汽车、美国);
[E] = WRITETA (FNXLS E D v, Tsurf Psurf, pMSL,呃,ho哈,苍老师,模型机汇,哦,奥什,Ogv, Ogh);
结束
结束
2的评论
彼得Kupec
彼得Kupec 2022年8月4日
我做并行计算工具。我认为irrelevent E值,因为它是设置为1上面几行和WRITETA函数在函数文件中是这样的。
感谢任何帮助。
[E] = WRITETA (FNXLS,操作系统,D, v, Tsurf Psurf, pMSL,呃,ho哈,苍老师,模型机汇,哦,奥什,Ogv, Ogh)

登录置评。

答案(1)

布鲁诺陈德良
布鲁诺陈德良 2022年8月4日
“或者MATLAB自动这是否和我已经运行在并行函数?”
不。
但如果你vectorize函数 AT08gui ,MATLAB可以使用低级函数向量中实现多线程。
并行数据写入一个文件不是straigthforward,明白了 这个线程 现讨论。
1评论
彼得Kupec
彼得Kupec 2022年8月5日
所以我试着编写一个基本的脚本我参照但似乎parfor循环运行这些基本功能正在成倍增长较慢的更大的我让我的数组。我读到在另一个论坛,我可能会参照的是分布式计算,再次我不熟悉。我试着利用spmd函数和分布式阵列,但他们似乎并未立即使计算速度更快。我知道我的原始功能是更复杂的比这些小测试也许我会看到如果我实现它的结果。
至于你的建议向量化。我不确定有多少嵌套函数矢量化但我相信它使大量使用。我的主要目标是利用我的电脑中的核心大大增加程序运行时的原始帖子。
这是我的测试文件,我相信这个数组的负载2核分裂但不使程序运行的更快,实际上要慢得多。
% %的输入
inp1 = linspace (1、10、70000000);
inp2 = linspace (20、30、70000000);
inp3 = 2;
% %功能
funcs1 = {@testfunc1, @testfunc1};%让fun1 fun2两个函数
% %函数的输入
参数= {inp1, inp3; inp2 inp3};%写每一个函数的输入
%输出={着干活,out2};
% %预先配置的空间解决方案金宝搏官方网站
金宝搏官方网站解决方案=细胞(2,2);%初始化解决方案
金宝搏官方网站solutions2 =细胞(2,2);%初始化解决方案
%金宝搏官方网站 solutions2 =细胞(1、2);%初始化解决方案
%使用parfor
% % parfor循环功能
抽搐
parfor2 = 1:2
[金宝搏官方网站方案{二世:}]= funcs1{2}(参数{二世:});
{二金宝搏官方网站世:}%(解决方案,解决方案{二世:}]= funcs1{2}(参数{二世:});
结束
toc
% %线性for循环
抽搐
[金宝搏官方网站solutions2 {1}): = testfunc1 (inp1 inp3);
[金宝搏官方网站solutions2 {2,}): = testfunc1 (inp2 inp3);
toc
函数[y, kk] = testfunc1 (x, b)
y = x + b;
kk = x;
结束

登录置评。

类别

找到更多的在循环和条件语句帮助中心文件交换

下载188bet金宝搏


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!