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
