mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-15 04:29:42 +00:00
2fd6403a6d
Summary: `mlir-rocm-runner` is introduced in this commit to execute GPU modules on ROCm platform. A small wrapper to encapsulate ROCm's HIP runtime API is also inside the commit. Due to behavior of ROCm, raw pointers inside memrefs passed to `gpu.launch` must be modified on the host side to properly capture the pointer values addressable on the GPU. LLVM MC is used to assemble AMD GCN ISA coming out from `ConvertGPUKernelToBlobPass` to binary form, and LLD is used to produce a shared ELF object which could be loaded by ROCm HIP runtime. gfx900 is the default target be used right now, although it could be altered via an option in `mlir-rocm-runner`. Future revisions may consider using ROCm Agent Enumerator to detect the right target on the system. Notice AMDGPU Code Object V2 is used in this revision. Future enhancements may upgrade to AMDGPU Code Object V3. Bitcode libraries in ROCm-Device-Libs, which implements math routines exposed in `rocdl` dialect are not yet linked, and is left as a TODO in the logic. Reviewers: herhut Subscribers: mgorny, tpr, dexonsmith, mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, csigg, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, stephenneuendorffer, Joonsoo, grosul1, frgossen, Kayjukh, jurahul, llvm-commits Tags: #mlir, #llvm Differential Revision: https://reviews.llvm.org/D80676
62 lines
2.5 KiB
Python
62 lines
2.5 KiB
Python
@LIT_SITE_CFG_IN_HEADER@
|
|
|
|
import sys
|
|
|
|
config.host_triple = "@LLVM_HOST_TRIPLE@"
|
|
config.target_triple = "@TARGET_TRIPLE@"
|
|
config.llvm_src_root = "@LLVM_SOURCE_DIR@"
|
|
config.llvm_obj_root = "@LLVM_BINARY_DIR@"
|
|
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
|
|
config.llvm_lib_dir = "@LLVM_LIBRARY_DIR@"
|
|
config.llvm_shlib_dir = "@SHLIBDIR@"
|
|
config.llvm_shlib_ext = "@SHLIBEXT@"
|
|
config.llvm_exe_ext = "@EXEEXT@"
|
|
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
|
|
config.python_executable = "@PYTHON_EXECUTABLE@"
|
|
config.gold_executable = "@GOLD_EXECUTABLE@"
|
|
config.ld64_executable = "@LD64_EXECUTABLE@"
|
|
config.enable_shared = @ENABLE_SHARED@
|
|
config.enable_assertions = @ENABLE_ASSERTIONS@
|
|
config.targets_to_build = "@TARGETS_TO_BUILD@"
|
|
config.native_target = "@LLVM_NATIVE_ARCH@"
|
|
config.llvm_bindings = "@LLVM_BINDINGS@".split(' ')
|
|
config.host_os = "@HOST_OS@"
|
|
config.host_cc = "@HOST_CC@"
|
|
config.host_cxx = "@HOST_CXX@"
|
|
config.host_cmake = "@CMAKE_COMMAND@"
|
|
# Note: ldflags can contain double-quoted paths, so must use single quotes here.
|
|
config.host_ldflags = '@HOST_LDFLAGS@'
|
|
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
|
|
config.llvm_host_triple = '@LLVM_HOST_TRIPLE@'
|
|
config.host_arch = "@HOST_ARCH@"
|
|
config.mlir_src_root = "@MLIR_SOURCE_DIR@"
|
|
config.mlir_obj_root = "@MLIR_BINARY_DIR@"
|
|
config.mlir_runner_utils_dir = "@MLIR_RUNNER_UTILS_DIR@"
|
|
config.mlir_tools_dir = "@MLIR_TOOLS_DIR@"
|
|
config.linalg_test_lib_dir = "@MLIR_DIALECT_LINALG_INTEGRATION_TEST_LIB_DIR@"
|
|
config.build_examples = @LLVM_BUILD_EXAMPLES@
|
|
config.run_cuda_tests = @MLIR_CUDA_CONVERSIONS_ENABLED@
|
|
config.cuda_wrapper_library_dir = "@MLIR_CUDA_WRAPPER_LIBRARY_DIR@"
|
|
config.enable_cuda_runner = @MLIR_CUDA_RUNNER_ENABLED@
|
|
config.run_rocm_tests = @MLIR_ROCM_CONVERSIONS_ENABLED@
|
|
config.rocm_wrapper_library_dir = "@MLIR_ROCM_WRAPPER_LIBRARY_DIR@"
|
|
config.enable_rocm_runner = @MLIR_ROCM_RUNNER_ENABLED@
|
|
config.vulkan_wrapper_library_dir = "@MLIR_VULKAN_WRAPPER_LIBRARY_DIR@"
|
|
config.enable_vulkan_runner = @MLIR_VULKAN_RUNNER_ENABLED@
|
|
|
|
# Support substitution of the tools_dir with user parameters. This is
|
|
# used when we can't determine the tool dir at configuration time.
|
|
try:
|
|
config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
|
|
config.llvm_shlib_dir = config.llvm_shlib_dir % lit_config.params
|
|
except KeyError:
|
|
e = sys.exc_info()[1]
|
|
key, = e.args
|
|
lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
|
|
|
|
import lit.llvm
|
|
lit.llvm.initialize(lit_config, config)
|
|
|
|
# Let the main config do the real work.
|
|
lit_config.load_config(config, "@MLIR_SOURCE_DIR@/test/lit.cfg.py")
|