我在MATLAB上运行代码。我正在使用Parallel Computing Toolkit。我使用SPMD。我的电脑上有8个核心。我想先在1个核心上运行我的代码,查看时间,然后在2个核心上运行我的代码并查看时间,依此类推。 如何禁用/启用机器的某些内核?
由于
答案 0 :(得分:3)
命令maxNumCompThreads
返回执行命令的MATLAB副本可能使用的最大计算线程数。但是,由matlabpool
创建的MATLAB工作者是按设计单线程的。试试这个确认:
matlabpool open 2
parfor i = 1:2
warning('off','MATLAB:maxNumCompThreads:Deprecated')
maxNumCompThreads
warning('on','MATLAB:maxNumCompThreads:Deprecated')
end
ans =
1
ans =
1
如果您想在越来越多的内核上运行时为代码计时,请尝试以下方法:
matlabpool open 1
runmycode
matlabpool close
matlabpool open 2
runmycode
matlabpool close
matlabpool open 3
runmycode
等。最高为matlabpool open 8
。
答案 1 :(得分:1)
您可以使用:
maxNumCompThreads(1)
它已被弃用,但在我测试的所有matlab中工作正常,直到matlab 2011a。