aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorJoseph Huber <jhuber6@vols.utk.edu>2021-10-07 15:43:56 -0400
committerJoseph Huber <jhuber6@vols.utk.edu>2021-10-07 22:23:09 -0400
commit9efdca87c78256bb00ed51521272dec2deed7f23 (patch)
tree0a7e746c368902a04c88efff3c2eb711f1582666 /clang/lib/Frontend/CompilerInvocation.cpp
parentaf4599b8abcaff02450449a22a7206dbb694b952 (diff)
downloadllvm-9efdca87c78256bb00ed51521272dec2deed7f23.zip
llvm-9efdca87c78256bb00ed51521272dec2deed7f23.tar.gz
llvm-9efdca87c78256bb00ed51521272dec2deed7f23.tar.bz2
[OpenMP] Introduce new flags to assert thread and team usage in the runtime
This patch adds two flags to be supported for the new runtime. The flags are `-fopenmp-assume-threads-oversubscription` and -fopenmp-assume-teams-oversubscription`. These add global values that can be checked by the work sharing runtime functions to make better judgements about how to distribute work between the threads. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D111348
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index e9eed36..34cbb7a 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -3486,6 +3486,12 @@ void CompilerInvocation::GenerateLangArgs(const LangOptions &Opts,
if (Opts.OpenMPTargetNewRuntime)
GenerateArg(Args, OPT_fopenmp_target_new_runtime, SA);
+ if (Opts.OpenMPThreadSubscription)
+ GenerateArg(Args, OPT_fopenmp_assume_threads_oversubscription, SA);
+
+ if (Opts.OpenMPTeamSubscription)
+ GenerateArg(Args, OPT_fopenmp_assume_teams_oversubscription, SA);
+
if (Opts.OpenMPTargetDebug != 0)
GenerateArg(Args, OPT_fopenmp_target_debug_EQ,
Twine(Opts.OpenMPTargetDebug), SA);
@@ -3928,6 +3934,13 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
}
}
+ if (Opts.OpenMPIsDevice && Opts.OpenMPTargetNewRuntime) {
+ if (Args.hasArg(OPT_fopenmp_assume_teams_oversubscription))
+ Opts.OpenMPTeamSubscription = true;
+ if (Args.hasArg(OPT_fopenmp_assume_threads_oversubscription))
+ Opts.OpenMPThreadSubscription = true;
+ }
+
// Get the OpenMP target triples if any.
if (Arg *A = Args.getLastArg(options::OPT_fopenmp_targets_EQ)) {
enum ArchPtrSize { Arch16Bit, Arch32Bit, Arch64Bit };