//
//===----------------------------------------------------------------------===//
+#include "clang/Basic/Version.h"
+#include "llvm/Support/CommandLine.h"
#include "llvm/Support/DynamicLibrary.h"
#include "llvm/Support/Error.h"
#include <memory>
#include <string>
#include <vector>
+using namespace llvm;
+
+static cl::opt<bool> Help("h", cl::desc("Alias for -help"), cl::Hidden);
+
+// Mark all our options with this category.
+static cl::OptionCategory AMDGPUArchCategory("amdgpu-arch options");
+
+static void PrintVersion(raw_ostream &OS) {
+ OS << clang::getClangToolFullVersion("amdgpu-arch") << '\n';
+}
+
#if DYNAMIC_HSA
typedef enum {
HSA_STATUS_SUCCESS = 0x0,
}
int main(int argc, char *argv[]) {
+ cl::HideUnrelatedOptions(AMDGPUArchCategory);
+
+ cl::SetVersionPrinter(PrintVersion);
+ cl::ParseCommandLineOptions(
+ argc, argv,
+ "A tool to detect the presence of AMDGPU devices on the system. \n\n"
+ "The tool will output each detected GPU architecture separated by a\n"
+ "newline character. If multiple GPUs of the same architecture are found\n"
+ "a string will be printed for each\n");
+
+ if (Help) {
+ cl::PrintHelpMessage();
+ return 0;
+ }
+
// Attempt to load the HSA runtime.
if (llvm::Error Err = loadHSA()) {
logAllUnhandledErrors(std::move(Err), llvm::errs());
if(hsa-runtime64_FOUND AND NOT (LLVM_BUILD_32_BITS OR CMAKE_SIZEOF_VOID_P EQUAL 4))
set_target_properties(amdgpu-arch PROPERTIES INSTALL_RPATH_USE_LINK_PATH ON)
target_link_libraries(amdgpu-arch PRIVATE hsa-runtime64::hsa-runtime64)
+ clang_target_link_libraries(amdgpu-arch PRIVATE clangBasic)
else()
target_compile_definitions(amdgpu-arch PRIVATE "DYNAMIC_HSA")
endif()
# If we found the CUDA library directly we just dynamically link against it.
if(CUDAToolkit_FOUND AND NOT (LLVM_BUILD_32_BITS OR CMAKE_SIZEOF_VOID_P EQUAL 4))
target_link_libraries(nvptx-arch PRIVATE CUDA::cuda_driver)
+ clang_target_link_libraries(nvptx-arch PRIVATE clangBasic)
else()
target_compile_definitions(nvptx-arch PRIVATE "DYNAMIC_CUDA")
endif()
//
//===----------------------------------------------------------------------===//
+#include "clang/Basic/Version.h"
+#include "llvm/Support/CommandLine.h"
#include "llvm/Support/DynamicLibrary.h"
#include "llvm/Support/Error.h"
#include <cstdint>
#include <cstdio>
#include <memory>
+using namespace llvm;
+
+static cl::opt<bool> Help("h", cl::desc("Alias for -help"), cl::Hidden);
+
+static void PrintVersion(raw_ostream &OS) {
+ OS << clang::getClangToolFullVersion("nvptx-arch") << '\n';
+}
+// Mark all our options with this category, everything else (except for -version
+// and -help) will be hidden.
+static cl::OptionCategory NVPTXArchCategory("nvptx-arch options");
+
#if DYNAMIC_CUDA
typedef enum cudaError_enum {
CUDA_SUCCESS = 0,
}
int main(int argc, char *argv[]) {
+ cl::HideUnrelatedOptions(NVPTXArchCategory);
+
+ cl::SetVersionPrinter(PrintVersion);
+ cl::ParseCommandLineOptions(
+ argc, argv,
+ "A tool to detect the presence of NVIDIA devices on the system. \n\n"
+ "The tool will output each detected GPU architecture separated by a\n"
+ "newline character. If multiple GPUs of the same architecture are found\n"
+ "a string will be printed for each\n");
+
+ if (Help) {
+ cl::PrintHelpMessage();
+ return 0;
+ }
+
// Attempt to load the NVPTX driver runtime.
if (llvm::Error Err = loadCUDA()) {
logAllUnhandledErrors(std::move(Err), llvm::errs());