![]() |
如何在Matlab中利用并行处理
我正在基于时间序列的计算。计算的每个迭代都是独立的。谁能分享一些在Matlab中利用并行处理的技巧/在线入门?如何在实际代码中指定?
[B]回答:[/B] 由于您可以使用Parallel工具箱,因此建议您首先检查是否可以通过简单的方法进行操作。 基本上,不是写 for i=1:lots out(:,i)=do(something); end 你写 parfor i=1:lots out(:,i)=do(something); end 然后,您使用matlabpool创建多个工作程序(使用工具箱的本地计算机上最多可以有8个工作程序,如果您还具有Distributed Computing Server许可证,则在远程群集上最多可以有8个工作程序),然后运行代码,当您的迭代由8个内核而不是1个内核运行时,可以看到不错的速度提升。 即使parfor路由最简单,也可能无法立即使用,因为您可能会错误地建立索引,或者您可能以有问题的方式引用数组等。在编辑器中查看mlint警告,请阅读文档,并依靠良好的旧尝试和错误,您应该尽快找到答案。如果您有嵌套循环,通常最好只并行最内层的循环,并确保进行大量的迭代-这不仅是好的设计,而且还减少了可能给您带来麻烦的代码量。 请注意,尤其是如果您在本地计算机上运行代码,则可能会遇到内存问题(由于正在分页,因此可能会在并行模式下以非常慢的速度执行):每个工作人员都会获得工作空间的副本,因此如果计算涉及创建一个500MB的阵列,则8个工作人员将需要总共4GB的RAM-然后您甚至还没有开始计算父进程的RAM!此外,最好只在计算机上使用N-1个内核,这样,计算机上可能仍在运行其他进程(例如强制性防病毒...),剩下一个内核。 [url=https://stackoverflow.com/questions/4056831]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:19。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.