2019-03-30 13:10:12 +08:00
|
|
|
@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@"
|
2020-04-23 01:52:07 +08:00
|
|
|
config.host_cmake = "@CMAKE_COMMAND@"
|
2019-10-14 23:18:23 +08:00
|
|
|
# Note: ldflags can contain double-quoted paths, so must use single quotes here.
|
|
|
|
config.host_ldflags = '@HOST_LDFLAGS@'
|
2019-03-30 13:10:12 +08:00
|
|
|
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@"
|
2020-03-27 17:20:05 +08:00
|
|
|
config.mlir_runner_utils_dir = "@MLIR_RUNNER_UTILS_DIR@"
|
2019-03-30 13:10:12 +08:00
|
|
|
config.mlir_tools_dir = "@MLIR_TOOLS_DIR@"
|
2019-11-27 00:47:14 +08:00
|
|
|
config.linalg_test_lib_dir = "@MLIR_DIALECT_LINALG_INTEGRATION_TEST_LIB_DIR@"
|
2019-04-03 01:02:07 +08:00
|
|
|
config.build_examples = @LLVM_BUILD_EXAMPLES@
|
2019-06-26 20:16:11 +08:00
|
|
|
config.run_cuda_tests = @MLIR_CUDA_CONVERSIONS_ENABLED@
|
2019-11-27 00:47:14 +08:00
|
|
|
config.cuda_wrapper_library_dir = "@MLIR_CUDA_WRAPPER_LIBRARY_DIR@"
|
2019-07-04 22:49:52 +08:00
|
|
|
config.enable_cuda_runner = @MLIR_CUDA_RUNNER_ENABLED@
|
2020-05-23 05:25:00 +08:00
|
|
|
config.run_rocm_tests = @MLIR_ROCM_CONVERSIONS_ENABLED@
|
[mlir][gpu] Introduce mlir-rocm-runner.
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
2020-05-21 05:07:49 +08:00
|
|
|
config.rocm_wrapper_library_dir = "@MLIR_ROCM_WRAPPER_LIBRARY_DIR@"
|
|
|
|
config.enable_rocm_runner = @MLIR_ROCM_RUNNER_ENABLED@
|
[MLIR][mlir-spirv-cpu-runner] A SPIR-V cpu runner prototype
This patch introduces a SPIR-V runner. The aim is to run a gpu
kernel on a CPU via GPU -> SPIRV -> LLVM conversions. This is a first
prototype, so more features will be added in due time.
- Overview
The runner follows similar flow as the other runners in-tree. However,
having converted the kernel to SPIR-V, we encode the bind attributes of
global variables that represent kernel arguments. Then SPIR-V module is
converted to LLVM. On the host side, we emulate passing the data to device
by creating in main module globals with the same symbolic name as in kernel
module. These global variables are later linked with ones from the nested
module. We copy data from kernel arguments to globals, call the kernel
function from nested module and then copy the data back.
- Current state
At the moment, the runner is capable of running 2 modules, nested one in
another. The kernel module must contain exactly one kernel function. Also,
the runner supports rank 1 integer memref types as arguments (to be scaled).
- Enhancement of JitRunner and ExecutionEngine
To translate nested modules to LLVM IR, JitRunner and ExecutionEngine were
altered to take an optional (default to `nullptr`) function reference that
is a custom LLVM IR module builder. This allows to customize LLVM IR module
creation from MLIR modules.
Reviewed By: ftynse, mravishankar
Differential Revision: https://reviews.llvm.org/D86108
2020-10-23 22:46:18 +08:00
|
|
|
config.spirv_wrapper_library_dir = "@MLIR_SPIRV_WRAPPER_LIBRARY_DIR@"
|
|
|
|
config.enable_spirv_cpu_runner = @MLIR_SPIRV_CPU_RUNNER_ENABLED@
|
2020-02-19 22:11:22 +08:00
|
|
|
config.vulkan_wrapper_library_dir = "@MLIR_VULKAN_WRAPPER_LIBRARY_DIR@"
|
|
|
|
config.enable_vulkan_runner = @MLIR_VULKAN_RUNNER_ENABLED@
|
Initial boiler-plate for python bindings.
Summary:
* Native '_mlir' extension module.
* Python mlir/__init__.py trampoline module.
* Lit test that checks a message.
* Uses some cmake configurations that have worked for me in the past but likely needs further elaboration.
Subscribers: mgorny, mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, stephenneuendorffer, Joonsoo, grosul1, Kayjukh, jurahul, msifontes
Tags: #mlir
Differential Revision: https://reviews.llvm.org/D83279
2020-07-07 14:05:46 +08:00
|
|
|
config.enable_bindings_python = @MLIR_BINDINGS_PYTHON_ENABLED@
|
2019-03-30 13:10:12 +08:00
|
|
|
|
|
|
|
# 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")
|