Skip to content

Commit 9360430

Browse files
committed
Revert "Reapply "[AMDGPU][OpenMP] Add amdgpu-arch tool to list AMD GPUs installed""
This reverts commit 15be0c4.
1 parent 6d78c38 commit 9360430

File tree

14 files changed

+8
-267
lines changed

14 files changed

+8
-267
lines changed

clang/include/clang/Basic/DiagnosticDriverKinds.td

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ def err_drv_no_hip_runtime : Error<
6767
"cannot find HIP runtime. Provide its path via --rocm-path, or pass "
6868
"-nogpuinc to build without HIP runtime.">;
6969

70-
def err_drv_undetermined_amdgpu_arch : Error<
71-
"Cannot determine AMDGPU architecture: %0. Consider passing it via --march.">;
7270
def err_drv_cuda_version_unsupported : Error<
7371
"GPU arch %0 is supported by CUDA versions between %1 and %2 (inclusive), "
7472
"but installation at %3 is %4. Use --cuda-path to specify a different CUDA "

clang/include/clang/Driver/Options.td

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -924,8 +924,6 @@ def rocm_path_EQ : Joined<["--"], "rocm-path=">, Group<i_Group>,
924924
HelpText<"ROCm installation path, used for finding and automatically linking required bitcode libraries.">;
925925
def hip_path_EQ : Joined<["--"], "hip-path=">, Group<i_Group>,
926926
HelpText<"HIP runtime installation path, used for finding HIP version and adding HIP include path.">;
927-
def amdgpu_arch_tool_EQ : Joined<["--"], "amdgpu-arch-tool=">, Group<i_Group>,
928-
HelpText<"Tool used for detecting AMD GPU arch in the system.">;
929927
def rocm_device_lib_path_EQ : Joined<["--"], "rocm-device-lib-path=">, Group<Link_Group>,
930928
HelpText<"ROCm device library path. Alternative to rocm-path.">;
931929
def : Joined<["--"], "hip-device-lib-path=">, Alias<rocm_device_lib_path_EQ>;

clang/lib/Driver/ToolChains/AMDGPU.cpp

Lines changed: 0 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,9 @@
1212
#include "clang/Basic/TargetID.h"
1313
#include "clang/Driver/Compilation.h"
1414
#include "clang/Driver/DriverDiagnostic.h"
15-
#include "clang/Driver/Options.h"
1615
#include "llvm/Option/ArgList.h"
17-
#include "llvm/Support/Error.h"
18-
#include "llvm/Support/FileUtilities.h"
19-
#include "llvm/Support/LineIterator.h"
2016
#include "llvm/Support/Path.h"
2117
#include "llvm/Support/VirtualFileSystem.h"
22-
#include <system_error>
23-
24-
#define AMDGPU_ARCH_PROGRAM_NAME "amdgpu-arch"
2518

2619
using namespace clang::driver;
2720
using namespace clang::driver::tools;
@@ -722,78 +715,6 @@ void AMDGPUToolChain::checkTargetID(
722715
}
723716
}
724717

725-
llvm::Error
726-
AMDGPUToolChain::detectSystemGPUs(const ArgList &Args,
727-
SmallVector<std::string, 1> &GPUArchs) const {
728-
std::string Program;
729-
if (Arg *A = Args.getLastArg(options::OPT_amdgpu_arch_tool_EQ))
730-
Program = A->getValue();
731-
else
732-
Program = GetProgramPath(AMDGPU_ARCH_PROGRAM_NAME);
733-
llvm::SmallString<64> OutputFile;
734-
llvm::sys::fs::createTemporaryFile("print-system-gpus", "" /* No Suffix */,
735-
OutputFile);
736-
llvm::FileRemover OutputRemover(OutputFile.c_str());
737-
llvm::Optional<llvm::StringRef> Redirects[] = {
738-
{""},
739-
StringRef(OutputFile),
740-
{""},
741-
};
742-
743-
std::string ErrorMessage;
744-
if (int Result = llvm::sys::ExecuteAndWait(
745-
Program.c_str(), {}, {}, Redirects, /* SecondsToWait */ 0,
746-
/*MemoryLimit*/ 0, &ErrorMessage)) {
747-
if (Result > 0) {
748-
ErrorMessage = "Exited with error code " + std::to_string(Result);
749-
} else if (Result == -1) {
750-
ErrorMessage = "Execute failed: " + ErrorMessage;
751-
} else {
752-
ErrorMessage = "Crashed: " + ErrorMessage;
753-
}
754-
755-
return llvm::createStringError(std::error_code(),
756-
Program + ": " + ErrorMessage);
757-
}
758-
759-
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> OutputBuf =
760-
llvm::MemoryBuffer::getFile(OutputFile.c_str());
761-
if (!OutputBuf) {
762-
return llvm::createStringError(OutputBuf.getError(),
763-
"Failed to read stdout of " + Program +
764-
": " + OutputBuf.getError().message());
765-
}
766-
767-
for (llvm::line_iterator LineIt(**OutputBuf); !LineIt.is_at_end(); ++LineIt) {
768-
GPUArchs.push_back(LineIt->str());
769-
}
770-
return llvm::Error::success();
771-
}
772-
773-
llvm::Error AMDGPUToolChain::getSystemGPUArch(const ArgList &Args,
774-
std::string &GPUArch) const {
775-
// detect the AMDGPU installed in system
776-
SmallVector<std::string, 1> GPUArchs;
777-
auto Err = detectSystemGPUs(Args, GPUArchs);
778-
if (Err) {
779-
return Err;
780-
}
781-
if (GPUArchs.empty()) {
782-
return llvm::createStringError(std::error_code(),
783-
"No AMD GPU detected in the system");
784-
}
785-
GPUArch = GPUArchs[0];
786-
if (GPUArchs.size() > 1) {
787-
bool AllSame = std::all_of(
788-
GPUArchs.begin(), GPUArchs.end(),
789-
[&](const StringRef &GPUArch) { return GPUArch == GPUArchs.front(); });
790-
if (!AllSame)
791-
return llvm::createStringError(
792-
std::error_code(), "Multiple AMD GPUs found with different archs");
793-
}
794-
return llvm::Error::success();
795-
}
796-
797718
void ROCMToolChain::addClangTargetOptions(
798719
const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
799720
Action::OffloadKind DeviceOffloadingKind) const {

clang/lib/Driver/ToolChains/AMDGPU.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -100,20 +100,12 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUToolChain : public Generic_ELF {
100100
/// Should skip argument.
101101
bool shouldSkipArgument(const llvm::opt::Arg *Arg) const;
102102

103-
/// Uses amdgpu_arch tool to get arch of the system GPU. Will return error
104-
/// if unable to find one.
105-
llvm::Error getSystemGPUArch(const llvm::opt::ArgList &Args,
106-
std::string &GPUArch) const;
107-
108103
protected:
109104
/// Check and diagnose invalid target ID specified by -mcpu.
110105
void checkTargetID(const llvm::opt::ArgList &DriverArgs) const;
111106

112107
/// Get GPU arch from -mcpu without checking.
113108
StringRef getGPUArch(const llvm::opt::ArgList &DriverArgs) const;
114-
115-
llvm::Error detectSystemGPUs(const llvm::opt::ArgList &Args,
116-
SmallVector<std::string, 1> &GPUArchs) const;
117109
};
118110

119111
class LLVM_LIBRARY_VISIBILITY ROCMToolChain : public AMDGPUToolChain {

clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,11 @@
1010
#include "AMDGPU.h"
1111
#include "CommonArgs.h"
1212
#include "InputInfo.h"
13-
#include "clang/Basic/DiagnosticDriver.h"
1413
#include "clang/Driver/Compilation.h"
1514
#include "clang/Driver/Driver.h"
1615
#include "clang/Driver/DriverDiagnostic.h"
1716
#include "clang/Driver/Options.h"
1817
#include "llvm/Support/FileSystem.h"
19-
#include "llvm/Support/FormatAdapters.h"
20-
#include "llvm/Support/FormatVariadic.h"
2118
#include "llvm/Support/Path.h"
2219

2320
using namespace clang::driver;
@@ -69,18 +66,6 @@ static void addLLCOptArg(const llvm::opt::ArgList &Args,
6966
CmdArgs.push_back(Args.MakeArgString("-O" + OOpt));
7067
}
7168
}
72-
73-
static bool checkSystemForAMDGPU(const ArgList &Args, const AMDGPUToolChain &TC,
74-
std::string &GPUArch) {
75-
if (auto Err = TC.getSystemGPUArch(Args, GPUArch)) {
76-
std::string ErrMsg =
77-
llvm::formatv("{0}", llvm::fmt_consume(std::move(Err)));
78-
TC.getDriver().Diag(diag::err_drv_undetermined_amdgpu_arch) << ErrMsg;
79-
return false;
80-
}
81-
82-
return true;
83-
}
8469
} // namespace
8570

8671
const char *AMDGCN::OpenMPLinker::constructLLVMLinkCommand(
@@ -160,23 +145,17 @@ void AMDGCN::OpenMPLinker::ConstructJob(Compilation &C, const JobAction &JA,
160145
const InputInfoList &Inputs,
161146
const ArgList &Args,
162147
const char *LinkingOutput) const {
163-
const ToolChain &TC = getToolChain();
164148
assert(getToolChain().getTriple().isAMDGCN() && "Unsupported target");
165149

166-
const toolchains::AMDGPUOpenMPToolChain &AMDGPUOpenMPTC =
167-
static_cast<const toolchains::AMDGPUOpenMPToolChain &>(TC);
168-
169-
std::string GPUArch = Args.getLastArgValue(options::OPT_march_EQ).str();
170-
if (GPUArch.empty()) {
171-
if (!checkSystemForAMDGPU(Args, AMDGPUOpenMPTC, GPUArch))
172-
return;
173-
}
150+
StringRef GPUArch = Args.getLastArgValue(options::OPT_march_EQ);
151+
assert(GPUArch.startswith("gfx") && "Unsupported sub arch");
174152

175153
// Prefix for temporary file name.
176154
std::string Prefix;
177155
for (const auto &II : Inputs)
178156
if (II.isFilename())
179-
Prefix = llvm::sys::path::stem(II.getFilename()).str() + "-" + GPUArch;
157+
Prefix =
158+
llvm::sys::path::stem(II.getFilename()).str() + "-" + GPUArch.str();
180159
assert(Prefix.length() && "no linker inputs are files ");
181160

182161
// Each command outputs different files.
@@ -207,22 +186,18 @@ void AMDGPUOpenMPToolChain::addClangTargetOptions(
207186
Action::OffloadKind DeviceOffloadingKind) const {
208187
HostTC.addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadingKind);
209188

210-
std::string GPUArch = DriverArgs.getLastArgValue(options::OPT_march_EQ).str();
211-
if (GPUArch.empty()) {
212-
if (!checkSystemForAMDGPU(DriverArgs, *this, GPUArch))
213-
return;
214-
}
215-
189+
StringRef GpuArch = DriverArgs.getLastArgValue(options::OPT_march_EQ);
190+
assert(!GpuArch.empty() && "Must have an explicit GPU arch.");
216191
assert(DeviceOffloadingKind == Action::OFK_OpenMP &&
217192
"Only OpenMP offloading kinds are supported.");
218193

219194
CC1Args.push_back("-target-cpu");
220-
CC1Args.push_back(DriverArgs.MakeArgStringRef(GPUArch));
195+
CC1Args.push_back(DriverArgs.MakeArgStringRef(GpuArch));
221196
CC1Args.push_back("-fcuda-is-device");
222197

223198
if (DriverArgs.hasArg(options::OPT_nogpulib))
224199
return;
225-
std::string BitcodeSuffix = "amdgcn-" + GPUArch;
200+
std::string BitcodeSuffix = "amdgcn-" + GpuArch.str();
226201
addOpenMPDeviceRTL(getDriver(), DriverArgs, CC1Args, BitcodeSuffix,
227202
getTriple());
228203
}

clang/test/Driver/Inputs/amdgpu-arch/amdgpu_arch_different

Lines changed: 0 additions & 4 deletions
This file was deleted.

clang/test/Driver/Inputs/amdgpu-arch/amdgpu_arch_fail

Lines changed: 0 additions & 2 deletions
This file was deleted.

clang/test/Driver/Inputs/amdgpu-arch/amdgpu_arch_gfx906

Lines changed: 0 additions & 3 deletions
This file was deleted.

clang/test/Driver/Inputs/amdgpu-arch/amdgpu_arch_gfx908_gfx908

Lines changed: 0 additions & 4 deletions
This file was deleted.

clang/test/Driver/amdgpu-openmp-system-arch-fail.c

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)