diff --git a/extra/mockgpu/amd/amdgpu.py b/extra/mockgpu/amd/amdgpu.py index 495de203..86d908d0 100644 --- a/extra/mockgpu/amd/amdgpu.py +++ b/extra/mockgpu/amd/amdgpu.py @@ -19,11 +19,18 @@ WAIT_REG_MEM_FUNCTION_ALWAYS = 0 WAIT_REG_MEM_FUNCTION_EQ = 3 # == WAIT_REG_MEM_FUNCTION_GEQ = 5 # >= -try: - remu = ctypes.CDLL("/usr/local/lib/libremu.so") - remu.run_asm.restype = ctypes.c_int32 - remu.run_asm.argtypes = [ctypes.c_void_p, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_void_p] -except Exception: pass +REMU_PATHS = ["libremu.so", "/usr/local/lib/libremu.so"] +def _try_dlopen_remu(): + for path in REMU_PATHS: + try: + remu = ctypes.CDLL(path) + remu.run_asm.restype = ctypes.c_int32 + remu.run_asm.argtypes = [ctypes.c_void_p, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_uint32, ctypes.c_void_p] + except OSError: pass + else: return remu + print("Could not find libremu.so") + return None +remu = _try_dlopen_remu() def create_sdma_packets(): # TODO: clean up this, if we want to keep it @@ -287,4 +294,4 @@ debug_prop 1495 sdma_fw_version 20 unique_id 11673270660693242239 num_xcc 1 -max_engine_clk_ccompute 2400""" \ No newline at end of file +max_engine_clk_ccompute 2400""" diff --git a/extra/mockgpu/mockgpu.py b/extra/mockgpu/mockgpu.py index 744fbd5e..05b40a25 100644 --- a/extra/mockgpu/mockgpu.py +++ b/extra/mockgpu/mockgpu.py @@ -13,7 +13,8 @@ libc.munmap.restype = ctypes.c_int libc.fdopendir.argtypes = [ctypes.c_int] libc.fdopendir.restype = ctypes.c_void_p -processor = platform.processor() +# platform.processor calls `uname -p` which can return `unknown` on some systems +processor = os.getenv("IOCTL_PROCESSOR") or platform.processor() OPEN_SYSCALL = {"aarch64": None, "x86_64": 2}[processor] CLOSE_SYSCALL = {"aarch64": 57, "x86_64": 3}[processor] READ_SYSCALL = {"aarch64": 63, "x86_64": 0}[processor] @@ -200,4 +201,4 @@ builtins.memoryview = _memoryview # type: ignore # rewrite autogen's libc mmaps functions. import tinygrad.runtime.autogen.libc as autogen_libc autogen_libc.mmap = _mmap # type: ignore -autogen_libc.munmap = _munmap # type: ignore \ No newline at end of file +autogen_libc.munmap = _munmap # type: ignore