From 773d4a4398cc04012812c043b2d120b0bcf1ecc0 Mon Sep 17 00:00:00 2001 From: zhangxiao-stack Date: Sat, 8 Jul 2023 02:57:06 +0000 Subject: [PATCH 1/2] rocm bug fix:Module hip should be either dso exportable or binary serializable rocm bug fix: llvm.amdgcn.ds.bpermute Intrinsic has incorrect return type rocm bug fix:ptr addrspace(3) @shmem Global is external, but doesn't have external or weak linkage Co-authored-by: zhangxiao-stack <1244360827@qq.com> --- src/runtime/rocm/rocm_module.cc | 4 +++- src/target/llvm/codegen_llvm.cc | 2 +- src/tir/transforms/lower_thread_allreduce.cc | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/runtime/rocm/rocm_module.cc b/src/runtime/rocm/rocm_module.cc index cf3530c0afce..9acd1ca903d1 100644 --- a/src/runtime/rocm/rocm_module.cc +++ b/src/runtime/rocm/rocm_module.cc @@ -63,7 +63,9 @@ class ROCMModuleNode : public runtime::ModuleNode { } const char* type_key() const final { return "hip"; } - + int GetPropertyMask() const final { + return ModulePropertyMask::kBinarySerializable | ModulePropertyMask::kRunnable; + } PackedFunc GetFunction(const String& name, const ObjectPtr& sptr_to_self) final; void SaveToFile(const String& file_name, const String& format) final { diff --git a/src/target/llvm/codegen_llvm.cc b/src/target/llvm/codegen_llvm.cc index 67c81d2803b6..714d351a2193 100644 --- a/src/target/llvm/codegen_llvm.cc +++ b/src/target/llvm/codegen_llvm.cc @@ -702,7 +702,7 @@ llvm::GlobalVariable* CodeGenLLVM::AllocateSharedMemory(DataType dtype, size_t s llvm::GlobalValue::LinkageTypes linkage) { llvm::Type* type = llvm::ArrayType::get(DTypeToLLVMType(dtype), size); llvm::GlobalVariable* global = - new llvm::GlobalVariable(*module_, type, false, linkage, nullptr, "shmem", nullptr, + new llvm::GlobalVariable(*module_, type, false, linkage, llvm::UndefValue::get(type), "shmem", nullptr, llvm::GlobalValue::NotThreadLocal, shared_address_space); #if TVM_LLVM_VERSION >= 100 global->setAlignment(llvm::Align(alignment)); diff --git a/src/tir/transforms/lower_thread_allreduce.cc b/src/tir/transforms/lower_thread_allreduce.cc index fba62a0c18ac..abc288f0eb24 100644 --- a/src/tir/transforms/lower_thread_allreduce.cc +++ b/src/tir/transforms/lower_thread_allreduce.cc @@ -729,7 +729,7 @@ class ThreadAllreduceBuilder final : public StmtExprMutator { // rocm only supports 32 bit operands for shuffling at the moment if ((target_->kind->name == "rocm") && (std::any_of(types.begin(), types.end(), [](DataType ty) { - if (ty.is_vector()) return true; + if ((ty.is_vector()) || !ty.is_int()) return true; return ty.bits() != 32; }))) { return false; From c43be8b5be1e14034094f9b715a3798e628a34e0 Mon Sep 17 00:00:00 2001 From: spectrometerHBH Date: Tue, 1 Aug 2023 22:38:03 -0400 Subject: [PATCH 2/2] lint --- src/target/llvm/codegen_llvm.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/target/llvm/codegen_llvm.cc b/src/target/llvm/codegen_llvm.cc index 714d351a2193..02d203b7e97a 100644 --- a/src/target/llvm/codegen_llvm.cc +++ b/src/target/llvm/codegen_llvm.cc @@ -702,8 +702,8 @@ llvm::GlobalVariable* CodeGenLLVM::AllocateSharedMemory(DataType dtype, size_t s llvm::GlobalValue::LinkageTypes linkage) { llvm::Type* type = llvm::ArrayType::get(DTypeToLLVMType(dtype), size); llvm::GlobalVariable* global = - new llvm::GlobalVariable(*module_, type, false, linkage, llvm::UndefValue::get(type), "shmem", nullptr, - llvm::GlobalValue::NotThreadLocal, shared_address_space); + new llvm::GlobalVariable(*module_, type, false, linkage, llvm::UndefValue::get(type), "shmem", + nullptr, llvm::GlobalValue::NotThreadLocal, shared_address_space); #if TVM_LLVM_VERSION >= 100 global->setAlignment(llvm::Align(alignment)); #else