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