From dd190ef043cdd26946e3586f39dcbf62356ae330 Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Wed, 12 Mar 2025 14:57:31 -0700 Subject: [PATCH] Add @functools.lru_cache decorator for get_binding_version() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit >>> 35.381859/0.004149 8527.804049168473 $ git stash $ python test_slowness.py 100000 driver.cuDriverGetVersion() 12060 cuda_utils.get_binding_version() (12, 8) driver.cuDriverGetVersion() 0.023946 seconds for 100000 iterations 0.24 µs per call cuda_utils.get_binding_version() 35.381859 seconds for 100000 iterations 353.82 µs per call $ git stash pop $ python test_slowness.py 100000 driver.cuDriverGetVersion() 12060 cuda_utils.get_binding_version() (12, 8) driver.cuDriverGetVersion() 0.022644 seconds for 100000 iterations 0.23 µs per call cuda_utils.get_binding_version() 0.004149 seconds for 100000 iterations 0.04 µs per call --- cuda_core/cuda/core/experimental/_utils/cuda_utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cuda_core/cuda/core/experimental/_utils/cuda_utils.py b/cuda_core/cuda/core/experimental/_utils/cuda_utils.py index ac8e5e17224..18f4ab3e545 100644 --- a/cuda_core/cuda/core/experimental/_utils/cuda_utils.py +++ b/cuda_core/cuda/core/experimental/_utils/cuda_utils.py @@ -182,6 +182,7 @@ def is_nested_sequence(obj): return is_sequence(obj) and any(is_sequence(elem) for elem in obj) +@functools.lru_cache def get_binding_version(): try: major_minor = importlib.metadata.version("cuda-bindings").split(".")[:2]