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