Open
Description
Writing down requirements for refactoring igpu dialect and L0 runner. Goal of this document is to keep track of tasks for refactoring code base to avoid duplicate effort.
- level zero runner and igpu work would continue on main branch until most of the following requirements/features are ready on refactor branch.
- Some of these may be applied to main branch during that period.
- Any task with a checkmark against it indicates it is completed in the
refactor
branch. - Following list assume "dpcomp" project specific passes and dialects will be redone in
refactor
branch.
Also ran some experiments with https://github.com/silee2/mlir-extensions/blob/cleanup/mlir/CMakeLists.txt to filter out files not need to for level zero runner usage case.
- Use MLIR upstream file structure. "refactor" branch is based on that structure. See mlir-hlo project layout for reference. #236
- Move scripts to build imex to a separate build_tools directory #237
- Remove dpcomp-opt and add imex-opt by using proper dialect and pass registration mechanism IMEX needs a CLI tool similar to mlir-opt #233
- Provide a script using imex-opt and mlir-cpu-runner to achieve same effect as level-zero-runner #238
- Move wrapper libraries to lib/ExecutionEngine #239
- Refactor and rename wrapper libraries: IGPURuntimeWrapper, ... #240
- Remove unused Tranforms and Conversions: Only two conversions (gpu-to-gpu-runtime, gpu-runtime-to-llvm) and one transform (func_utils) is used by L0 runner #241
- Remove Analysis and Compiler, utils.cpp from lib/ as they are not used. #242
- Move Undef op from plier_util to gpu_runtime dialect and remove plier and plier_util dialect #243
- Remove local FileCheck util and use -DLLVM_INSTALL_UTILS flag when building LLVM
- Add IMEXConfig
- CMake version and C++ version should follow upstream LLVM/MLIR. Use cmake policy to use advanced cmake features and provide a fallback for older versions of cmake #244
- find_package(LLVM) is redundant since find_package(MLIR) calls it internally #245
- Add cmake target check-imex-opt to run unit tests #246
- Remove need for LLVM_ENABLE_RTTI: imex-opt and FileCheck refactoring should remove need for rtti. #247
- Provide cmake option for installing toolchain only (not as an SDK). Useful when using separating development and testing machine. See -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON for reference. #248
- python "lit" and wrapper script (runlit.py) has to be installed for running lit tests. #249
- Add support for various build situations: Ex) as an LLVM external project (LLVM_EXTERNAL_${project}_SOURCE_DIR), as part of an external build, standalone build with local LLVM/MLIR. See mlir-hlo project and [Do not merge] Initial support for auto updating and building dependent third party projects #211 for reference.
- Use MLIR cmake macros for building libraries and executables: https://github.com/llvm/llvm-project/blob/main/mlir/cmake/modules/AddMLIR.cmake #250
- Refactor CMakeLists.txt to move all options to a separate cmake module #251
- Provide a cmake option to add mlir-hlo project : LLVM version will be common between imex and mlir-hlo #252
- When updating LLVM version, use a version that is/was used by mlir-hlo #253
- Add support for building and executing on Windows #254