diff --git a/src/kernels/__init__.py b/src/kernels/__init__.py index 85057db..1df4919 100644 --- a/src/kernels/__init__.py +++ b/src/kernels/__init__.py @@ -1,5 +1,6 @@ import importlib.metadata + __version__ = importlib.metadata.version("kernels") from kernels.layer import ( @@ -28,6 +29,11 @@ load_kernel, ) + +from kernels._windows import _add_additional_dll_paths + +_add_additional_dll_paths() + __all__ = [ "__version__", "CUDAProperties", diff --git a/src/kernels/_windows.py b/src/kernels/_windows.py new file mode 100644 index 0000000..6c6bd9b --- /dev/null +++ b/src/kernels/_windows.py @@ -0,0 +1,25 @@ +import os +import platform + + +def _add_additional_dll_paths(): + """ + Add special Windows DLL paths. + + Recent versions of Python do use PATH as a load path anymore. This can + cause issues with libraries that are used by kernels such as dnnl. Here + we add several known paths. + """ + + if platform.system() == "Windows": + _dll_paths = [ + # Add Intel oneAPI directories for XPU support + r"C:\Program Files (x86)\Intel\oneAPI\dnnl\latest\bin", + ] + + for _path in _dll_paths: + if os.path.exists(_path): + try: + os.add_dll_directory(_path) + except Exception: + pass # Ignore if already added or permission issues