我目前正在 MATLAB 中编写一些代码,这些代码使用parfor
循环来加速一些繁琐的计算。
我的问题是代码将在远程集群上运行,并且可以在 4 核、8 核或 12 核机器上运行(我不会提前知道哪一台)...
我基本上需要一个代码片段,它允许 MATLAB 确定可以在 matlabpool 中使用的最大内核数。如果我们调用这个变量maxcores
,我可以继续使用
matlabpool('open',maxcores)
.
这样我就可以确保我正在使用所有可用的内核。
我目前正在 MATLAB 中编写一些代码,这些代码使用parfor
循环来加速一些繁琐的计算。
我的问题是代码将在远程集群上运行,并且可以在 4 核、8 核或 12 核机器上运行(我不会提前知道哪一台)...
我基本上需要一个代码片段,它允许 MATLAB 确定可以在 matlabpool 中使用的最大内核数。如果我们调用这个变量maxcores
,我可以继续使用
matlabpool('open',maxcores)
.
这样我就可以确保我正在使用所有可用的内核。
您可以通过 获得机器上的核心数量feature('numCores')
,这是无证的,但似乎不太可能中断。(来源)
有人声称getNumberOfComputationalThreads
自 R2007a 起也可以使用,但它不适用于我的 R2012a。
除了 Dougal 的回应,我发现getenv('NUMBER_OF_PROCESSORS')
返回了我的 Windows 系统上的线程数。