www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 19577] New: std.parallelism unable to use more than 64 cores

https://issues.dlang.org/show_bug.cgi?id=19577

          Issue ID: 19577
           Summary: std.parallelism unable to use more than 64 cores
           Product: D
           Version: D2
          Hardware: x86_64
               URL: http://dlang.org/phobos/
                OS: Windows
            Status: NEW
          Severity: enhancement
          Priority: P3
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: crayolist gmail.com

Currently std.parallelism.totalCPUs on Windows is implemented using the system
call GetSystemInfo() which can return a maximum of 64 cores.
On a Xeon Phi 7250 system with 272 cores it is impossible to exploit all cores.

TBB (Threading building blocks) uses the Processor Groups to correctly identify
all cores, like this;
https://github.com/01org/tbb/blob/314792356bf75f4a190277536aea543b9b6b310b/src/tbb/tbb_misc_ex.cpp#L241

A Xeon Phi 7250 which has 68 cores and 4 threads per core is reported as 5
Processor Groups; 4 x 64 cores + 1 x 16 cores.

--
Jan 11