[all-commits] [llvm/llvm-project] 336ab2: [Support] On Windows, take the affinity mask into ...
Alexandre Ganea via All-commits
all-commits at lists.llvm.org
Wed Jan 13 18:00:39 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 336ab2d51dfdd5ca09c2a9c506453db4fe653584
https://github.com/llvm/llvm-project/commit/336ab2d51dfdd5ca09c2a9c506453db4fe653584
Author: Alexandre Ganea <alexandre.ganea at ubisoft.com>
Date: 2021-01-13 (Wed, 13 Jan 2021)
Changed paths:
M llvm/include/llvm/Support/Program.h
M llvm/lib/Support/Program.cpp
M llvm/lib/Support/Unix/Program.inc
M llvm/lib/Support/Windows/Program.inc
M llvm/lib/Support/Windows/Threading.inc
M llvm/unittests/Support/ThreadPool.cpp
Log Message:
-----------
[Support] On Windows, take the affinity mask into account
The number of hardware threads available to a ThreadPool can be limited if setting an affinity mask.
For example:
> start /B /AFFINITY 0xF lld-link.exe ...
Would let LLD only use 4 hyper-threads.
Previously, there was an outstanding issue on Windows Server 2019 on dual-CPU machines, which was preventing from using both CPU sockets. In normal conditions, when no affinity mask was set, ProcessorGroup::AllThreads was different from ProcessorGroup::UsableThreads. The previous code in llvm/lib/Support/Windows/Threading.inc L201 was improperly assuming those two values to be equal, and consequently was limiting the execution to only one CPU socket.
Differential Revision: https://reviews.llvm.org/D92419
More information about the All-commits
mailing list