|
import importlib.util |
|
import shutil |
|
import os |
|
import ctypes |
|
import logging |
|
|
|
|
|
torch_spec = importlib.util.find_spec("torch") |
|
for folder in torch_spec.submodule_search_locations: |
|
lib_folder = os.path.join(folder, "lib") |
|
test_file = os.path.join(lib_folder, "fbgemm.dll") |
|
dest = os.path.join(lib_folder, "libomp140.x86_64.dll") |
|
if os.path.exists(dest): |
|
break |
|
|
|
with open(test_file, 'rb') as f: |
|
contents = f.read() |
|
if b"libomp140.x86_64.dll" not in contents: |
|
break |
|
try: |
|
mydll = ctypes.cdll.LoadLibrary(test_file) |
|
except FileNotFoundError as e: |
|
logging.warning("Detected pytorch version with libomp issue, patching.") |
|
shutil.copyfile(os.path.join(lib_folder, "libiomp5md.dll"), dest) |
|
|