[clang] 9332f1e - [Clang] add option --offload-jobs=N (#135229)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 14 14:08:32 PDT 2025
Author: Yaxun (Sam) Liu
Date: 2025-04-14T17:08:28-04:00
New Revision: 9332f1ea57fb7486c79003eaff43d27bfedea1af
URL: https://github.com/llvm/llvm-project/commit/9332f1ea57fb7486c79003eaff43d27bfedea1af
DIFF: https://github.com/llvm/llvm-project/commit/9332f1ea57fb7486c79003eaff43d27bfedea1af.diff
LOG: [Clang] add option --offload-jobs=N (#135229)
for specifying number of threads for clang-linker-wrapper.
Added:
Modified:
clang/include/clang/Driver/Options.td
clang/lib/Driver/ToolChains/Clang.cpp
clang/test/Driver/hip-options.hip
Removed:
################################################################################
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index a9f3912e0773a..c9d2bc5e81976 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -1234,6 +1234,10 @@ def offload_compression_level_EQ : Joined<["--"], "offload-compression-level=">,
Flags<[HelpHidden]>,
HelpText<"Compression level for offload device binaries (HIP only)">;
+def offload_jobs_EQ : Joined<["--"], "offload-jobs=">,
+ HelpText<"Specify the number of threads to use for device offloading tasks"
+ " during compilation.">;
+
defm offload_via_llvm : BoolFOption<"offload-via-llvm",
LangOpts<"OffloadViaLLVM">, DefaultFalse,
PosFlag<SetTrue, [], [ClangOption, CC1Option], "Use">,
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 1de83baacff93..a330972045550 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -1031,6 +1031,7 @@ void Clang::AddPreprocessingOptions(Compilation &C, const JobAction &JA,
if (JA.isOffloading(Action::OFK_HIP)) {
Args.ClaimAllArgs(options::OPT_offload_compress);
Args.ClaimAllArgs(options::OPT_no_offload_compress);
+ Args.ClaimAllArgs(options::OPT_offload_jobs_EQ);
}
bool HasTarget = false;
@@ -9361,6 +9362,18 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(LinkArg);
addOffloadCompressArgs(Args, CmdArgs);
+
+ if (Arg *A = Args.getLastArg(options::OPT_offload_jobs_EQ)) {
+ int NumThreads;
+ if (StringRef(A->getValue()).getAsInteger(10, NumThreads) ||
+ NumThreads <= 0)
+ C.getDriver().Diag(diag::err_drv_invalid_int_value)
+ << A->getAsString(Args) << A->getValue();
+ else
+ CmdArgs.push_back(
+ Args.MakeArgString("--wrapper-jobs=" + Twine(NumThreads)));
+ }
+
const char *Exec =
Args.MakeArgString(getToolChain().GetProgramPath("clang-linker-wrapper"));
diff --git a/clang/test/Driver/hip-options.hip b/clang/test/Driver/hip-options.hip
index 29d23c1b6c8d9..a07dca3638565 100644
--- a/clang/test/Driver/hip-options.hip
+++ b/clang/test/Driver/hip-options.hip
@@ -243,6 +243,19 @@
// NO-WARN-ATOMIC-NOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-Werror=atomic-alignment"
// NO-WARN-ATOMIC-NOT: clang{{.*}} "-triple" "x86_64-unknown-linux-gnu" {{.*}} "-Wno-error=atomic-alignment"
-// Check --offload-compress does not cause warning.
+// Check --offload-compress --offload-jobs=N does not cause warning.
// RUN: %clang -### -Werror --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
-// RUN: --offload-arch=gfx1100 --offload-compress --offload-host-only -M %s
+// RUN: --offload-arch=gfx1100 --offload-compress --offload-host-only -M %s \
+// RUN: --offload-jobs=4
+
+// Check --offload-jobs=N option.
+
+// RUN: %clang -### -Werror --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
+// RUN: --offload-arch=gfx1100 --offload-new-driver --offload-jobs=4 %s 2>&1 | \
+// RUN: FileCheck -check-prefix=JOBS %s
+// JOBS: clang-linker-wrapper{{.*}} "--wrapper-jobs=4"
+
+// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -nogpuinc -nogpulib \
+// RUN: --offload-arch=gfx1100 --offload-new-driver --offload-jobs=0x4 %s 2>&1 | \
+// RUN: FileCheck -check-prefix=INVJOBS %s
+// INVJOBS: clang: error: invalid integral value '0x4' in '--offload-jobs=0x4'
More information about the cfe-commits
mailing list