# Hyperthreading & Number of Cores. Parallel computing toolbox

210 views (last 30 days)

Show older comments

Matlab2010
on 9 Apr 2014

Edited: MathWorks Support Team
on 1 Sep 2022 at 13:55

I am using:

MATLAB Version: 8.3.0.532 (R2014a)

MATLAB License Number:

Operating System: Microsoft Windows 8.1 Version 6.3 (Build 9600)

Java Version: Java 1.7.0_11-b21 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode

----------------------------------------------------------------------------------------------------

MATLAB Version 8.3 (R2014a)

Parallel Computing Toolbox Version 6.4 (R2014a)

I check my number of cores;

feature('numcores')

MATLAB detected: 4 physical cores.

MATLAB detected: 8 logical cores.

MATLAB was assigned: 8 logical cores by the OS.

MATLAB is using: 4 logical cores.

MATLAB is not using all logical cores because hyper-threading is enabled.

ans =

4

I also type;

>> p = parpool(8)

p.NumWorkers

Error using parpool (line 99)

You requested a minimum of 8 workers, but the cluster "local" has the NumWorkers property set to allow a maximum of 4 workers. To run a communicating job on

more workers than this (up to a maximum of 512 for the Local cluster), increase the value of the NumWorkers property for the cluster. The default value of

NumWorkers for a Local cluster is the number of cores on the local machine.

How can I allocate all 8 logical cores for matlab to use when running parfor.m for example? i.e. how can I make MATLAB use/ not use hyperthreading?

thanks

##### 0 Comments

### Accepted Answer

Jill Reese
on 9 Apr 2014

Edited: MathWorks Support Team
on 1 Sep 2022 at 13:55

##### 9 Comments

Kay Gemba
on 19 May 2016

Jeff, the 'additional' 4 logical cores share their resources with the actual 4 cores. Hence using 8 will not help when maxing out the resources. Manufactures thus can then sell you '8' cores ;)

~kai

### More Answers (1)

John Videtich
on 13 Apr 2018

To resurrect an old thread, I ran a test on a machine with 24 cores / 48 logical (Xeon Gold 6146 x 2).

With 24 workers my calculation was taking 25.5 seconds. With 36 workers it was down to 21 seconds. With 40 workers it was down to 20.3. With 46 workers it was down to 19.8 seconds.

So it would seem hyperthreading does provide a real benefit - in this case, 22% reduction. I'm sure it's workload-dependent.

##### 1 Comment

Shifan Gao
on 8 May 2018

### See Also

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!