forked from OSchip/llvm-project
[ThinLTO] Default backend threads to heavyweight_hardware_concurrency
Summary: Changes default backend parallelism from thread::hardware_concurrency to the new llvm::heavyweight_hardware_concurrency, which for X86 Linux defaults to the number of physical cores (and will fall back to thread::hardware_concurrency otherwise). This avoid oversubscribing the physical cores using hyperthreading. Reviewers: mehdi_amini, pcc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D25775 llvm-svn: 284618
This commit is contained in:
parent
69d7cf0d41
commit
ec544c552e
|
@ -29,6 +29,7 @@
|
|||
#include "llvm/Support/SourceMgr.h"
|
||||
#include "llvm/Support/TargetRegistry.h"
|
||||
#include "llvm/Support/ThreadPool.h"
|
||||
#include "llvm/Support/Threading.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
|
@ -227,7 +228,8 @@ LTO::RegularLTOState::RegularLTOState(unsigned ParallelCodeGenParallelismLevel,
|
|||
|
||||
LTO::ThinLTOState::ThinLTOState(ThinBackend Backend) : Backend(Backend) {
|
||||
if (!Backend)
|
||||
this->Backend = createInProcessThinBackend(thread::hardware_concurrency());
|
||||
this->Backend =
|
||||
createInProcessThinBackend(llvm::heavyweight_hardware_concurrency());
|
||||
}
|
||||
|
||||
LTO::LTO(Config Conf, ThinBackend Backend,
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "llvm/Support/SHA1.h"
|
||||
#include "llvm/Support/TargetRegistry.h"
|
||||
#include "llvm/Support/ThreadPool.h"
|
||||
#include "llvm/Support/Threading.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Transforms/IPO.h"
|
||||
#include "llvm/Transforms/IPO/FunctionImport.h"
|
||||
|
@ -64,8 +65,8 @@ extern cl::opt<bool> LTODiscardValueNames;
|
|||
|
||||
namespace {
|
||||
|
||||
static cl::opt<int> ThreadCount("threads",
|
||||
cl::init(std::thread::hardware_concurrency()));
|
||||
static cl::opt<int>
|
||||
ThreadCount("threads", cl::init(llvm::heavyweight_hardware_concurrency()));
|
||||
|
||||
static void diagnosticHandler(const DiagnosticInfo &DI) {
|
||||
DiagnosticPrinterRawOStream DP(errs());
|
||||
|
|
|
@ -118,8 +118,8 @@ namespace options {
|
|||
static unsigned OptLevel = 2;
|
||||
// Default parallelism of 0 used to indicate that user did not specify.
|
||||
// Actual parallelism default value depends on implementation.
|
||||
// Currently only affects ThinLTO, where the default is the
|
||||
// hardware_concurrency.
|
||||
// Currently only affects ThinLTO, where the default is
|
||||
// llvm::heavyweight_hardware_concurrency.
|
||||
static unsigned Parallelism = 0;
|
||||
// Default regular LTO codegen parallelism (number of partitions).
|
||||
static unsigned ParallelCodeGenParallelismLevel = 1;
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "llvm/LTO/LTO.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/TargetSelect.h"
|
||||
#include "llvm/Support/Threading.h"
|
||||
|
||||
using namespace llvm;
|
||||
using namespace lto;
|
||||
|
@ -52,7 +53,7 @@ static cl::opt<bool>
|
|||
"distributed backend case"));
|
||||
|
||||
static cl::opt<int> Threads("-thinlto-threads",
|
||||
cl::init(thread::hardware_concurrency()));
|
||||
cl::init(llvm::heavyweight_hardware_concurrency()));
|
||||
|
||||
static cl::list<std::string> SymbolResolutions(
|
||||
"r",
|
||||
|
|
Loading…
Reference in New Issue