mirror of
https://github.com/intel/llvm.git
synced 2026-01-26 12:26:52 +08:00
Use sched_getaffinity instead of std::thread::hardware_concurrency.
The issue with std::thread::hardware_concurrency is that it forwards to libc and some implementations (like glibc) don't take thread affinity into consideration. With this change a llvm program that can execute in only 2 cores will use 2 threads, even if the machine has 32 cores. This makes benchmarking a lot easier, but should also help if someone doesn't want to use all cores for compilation for example. llvm-svn: 314810
This commit is contained in:
@@ -2240,8 +2240,8 @@ void MergeNoTailSection::finalizeContents() {
|
||||
// operations in the following tight loop.
|
||||
size_t Concurrency = 1;
|
||||
if (Config->Threads)
|
||||
if (int N = std::thread::hardware_concurrency())
|
||||
Concurrency = std::min<size_t>(PowerOf2Floor(N), NumShards);
|
||||
Concurrency =
|
||||
std::min<size_t>(PowerOf2Floor(hardware_concurrency()), NumShards);
|
||||
|
||||
// Add section pieces to the builders.
|
||||
parallelForEachN(0, Concurrency, [&](size_t ThreadId) {
|
||||
|
||||
Reference in New Issue
Block a user