Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 使用R2014a的MaxNumComp线程_Matlab - Fatal编程技术网

Matlab 使用R2014a的MaxNumComp线程

Matlab 使用R2014a的MaxNumComp线程,matlab,Matlab,已弃用,但它是否仍能与R2014a一起使用 我试图强制脚本使用单个计算线程,但它使用2个逻辑核: maxNumCompThreads(1); % limit MATLAB to a single computational thread. signal = rand(1, 1000000); for i=1:100 cwt(signal,1:10,'sym2'); i end 知道为什么吗 启动MATLAB时设置-singleCompThread选项可以正常工作(然后脚

已弃用,但它是否仍能与R2014a一起使用

我试图强制脚本使用单个计算线程,但它使用2个逻辑核:

maxNumCompThreads(1); % limit MATLAB to a single computational thread. 
signal = rand(1, 1000000);
for i=1:100
    cwt(signal,1:10,'sym2');   
    i
end
知道为什么吗

启动MATLAB时设置
-singleCompThread
选项可以正常工作(然后脚本只使用一个内核)


请注意,我的计算机有超线程,因此2个逻辑核实际上只有1个物理核,但通常Matlab使用逻辑核计数,而不是物理核计数(例如,在设置并行池中的核数时)。

实际上,默认情况下,Matlab将最大计算线程数设置为物理核数,不符合逻辑的。那么你确定你的机器不是双核的吗?(超线程将使其显示为4核)。现在大多数现代CPU都是双CPU或四CPU。。例如,
maxNumCompThreads
在我的四核机器上报告了
4
,尽管除了
maxNumCompThreads(1)
之外,我还有超线程(OS任务管理器显示8个逻辑核),但将最大计算线程数设置为1,这并不意味着该线程仅限于一个CPU(线程可以在调度程序分配的CPU之间跳转)。如果需要,您必须设置MATLAB进程的关联性。@这里也是一样,
maxNumCompThreads
reports 4在我的四核机器上,即使我有超线程(OS任务管理器显示8个逻辑核)。在并行池中,默认的工作线程数也是物理核数,但一个工作线程只使用一个逻辑核,因此我认为maxNumCompThreads也可能使用逻辑核作为单元。@Amro我在问题中提到的代码片段只使用了大约2个逻辑核(实际上,略少,就像2个逻辑核的80%)可能是由于
cwt(信号,1:10,'sym2')的事实
最多只使用两个逻辑核:您是否知道,在您的脑海中,某些Matlab代码会使用两个以上的逻辑核?@Amro确实在理论设置中,最大线程数与设置最大逻辑核或物理核数不同。但是
-singleCompThread
确实限制了Matlab最多只能使用一个逻辑核,所以我认为
maxNumCompThreads(1)
也会这样做。