From c7f11f26c0bba0523a8837e57bc6da422672badd Mon Sep 17 00:00:00 2001 From: fulvius31 Date: Wed, 6 Nov 2024 15:20:54 -0600 Subject: [PATCH 1/4] Prepend an underscore to the filename if it starts with a '-' to prevent issues with command-line operations on Unix-like systems. --- python/triton/runtime/cache.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/python/triton/runtime/cache.py b/python/triton/runtime/cache.py index 82b2fea37e9b..a727bb6cb886 100644 --- a/python/triton/runtime/cache.py +++ b/python/triton/runtime/cache.py @@ -258,8 +258,17 @@ def put_group(self, filename: str, group: Dict[str, str]): def _base64(key): # Assume key is a hex string. - return base64.urlsafe_b64encode(bytes.fromhex(key)).decode("utf-8").rstrip("=") + encoded = base64.urlsafe_b64encode(bytes.fromhex(key)).decode("utf-8").rstrip("=") + return _ensure_safe_filename(encoded) +def _ensure_safe_filename(encoded): + """ + Prepends an underscore to the filename if it starts with a '-' + to prevent issues with command-line operations on Unix-like systems. + """ + if encoded.startswith('-'): + return f"_{encoded}" + return encoded def get_cache_manager(key) -> CacheManager: import os From c9db0c1cbcdb74b209750f3e892cb67cf09bfcbf Mon Sep 17 00:00:00 2001 From: fulvius31 Date: Wed, 6 Nov 2024 15:51:01 -0600 Subject: [PATCH 2/4] Fix from yapf --- python/triton/runtime/cache.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/triton/runtime/cache.py b/python/triton/runtime/cache.py index a727bb6cb886..5204fedf2aaf 100644 --- a/python/triton/runtime/cache.py +++ b/python/triton/runtime/cache.py @@ -258,9 +258,10 @@ def put_group(self, filename: str, group: Dict[str, str]): def _base64(key): # Assume key is a hex string. - encoded = base64.urlsafe_b64encode(bytes.fromhex(key)).decode("utf-8").rstrip("=") + encoded = base64.urlsafe_b64encode(bytes.fromhex(key)).decode("utf-8").rstrip("=") return _ensure_safe_filename(encoded) + def _ensure_safe_filename(encoded): """ Prepends an underscore to the filename if it starts with a '-' @@ -270,6 +271,7 @@ def _ensure_safe_filename(encoded): return f"_{encoded}" return encoded + def get_cache_manager(key) -> CacheManager: import os From d28f85a114bebbb74f59f75d3a0cfe5bfd663751 Mon Sep 17 00:00:00 2001 From: Alessandro Sangiorgi Date: Sun, 10 Nov 2024 15:37:05 -0600 Subject: [PATCH 3/4] Use base32 instead of base64 --- python/triton/runtime/cache.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/python/triton/runtime/cache.py b/python/triton/runtime/cache.py index 5204fedf2aaf..72a8a5f672df 100644 --- a/python/triton/runtime/cache.py +++ b/python/triton/runtime/cache.py @@ -258,18 +258,7 @@ def put_group(self, filename: str, group: Dict[str, str]): def _base64(key): # Assume key is a hex string. - encoded = base64.urlsafe_b64encode(bytes.fromhex(key)).decode("utf-8").rstrip("=") - return _ensure_safe_filename(encoded) - - -def _ensure_safe_filename(encoded): - """ - Prepends an underscore to the filename if it starts with a '-' - to prevent issues with command-line operations on Unix-like systems. - """ - if encoded.startswith('-'): - return f"_{encoded}" - return encoded + return base64.b32encode(bytes.fromhex(key)).decode("utf-8").rstrip("=") def get_cache_manager(key) -> CacheManager: From 691b0ff8bb4dfee7fffdf654a9a4383335e7fc9b Mon Sep 17 00:00:00 2001 From: Alessandro Sangiorgi Date: Sun, 10 Nov 2024 15:42:48 -0600 Subject: [PATCH 4/4] Use base32 instead of base64 --- python/triton/runtime/cache.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/python/triton/runtime/cache.py b/python/triton/runtime/cache.py index 72a8a5f672df..62895508b019 100644 --- a/python/triton/runtime/cache.py +++ b/python/triton/runtime/cache.py @@ -256,7 +256,7 @@ def put_group(self, filename: str, group: Dict[str, str]): __cache_cls_nme = "DEFAULT" -def _base64(key): +def _base32(key): # Assume key is a hex string. return base64.b32encode(bytes.fromhex(key)).decode("utf-8").rstrip("=") @@ -274,15 +274,15 @@ def get_cache_manager(key) -> CacheManager: __cache_cls = getattr(module, clz_nme) __cache_cls_nme = user_cache_manager - return __cache_cls(_base64(key)) + return __cache_cls(_base32(key)) def get_override_manager(key) -> CacheManager: - return __cache_cls(_base64(key), override=True) + return __cache_cls(_base32(key), override=True) def get_dump_manager(key) -> CacheManager: - return __cache_cls(_base64(key), dump=True) + return __cache_cls(_base32(key), dump=True) def make_so_cache_key(version_hash, signature, constants, ids, **kwargs): @@ -292,4 +292,4 @@ def make_so_cache_key(version_hash, signature, constants, ids, **kwargs): for kw in kwargs: key = f"{key}-{kwargs.get(kw)}" key = hashlib.sha256(key.encode("utf-8")).hexdigest() - return _base64(key) + return _base32(key)