Skip to content

Commit 5a99ff5

Browse files
authored
Add the possibility to store only cubin/hsaco files in the cache directory (#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]
1 parent c5036b9 commit 5a99ff5

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

python/triton/compiler/compiler.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ def compile(src, target=None, options=None):
234234
# core changes to make it easier to track kernels by hash.
235235
enable_override = os.environ.get("TRITON_KERNEL_OVERRIDE", "0") == "1"
236236
enable_ir_dump = os.environ.get("TRITON_KERNEL_DUMP", "0") == "1"
237+
store_only_binary = os.environ.get("TRITON_STORE_BINARY_ONLY", "0") == "1"
237238
fn_override_manager = get_override_manager(src.hash()) if enable_override else None
238239
fn_dump_manager = get_dump_manager(src.hash()) if enable_ir_dump else None
239240
# Pre-truncate the file name here to avoid hitting the 255 character limit on common platforms.
@@ -284,7 +285,9 @@ def compile(src, target=None, options=None):
284285
if (fn_override_manager is not None and (full_name := fn_override_manager.get_file(ir_filename)) is not None):
285286
print(f"\nOverriding kernel with file {full_name}")
286287
next_module = parse(full_name, ext, context)
287-
metadata_group[ir_filename] = fn_cache_manager.put(next_module, ir_filename)
288+
# If TRITON_STORE_BINARY_ONLY is 1, only store cubin/hsaco/json
289+
if (not store_only_binary) or (ext in ("cubin", "hsaco", "json")):
290+
metadata_group[ir_filename] = fn_cache_manager.put(next_module, ir_filename)
288291
if fn_dump_manager is not None:
289292
fn_dump_manager.put(next_module, ir_filename)
290293
# use an env variable to parse ir from file

0 commit comments

Comments
 (0)