【发布时间】:2011-12-09 07:18:24
【问题描述】:
我正在 MATLAB 上运行代码。我正在使用并行计算工具包。我使用SPMD。我的电脑上有 8 个内核。我想先在 1 个核心上运行我的代码,查看时间,然后在 2 个核心上运行我的代码并查看时间,依此类推。 如何禁用/启用我机器的某些内核?
谢谢
【问题讨论】:
标签: matlab parallel-processing multicore toolkit
我正在 MATLAB 上运行代码。我正在使用并行计算工具包。我使用SPMD。我的电脑上有 8 个内核。我想先在 1 个核心上运行我的代码,查看时间,然后在 2 个核心上运行我的代码并查看时间,依此类推。 如何禁用/启用我机器的某些内核?
谢谢
【问题讨论】:
标签: matlab parallel-processing multicore toolkit
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。
【讨论】:
matlabpool open 12。
你可以使用:
maxNumCompThreads(1)
它已被弃用,但在 matlab 2011a 之前我测试过的所有 matlab 都可以正常工作。
【讨论】: