mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-06-13 01:09:22 +00:00
### Description `lintrunner` is a linter runner successfully used by pytorch, onnx and onnx-script. It provides a uniform experience running linters locally and in CI. It supports all major dev systems: Windows, Linux and MacOs. The checks are enforced by the `Python format` workflow. This PR adopts `lintrunner` to onnxruntime and fixed ~2000 flake8 errors in Python code. `lintrunner` now runs all required python lints including `ruff`(replacing `flake8`), `black` and `isort`. Future lints like `clang-format` can be added. Most errors are auto-fixed by `ruff` and the fixes should be considered robust. Lints that are more complicated to fix are applied `# noqa` for now and should be fixed in follow up PRs. ### Notable changes 1. This PR **removed some suboptimal patterns**: - `not xxx in` -> `xxx not in` membership checks - bare excepts (`except:` -> `except Exception`) - unused imports The follow up PR will remove: - `import *` - mutable values as default in function definitions (`def func(a=[])`) - more unused imports - unused local variables 2. Use `ruff` to replace `flake8`. `ruff` is much (40x) faster than flake8 and is more robust. We are using it successfully in onnx and onnx-script. It also supports auto-fixing many flake8 errors. 3. Removed the legacy flake8 ci flow and updated docs. 4. The added workflow supports SARIF code scanning reports on github, example snapshot:  5. Removed `onnxruntime-python-checks-ci-pipeline` as redundant ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Unified linting experience in CI and local. Replacing https://github.com/microsoft/onnxruntime/pull/14306 --------- Signed-off-by: Justin Chu <justinchu@microsoft.com> |
||
|---|---|---|
| .. | ||
| kernels | ||
| device_array.h | ||
| kernel_explorer.cc | ||
| kernel_explorer_interface.h | ||
| README.md | ||
| version_script.lds | ||
Kernel Explorer
Kernel Explorer hooks up GPU kernel code with a Python frontend to help develop, test, profile, and auto-tune GPU kernels. The initial scope is for BERT-like models with ROCM EP.
Build
#!/bin/bash
set -ex
build_dir="build"
config="Release"
rocm_home="/opt/rocm"
./build.sh --update \
--build_dir ${build_dir} \
--config ${config} \
--cmake_extra_defines \
CMAKE_HIP_COMPILER=/opt/rocm/llvm/bin/clang++ \
onnxruntime_BUILD_KERNEL_EXPLORER=ON \
--skip_submodule_sync --skip_tests \
--use_rocm --rocm_home=${rocm_home} --nccl_home=${rocm_home} \
--build_wheel
cmake --build ${build_dir}/${config} --target kernel_explorer --parallel
Run
Taking vector_add_test.py and build configuration with build_dir="build" and config="Release" in the previous section as an example.
Set up the native library search path with the following environment variable:
export KERNEL_EXPLORER_BUILD_DIR=`realpath build/Release`
To test a kernel implementation, pip install pytest and then
pytest onnxruntime/python/tools/kernel_explorer/kernels/vector_add_test.py
To run the microbenchmarks:
python onnxruntime/python/tools/kernel_explorer/kernels/vector_add_test.py
Currently, kernel explorer mainly targets kernel developers, not the onnxruntime package end users, so it is not installed via setup.py.