Le 3 juil. 2013 à 17:05, Howard Hinnant <[email protected]> a écrit :

> 
> On Jul 3, 2013, at 12:35 AM, Chandler Carruth <[email protected]> wrote:
> 
>> On Tue, Jul 2, 2013 at 9:10 PM, Nico Rieck <[email protected]> wrote:
>> On 02.07.2013 23:55, Óscar Fuentes wrote:
>> Nico and Howard,
>> 
>> Nico Rieck <[email protected]> writes:
>> 
>> On 02.07.2013 19:53, Howard Hinnant wrote:
>> +#elif defined(_WIN32)
>> +    SYSTEM_INFO info;
>> +    GetSystemInfo(&info);
>> +    return info.dwNumberOfProcessors;
>>   #else  // defined(CTL_HW) && defined(HW_NCPU)
>> 
>> I'm not that familiar with the implementation for the other platforms,
>> but this snippet returns the number of logical processors. In my local
>> Windows port I use the number of cores, as I think that's more
>> appropriate. This is also what MSVCRT does on Windows.
>> 
>> As per my interpretation of the standard, returning the number of
>> logical processors is the right thing.
>> 
>> I checked VS2013 on a hyperthreaded machine and
>> std::thread::hardware_concurrency does just that. Same for
>> boost::thread::hardware_concurrency.
>> 
>> Did they change that? VS2012 uses GetLogicalProcessorInformation/Ex for 
>> Vista/7+, and GetSystemInfo below. Boost seems to use the latter.
>> And if people use this to (for example) determine the amount of threads to 
>> spawn, number of cores makes more sense to me.
>> 
>> No, just the opposite. You want to spawn a number of software threads based 
>> on how many hardware threads your system can handle. For hyperthreaded 
>> systems each core can handle two hardware threads so that's how many should 
>> be spawned.
> 
> Agreed this is the intent.
> 
> On Mac OS X, using an iMac equipped with a Core i5, this program:
> 
> #include <iostream>
> #include <thread>
> 
> int
> main()
> {
>    std::cout << std::thread::hardware_concurrency() << '\n';
> }
> 
> outputs:
> 
> 4
> 
> Howard
> 

FWIW, running the same code on a Core i7 (which is a quad-core with 
hyperthreading) outputs 8.

-- Jean-Daniel





_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to