Skip to content

Commit

Permalink
Add the possibility to store only cubin/hsaco files in the cache dire…
Browse files Browse the repository at this point in the history
…ctory (#5827)

Since AMDGCN, PTX, LLIR, TTGIR, and TTIR are not fundamental for caching
when the primary goal
is improving performance in terms of speed, the environment variable
`TRITON_STORE_BINARY_ONLY` was introduced to avoid storing these files.

This change helps mitigate storage impact when caching multiple kernels.


Signed-off-by: Alessandro Sangiorgi [email protected]

<!---
The core Triton is a small number of people, and we receive many PRs
(thank
you!).  To help us review your code more quickly, **if you are a new
contributor (less than 3 PRs merged) we ask that you complete the
following
tasks and include the filled-out checklist in your PR description.**

Complete the following tasks before sending your PR, and replace `[ ]`
with
`[x]` to indicate you have done them.
-->

# New contributor declaration
- [x] I am not making a trivial change, such as fixing a typo in a
comment.

- [x] I have written a PR description following these
  [rules](https://cbea.ms/git-commit/#why-not-how).

- [x] I have run `pre-commit run --from-ref origin/main --to-ref HEAD`.

- Select one of the following.
  - [ ] I have added tests.
    - `/test` for `lit` tests
    - `/unittest` for C++ tests
    - `/python/test` for end-to-end tests
  - [x] This PR does not need a test because `FILL THIS IN`.

- Select one of the following.
  - [x] I have not added any `lit` tests.
- [ ] The `lit` tests I have added follow these [best
practices](https://mlir.llvm.org/getting_started/TestingGuide/#filecheck-best-practices),
including the "tests should be minimal" section. (Usually running Python
code
    and using the instructions it generates is not minimal.)

---------

Signed-off-by: Alessandro Sangiorgi [email protected]
  • Loading branch information
fulvius31 authored Feb 10, 2025
1 parent c5036b9 commit 5a99ff5
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion python/triton/compiler/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ def compile(src, target=None, options=None):
# core changes to make it easier to track kernels by hash.
enable_override = os.environ.get("TRITON_KERNEL_OVERRIDE", "0") == "1"
enable_ir_dump = os.environ.get("TRITON_KERNEL_DUMP", "0") == "1"
store_only_binary = os.environ.get("TRITON_STORE_BINARY_ONLY", "0") == "1"
fn_override_manager = get_override_manager(src.hash()) if enable_override else None
fn_dump_manager = get_dump_manager(src.hash()) if enable_ir_dump else None
# Pre-truncate the file name here to avoid hitting the 255 character limit on common platforms.
Expand Down Expand Up @@ -284,7 +285,9 @@ def compile(src, target=None, options=None):
if (fn_override_manager is not None and (full_name := fn_override_manager.get_file(ir_filename)) is not None):
print(f"\nOverriding kernel with file {full_name}")
next_module = parse(full_name, ext, context)
metadata_group[ir_filename] = fn_cache_manager.put(next_module, ir_filename)
# If TRITON_STORE_BINARY_ONLY is 1, only store cubin/hsaco/json
if (not store_only_binary) or (ext in ("cubin", "hsaco", "json")):
metadata_group[ir_filename] = fn_cache_manager.put(next_module, ir_filename)
if fn_dump_manager is not None:
fn_dump_manager.put(next_module, ir_filename)
# use an env variable to parse ir from file
Expand Down

0 comments on commit 5a99ff5

Please sign in to comment.