Skip to content

Commit

Permalink
Revert [mlir][Target] Improve ROCDL gpu serialization API (llvm#95790)
Browse files Browse the repository at this point in the history
Reverts llvm#95456
  • Loading branch information
fabianmcg committed Jun 17, 2024
1 parent 4bf160e commit 57b8be4
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 193 deletions.
41 changes: 10 additions & 31 deletions mlir/include/mlir/Target/LLVM/ROCDL/Utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,6 @@ namespace ROCDL {
/// 5. Returns an empty string.
StringRef getROCMPath();

/// Helper enum for specifying the AMD GCN device libraries required for
/// compilation.
enum class AMDGCNLibraries : uint32_t {
None = 0,
Ockl = 1,
Ocml = 2,
OpenCL = 4,
Hip = 8,
LastLib = Hip,
LLVM_MARK_AS_BITMASK_ENUM(LastLib),
All = (LastLib << 1) - 1
};

/// Base class for all ROCDL serializations from GPU modules into binary
/// strings. By default this class serializes into LLVM bitcode.
class SerializeGPUModuleBase : public LLVM::ModuleToObject {
Expand All @@ -62,8 +49,8 @@ class SerializeGPUModuleBase : public LLVM::ModuleToObject {
/// Returns the bitcode files to be loaded.
ArrayRef<std::string> getFileList() const;

/// Appends standard ROCm device libraries to `fileList`.
LogicalResult appendStandardLibs(AMDGCNLibraries libs);
/// Appends standard ROCm device libraries like `ocml.bc`, `ockl.bc`, etc.
LogicalResult appendStandardLibs();

/// Loads the bitcode files in `fileList`.
virtual std::optional<SmallVector<std::unique_ptr<llvm::Module>>>
Expand All @@ -76,20 +63,15 @@ class SerializeGPUModuleBase : public LLVM::ModuleToObject {
LogicalResult handleBitcodeFile(llvm::Module &module) override;

protected:
/// Adds `oclc` control variables to the LLVM module.
void addControlVariables(llvm::Module &module, AMDGCNLibraries libs,
bool wave64, bool daz, bool finiteOnly,
bool unsafeMath, bool fastMath, bool correctSqrt,
StringRef abiVer);
/// Appends the paths of common ROCm device libraries to `libs`.
LogicalResult getCommonBitcodeLibs(llvm::SmallVector<std::string> &libs,
SmallVector<char, 256> &libPath,
StringRef isaVersion);

/// Compiles assembly to a binary.
virtual std::optional<SmallVector<char, 0>>
compileToBinary(const std::string &serializedISA);

/// Default implementation of `ModuleToObject::moduleToObject`.
std::optional<SmallVector<char, 0>>
moduleToObjectImpl(const gpu::TargetOptions &targetOptions,
llvm::Module &llvmModule);
/// Adds `oclc` control variables to the LLVM module.
void addControlVariables(llvm::Module &module, bool wave64, bool daz,
bool finiteOnly, bool unsafeMath, bool fastMath,
bool correctSqrt, StringRef abiVer);

/// Returns the assembled ISA.
std::optional<SmallVector<char, 0>> assembleIsa(StringRef isa);
Expand All @@ -102,9 +84,6 @@ class SerializeGPUModuleBase : public LLVM::ModuleToObject {

/// List of LLVM bitcode files to link to.
SmallVector<std::string> fileList;

/// AMD GCN libraries to use when linking, the default is using none.
AMDGCNLibraries deviceLibs = AMDGCNLibraries::None;
};
} // namespace ROCDL
} // namespace mlir
Expand Down
2 changes: 1 addition & 1 deletion mlir/lib/Dialect/GPU/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ if(MLIR_ENABLE_ROCM_CONVERSIONS)
"Building mlir with ROCm support requires the AMDGPU backend")
endif()

set(DEFAULT_ROCM_PATH "" CACHE PATH "Fallback path to search for ROCm installs")
set(DEFAULT_ROCM_PATH "/opt/rocm" CACHE PATH "Fallback path to search for ROCm installs")
target_compile_definitions(obj.MLIRGPUTransforms
PRIVATE
__DEFAULT_ROCM_PATH__="${DEFAULT_ROCM_PATH}"
Expand Down
7 changes: 6 additions & 1 deletion mlir/lib/Target/LLVM/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,17 @@ add_mlir_dialect_library(MLIRROCDLTarget
)

if(MLIR_ENABLE_ROCM_CONVERSIONS)
if (NOT ("AMDGPU" IN_LIST LLVM_TARGETS_TO_BUILD))
message(SEND_ERROR
"Building mlir with ROCm support requires the AMDGPU backend")
endif()

if (DEFINED ROCM_PATH)
set(DEFAULT_ROCM_PATH "${ROCM_PATH}" CACHE PATH "Fallback path to search for ROCm installs")
elseif(DEFINED ENV{ROCM_PATH})
set(DEFAULT_ROCM_PATH "$ENV{ROCM_PATH}" CACHE PATH "Fallback path to search for ROCm installs")
else()
set(DEFAULT_ROCM_PATH "" CACHE PATH "Fallback path to search for ROCm installs")
set(DEFAULT_ROCM_PATH "/opt/rocm" CACHE PATH "Fallback path to search for ROCm installs")
endif()
message(VERBOSE "MLIR Default ROCM toolkit path: ${DEFAULT_ROCM_PATH}")

Expand Down
Loading

0 comments on commit 57b8be4

Please sign in to comment.