首页 > 解决方案 > 多个工人,每个工人都有多个核心

问题描述

我有一个从 MATLAB 调用的外部 MEX 进程。此代码是并行编写的,可以有效地使用 6 个内核(12 个线程)。

我的机器有 12 个内核(24 个线程)。无论如何要创建 2 个并行工作程序(每个使用 6 个内核/12 个线程),然后每个工作程序同时调用该 MEX 程序。MEX 程序是线程安全的。

谢谢!

标签: matlab

解决方案


您可以直接在集群实例上设置您的NumThreads属性,也可以使用集群配置文件管理器修改集群配置文件。这是编程方式:parallel.Cluster

c = parcluster('local');
c.NumThreads = 3;
parpool(c, 2);
spmd, maxNumCompThreads, end % each worker gets the answer 3

理想情况下,您的 MEX 代码应该使用 的结果maxNumCompThreads来确定它应该使用多少线程。


推荐阅读