Parpool线程被扩大

12个视图(30天)
在脚本中,我有一个很大的自定义函数在一个循环,每个循环调用这个函数时使用不同的参数。所以我尝试使用parpool(“线程”)和parfeval计算结果提前,然后检索的结果总计算每个循环加快。这一切都很好,直到我增加我的自定义函数矩阵的大小。
我运行Matlab使用Matlab -nodisplay”。当我慢慢增加矩阵的大小,到一定程度,我就看到下面的:
杀了
Matlab是辞职。我怎么知道到底是哪里出了错?是矩阵太大,我耗尽内存吗?我验证的自定义函数本身运行好大矩阵的大小。
我的电脑有8核心,当我运行parpool(“线程”),它给了我一个8池工人。如果是内存的问题,我可以减少工人的数量吗?因为我不认为我需要很多工人实现速度,但我不能找到一个方法来减少工人的数量,当使用parpool(“线程”)。或者我应该基于流程的并行计算,而不是线程?
谢谢。

接受的答案

史蒂文的主
史蒂文的主 2021年10月29日
什么操作系统?如果你运行在Linux上,检查是否MATLAB杀害了 记忆的杀手
1评论
陈省身回族李
陈省身回族李 2021年10月29日
我在Linux上运行。我跟着你的链接和使用命令“ grep - i杀死/var/log/messages *” 但是我没有看到任何文件/var/log/message*.我也阅读,它可以在/var/log/kern.日志,但是我无法查看该文件,因为我只给ssh访问通过密钥身份验证和没有sudo密码。这台机器只有32 gb的内存,所以我认为这可能是内存的问题。
你的回复后,我的代码转移到另一个更大的集群中的机器和更大的内存和我现在可以运行相同的计算更大的矩阵。我将接受这个答案,谢谢你的建议。

登录置评。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2021年10月29日
不幸的是,R2020a parpool(“线程”)和R2021b backgroundPool()不允许您配置使用线程的数量,所以有可能耗尽内存。
4评论
陈省身回族李
陈省身回族李 2021年10月31日
谢谢,雷蒙德!这是一个很酷的技巧,这为我的工作情况。它为我工作的原因是,我只需要1或2平行工人在后台运行一些提前计算当我进行其他步骤。这是足以完全消除运行这些计算所需的时间在我的脚本的主循环。和我更多的工人,更多的内存消耗,因此导致进程被杀。现在我减少工人的数量,我设法增加矩阵的大小,仍有足够的内存来完成计算提前,给我我需要的加速。非常感谢!

登录置评。

类别

找到更多的在并行计算原理帮助中心文件交换

标签

s manbetx 845


释放

R2021a

社区寻宝

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

开始狩猎!