3

我目前正在 MATLAB 中编写一些代码,这些代码使用parfor循环来加速一些繁琐的计算。

我的问题是代码将在远程集群上运行,并且可以在 4 核、8 核或 12 核机器上运行(我不会提前知道哪一台)...

我基本上需要一个代码片段,它允许 MATLAB 确定可以在 matlabpool 中使用的最大内核数。如果我们调用这个变量maxcores,我可以继续使用

matlabpool('open',maxcores).

这样我就可以确保我正在使用所有可用的内核。

4

2 回答 2

9

您可以通过 获得机器上的核心数量feature('numCores'),这是无证的,但似乎不太可能中断。(来源

有人声称getNumberOfComputationalThreads自 R2007a 起也可以使用,但它不适用于我的 R2012a。

于 2012-11-04T03:37:18.673 回答
2

除了 Dougal 的回应,我发现getenv('NUMBER_OF_PROCESSORS')返回了我的 Windows 系统上的线程数。

于 2013-09-02T16:04:55.967 回答