gpt4 book ai didi

matlab - 如何在 Matlab 中利用并行处理

转载 作者:太空宇宙 更新时间:2023-11-03 19:18:50 25 4
gpt4 key购买 nike

我正在研究基于时间序列的计算。计算的每次迭代都是独立的。谁能分享一些关于在 Matlab 中使用并行处理的技巧/在线入门?如何在实际代码中指定?

最佳答案

既然你可以访问并行工具箱,我建议你先检查一下你是否可以使用简单的方法。

基本上,而不是写

for i=1:lots
out(:,i)=do(something);
end

你写

parfor i=1:lots
out(:,i)=do(something);
end

然后,您使用 matlabpool 创建多个 worker(使用工具箱在本地机器上最多可以有 8 个,如果您也有分布式计算,则在远程集群上最多可以有 10 个)服务器许可),然后您运行代码,当您的迭代由 8 个内核而不是一个内核运行时,您会看到速度的显着提升。

尽管 parfor 路由是最简单的,但它可能无法立即使用,因为您可能会错误地建立索引,或者您可能以有问题的方式引用数组等。查看编辑器中的 mlint 警告,阅读文档,并依靠良好的旧试验和错误,您应该相当快地弄清楚。如果您有嵌套循环,通常最好只并行化最里面的循环并确保它进行大量迭代 - 这不仅是一个好的设计,它还减少了可能会给您带来麻烦的代码量。

请注意,特别是如果您在本地计算机上运行代码,您可能会遇到内存问题(这可能会在并行模式下表现得非常慢,因为您正在分页):每个工作人员都会获得工作区的副本,因此如果您的计算涉及创建一个 500MB 的数组,那么 8 个 worker 总共需要 4GB 的 RAM - 然后您甚至还没有开始计算父进程的 RAM!此外,最好在您的机器上只使用 N-1 个核心,这样仍然有一个核心留给可能在计算机上运行的其他进程(例如强制性防病毒...)。

关于matlab - 如何在 Matlab 中利用并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4056831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com