Matlab并行计算-parfor-以文件做中转

上网导航 2023-08-02 271 0条评论
摘要: 很多时候,当我们写成初版程序后,想要通过并行计算进行提速。此时并行计算只需要对关键瓶颈进行并行即可,不需要将整个程序进行并行。因为并行有额外的开销而且...

很多时候,当我们写成初版程序后,想要通过并行计算进行提速。

此时并行计算只需要对关键瓶颈进行并行即可,不需要将整个程序进行并行。

因为并行有额外的开销而且,有些变量不能够加入到并行里面。

一般处于for循环内部的瓶颈函数都,这种情况都很适合并行计算。

这种情况同样适用于C++框架下的openMP,将瓶颈算法改成并行模式并将关键输出保存成文件。

%这个文件可以根据自己的需要进行更改,比如说变量名,变量的数量等
function parsave(fname, x,y)
	save(fname, 'x', 'y')
end

下面我给出一个具体的框架,并行需要使用parfor。

count_excel=1
 parfor j=1:num_FN
            trueSaveFile=[trueSaveFolder  num2str(j)   '.mat'];
            %通过文件存储,使得程序能够被打断,不至于丢失关键数据
            if exist(trueSaveFile,'file')
                if delete_exist
                    delete(trueSaveFile)
                else
                    continue
                end
                
            end
%写入到中间变量中
            temp_xls=cell(1,2);
%需要存储的信息
            temp_xls{1,1}=current_folder_name;
%瓶颈算法的结果
             temp_xls{1,2}=pingjingsuanfa(x,y);
            %保存
            parsave(trueSaveFile,temp_xls)
        end
        
        
        for j=1:num_FN
        %从文件中读取
        %循环的框架与parfor的框架相同
            trueSaveFile=[trueSaveFolder  num2str(j)   '.mat'];
            if ~exist(trueSaveFile,'file')
                continue
            end
            load(trueSaveFile);
            %写入到excel中  count_excel 是数字转excel的列
            xlswrite(logFileName_xlsx,temp_xls,1,['A' num2str(count_excel+1)]);
            
            
        end

文章版权及转载声明:

作者:上网导航本文地址:https://www.90xe.com/post/1088.html发布于 2023-08-02
文章转载或复制请以超链接形式并注明出处技术导航

分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏