maxNumCompThreads() is limited to 1 on a multi-CPU Linux system

60 views (last 30 days)
Issue:
>> maxNumCompThreads()
ans =
1
Steps taken:
1) Fresh network install of R2024b and R2025b in default folder using sudo
2) All available toolboxes (including Parallel Computing Toolbox) were installed.
3) Other non-MATLAB software using multithreading runs fine and can utilize all available CPUs
Question
Has anybody experienced similar issue before please? The lscpu shows "Core(s) per socket: 1" with 24 sockets available. "cat /proc/cpuinfo | grep "physical id" outputs 24 lines all pointing to physical ID: 0. Could it be because of the one-core-per-socket split?
Importantly, other multiprocessing tools, for instance python-based torch implementations, or tools like MRtrix, all recognize 24 cores without any problems.
I will appreciate any help on this.
Many thanks in advance!
Supporting information
System specifications
% Operating system: Debian GNU/Linux 12 (bookworm) x86_64
% Kernel: 6.1.0-41-amd64
CPU specifications (given by lscpu):
% Architecture: x86_64
% CPU op-mode(s): 32-bit, 64-bit
% Address sizes: 46 bits physical, 48 bits virtual
% Byte Order: Little Endian
% CPU(s): 24
% On-line CPU(s) list: 0-23
% Vendor ID: GenuineIntel
% Model name: Intel(R) Core(TM) Ultra 9 285
% CPU family: 6
% Model: 198
% Thread(s) per core: 1
% Core(s) per socket: 1
% Socket(s): 24
% Stepping: 2
% CPU(s) scaling MHz: 19%
% CPU max MHz: 7000.0000
% CPU min MHz: 800.0000
% BogoMIPS: 4992.00
"cat /proc/cpuinfo | grep "physical id"
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
physical id : 0
  5 Comments
Daniel
Daniel on 26 Nov 2025 at 14:40
Thank you Walter for your help, your input guided me into the right direction and looking deeper into the local parpool cluster.

Sign in to comment.

Accepted Answer

Daniel
Daniel on 26 Nov 2025 at 14:35
Edited: Daniel on 3 Dec 2025 at 7:26
I think I solved it. The solution involved:
1) adjust the number of workers within the local cluster
c = parcluster('local');
c.NumWorkers = 24;
2) save the adjusted cluster profile
saveProfile(c)
3) stop parpool and restart
delete(gcp('nocreate'));
parpool
The NumWorkers within the parcluster('local') was set to 1 by default. Same for the number of threads. With the procedure above, I managed to spawn the desired amount of parallel workers.
*EDIT: removing an unnecessary step from the solution.

More Answers (0)

Categories

Find more on Introduction to Installation and Licensing in Help Center and File Exchange

Products


Release

R2025b

Community Treasure Hunt

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

Start Hunting!