# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE # # This code was automatically generated across versions from 12.0.1 to 12.9.1. Do not modify it directly. from libc.stdint cimport intptr_t, uintptr_t import threading from .utils import FunctionNotFoundError, NotSupportedError from cuda.pathfinder import load_nvidia_dynamic_lib ############################################################################### # Extern ############################################################################### cdef extern from "" nogil: void* dlopen(const char*, int) char* dlerror() void* dlsym(void*, const char*) int dlclose(void*) enum: RTLD_LAZY RTLD_NOW RTLD_GLOBAL RTLD_LOCAL const void* RTLD_DEFAULT 'RTLD_DEFAULT' ############################################################################### # Wrapper init ############################################################################### cdef object __symbol_lock = threading.Lock() cdef bint __py_nvjitlink_init = False cdef void* __cuDriverGetVersion = NULL cdef void* __nvJitLinkCreate = NULL cdef void* __nvJitLinkDestroy = NULL cdef void* __nvJitLinkAddData = NULL cdef void* __nvJitLinkAddFile = NULL cdef void* __nvJitLinkComplete = NULL cdef void* __nvJitLinkGetLinkedCubinSize = NULL cdef void* __nvJitLinkGetLinkedCubin = NULL cdef void* __nvJitLinkGetLinkedPtxSize = NULL cdef void* __nvJitLinkGetLinkedPtx = NULL cdef void* __nvJitLinkGetErrorLogSize = NULL cdef void* __nvJitLinkGetErrorLog = NULL cdef void* __nvJitLinkGetInfoLogSize = NULL cdef void* __nvJitLinkGetInfoLog = NULL cdef void* __nvJitLinkVersion = NULL cdef void* load_library() except* with gil: cdef uintptr_t handle = load_nvidia_dynamic_lib("nvJitLink")._handle_uint return handle cdef int __check_or_init_nvjitlink() except -1 nogil: global __py_nvjitlink_init cdef void* handle = NULL with gil, __symbol_lock: # Load function global __nvJitLinkCreate __nvJitLinkCreate = dlsym(RTLD_DEFAULT, 'nvJitLinkCreate') if __nvJitLinkCreate == NULL: if handle == NULL: handle = load_library() __nvJitLinkCreate = dlsym(handle, 'nvJitLinkCreate') global __nvJitLinkDestroy __nvJitLinkDestroy = dlsym(RTLD_DEFAULT, 'nvJitLinkDestroy') if __nvJitLinkDestroy == NULL: if handle == NULL: handle = load_library() __nvJitLinkDestroy = dlsym(handle, 'nvJitLinkDestroy') global __nvJitLinkAddData __nvJitLinkAddData = dlsym(RTLD_DEFAULT, 'nvJitLinkAddData') if __nvJitLinkAddData == NULL: if handle == NULL: handle = load_library() __nvJitLinkAddData = dlsym(handle, 'nvJitLinkAddData') global __nvJitLinkAddFile __nvJitLinkAddFile = dlsym(RTLD_DEFAULT, 'nvJitLinkAddFile') if __nvJitLinkAddFile == NULL: if handle == NULL: handle = load_library() __nvJitLinkAddFile = dlsym(handle, 'nvJitLinkAddFile') global __nvJitLinkComplete __nvJitLinkComplete = dlsym(RTLD_DEFAULT, 'nvJitLinkComplete') if __nvJitLinkComplete == NULL: if handle == NULL: handle = load_library() __nvJitLinkComplete = dlsym(handle, 'nvJitLinkComplete') global __nvJitLinkGetLinkedCubinSize __nvJitLinkGetLinkedCubinSize = dlsym(RTLD_DEFAULT, 'nvJitLinkGetLinkedCubinSize') if __nvJitLinkGetLinkedCubinSize == NULL: if handle == NULL: handle = load_library() __nvJitLinkGetLinkedCubinSize = dlsym(handle, 'nvJitLinkGetLinkedCubinSize') global __nvJitLinkGetLinkedCubin __nvJitLinkGetLinkedCubin = dlsym(RTLD_DEFAULT, 'nvJitLinkGetLinkedCubin') if __nvJitLinkGetLinkedCubin == NULL: if handle == NULL: handle = load_library() __nvJitLinkGetLinkedCubin = dlsym(handle, 'nvJitLinkGetLinkedCubin') global __nvJitLinkGetLinkedPtxSize __nvJitLinkGetLinkedPtxSize = dlsym(RTLD_DEFAULT, 'nvJitLinkGetLinkedPtxSize') if __nvJitLinkGetLinkedPtxSize == NULL: if handle == NULL: handle = load_library() __nvJitLinkGetLinkedPtxSize = dlsym(handle, 'nvJitLinkGetLinkedPtxSize') global __nvJitLinkGetLinkedPtx __nvJitLinkGetLinkedPtx = dlsym(RTLD_DEFAULT, 'nvJitLinkGetLinkedPtx') if __nvJitLinkGetLinkedPtx == NULL: if handle == NULL: handle = load_library() __nvJitLinkGetLinkedPtx = dlsym(handle, 'nvJitLinkGetLinkedPtx') global __nvJitLinkGetErrorLogSize __nvJitLinkGetErrorLogSize = dlsym(RTLD_DEFAULT, 'nvJitLinkGetErrorLogSize') if __nvJitLinkGetErrorLogSize == NULL: if handle == NULL: handle = load_library() __nvJitLinkGetErrorLogSize = dlsym(handle, 'nvJitLinkGetErrorLogSize') global __nvJitLinkGetErrorLog __nvJitLinkGetErrorLog = dlsym(RTLD_DEFAULT, 'nvJitLinkGetErrorLog') if __nvJitLinkGetErrorLog == NULL: if handle == NULL: handle = load_library() __nvJitLinkGetErrorLog = dlsym(handle, 'nvJitLinkGetErrorLog') global __nvJitLinkGetInfoLogSize __nvJitLinkGetInfoLogSize = dlsym(RTLD_DEFAULT, 'nvJitLinkGetInfoLogSize') if __nvJitLinkGetInfoLogSize == NULL: if handle == NULL: handle = load_library() __nvJitLinkGetInfoLogSize = dlsym(handle, 'nvJitLinkGetInfoLogSize') global __nvJitLinkGetInfoLog __nvJitLinkGetInfoLog = dlsym(RTLD_DEFAULT, 'nvJitLinkGetInfoLog') if __nvJitLinkGetInfoLog == NULL: if handle == NULL: handle = load_library() __nvJitLinkGetInfoLog = dlsym(handle, 'nvJitLinkGetInfoLog') global __nvJitLinkVersion __nvJitLinkVersion = dlsym(RTLD_DEFAULT, 'nvJitLinkVersion') if __nvJitLinkVersion == NULL: if handle == NULL: handle = load_library() __nvJitLinkVersion = dlsym(handle, 'nvJitLinkVersion') __py_nvjitlink_init = True return 0 cdef inline int _check_or_init_nvjitlink() except -1 nogil: if __py_nvjitlink_init: return 0 return __check_or_init_nvjitlink() cdef dict func_ptrs = None cpdef dict _inspect_function_pointers(): global func_ptrs if func_ptrs is not None: return func_ptrs _check_or_init_nvjitlink() cdef dict data = {} global __nvJitLinkCreate data["__nvJitLinkCreate"] = __nvJitLinkCreate global __nvJitLinkDestroy data["__nvJitLinkDestroy"] = __nvJitLinkDestroy global __nvJitLinkAddData data["__nvJitLinkAddData"] = __nvJitLinkAddData global __nvJitLinkAddFile data["__nvJitLinkAddFile"] = __nvJitLinkAddFile global __nvJitLinkComplete data["__nvJitLinkComplete"] = __nvJitLinkComplete global __nvJitLinkGetLinkedCubinSize data["__nvJitLinkGetLinkedCubinSize"] = __nvJitLinkGetLinkedCubinSize global __nvJitLinkGetLinkedCubin data["__nvJitLinkGetLinkedCubin"] = __nvJitLinkGetLinkedCubin global __nvJitLinkGetLinkedPtxSize data["__nvJitLinkGetLinkedPtxSize"] = __nvJitLinkGetLinkedPtxSize global __nvJitLinkGetLinkedPtx data["__nvJitLinkGetLinkedPtx"] = __nvJitLinkGetLinkedPtx global __nvJitLinkGetErrorLogSize data["__nvJitLinkGetErrorLogSize"] = __nvJitLinkGetErrorLogSize global __nvJitLinkGetErrorLog data["__nvJitLinkGetErrorLog"] = __nvJitLinkGetErrorLog global __nvJitLinkGetInfoLogSize data["__nvJitLinkGetInfoLogSize"] = __nvJitLinkGetInfoLogSize global __nvJitLinkGetInfoLog data["__nvJitLinkGetInfoLog"] = __nvJitLinkGetInfoLog global __nvJitLinkVersion data["__nvJitLinkVersion"] = __nvJitLinkVersion func_ptrs = data return data cpdef _inspect_function_pointer(str name): global func_ptrs if func_ptrs is None: func_ptrs = _inspect_function_pointers() return func_ptrs[name] ############################################################################### # Wrapper functions ############################################################################### cdef nvJitLinkResult _nvJitLinkCreate(nvJitLinkHandle* handle, uint32_t numOptions, const char** options) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkCreate _check_or_init_nvjitlink() if __nvJitLinkCreate == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkCreate is not found") return (__nvJitLinkCreate)( handle, numOptions, options) cdef nvJitLinkResult _nvJitLinkDestroy(nvJitLinkHandle* handle) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkDestroy _check_or_init_nvjitlink() if __nvJitLinkDestroy == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkDestroy is not found") return (__nvJitLinkDestroy)( handle) cdef nvJitLinkResult _nvJitLinkAddData(nvJitLinkHandle handle, nvJitLinkInputType inputType, const void* data, size_t size, const char* name) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkAddData _check_or_init_nvjitlink() if __nvJitLinkAddData == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkAddData is not found") return (__nvJitLinkAddData)( handle, inputType, data, size, name) cdef nvJitLinkResult _nvJitLinkAddFile(nvJitLinkHandle handle, nvJitLinkInputType inputType, const char* fileName) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkAddFile _check_or_init_nvjitlink() if __nvJitLinkAddFile == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkAddFile is not found") return (__nvJitLinkAddFile)( handle, inputType, fileName) cdef nvJitLinkResult _nvJitLinkComplete(nvJitLinkHandle handle) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkComplete _check_or_init_nvjitlink() if __nvJitLinkComplete == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkComplete is not found") return (__nvJitLinkComplete)( handle) cdef nvJitLinkResult _nvJitLinkGetLinkedCubinSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkGetLinkedCubinSize _check_or_init_nvjitlink() if __nvJitLinkGetLinkedCubinSize == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkGetLinkedCubinSize is not found") return (__nvJitLinkGetLinkedCubinSize)( handle, size) cdef nvJitLinkResult _nvJitLinkGetLinkedCubin(nvJitLinkHandle handle, void* cubin) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkGetLinkedCubin _check_or_init_nvjitlink() if __nvJitLinkGetLinkedCubin == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkGetLinkedCubin is not found") return (__nvJitLinkGetLinkedCubin)( handle, cubin) cdef nvJitLinkResult _nvJitLinkGetLinkedPtxSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkGetLinkedPtxSize _check_or_init_nvjitlink() if __nvJitLinkGetLinkedPtxSize == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkGetLinkedPtxSize is not found") return (__nvJitLinkGetLinkedPtxSize)( handle, size) cdef nvJitLinkResult _nvJitLinkGetLinkedPtx(nvJitLinkHandle handle, char* ptx) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkGetLinkedPtx _check_or_init_nvjitlink() if __nvJitLinkGetLinkedPtx == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkGetLinkedPtx is not found") return (__nvJitLinkGetLinkedPtx)( handle, ptx) cdef nvJitLinkResult _nvJitLinkGetErrorLogSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkGetErrorLogSize _check_or_init_nvjitlink() if __nvJitLinkGetErrorLogSize == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkGetErrorLogSize is not found") return (__nvJitLinkGetErrorLogSize)( handle, size) cdef nvJitLinkResult _nvJitLinkGetErrorLog(nvJitLinkHandle handle, char* log) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkGetErrorLog _check_or_init_nvjitlink() if __nvJitLinkGetErrorLog == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkGetErrorLog is not found") return (__nvJitLinkGetErrorLog)( handle, log) cdef nvJitLinkResult _nvJitLinkGetInfoLogSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkGetInfoLogSize _check_or_init_nvjitlink() if __nvJitLinkGetInfoLogSize == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkGetInfoLogSize is not found") return (__nvJitLinkGetInfoLogSize)( handle, size) cdef nvJitLinkResult _nvJitLinkGetInfoLog(nvJitLinkHandle handle, char* log) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkGetInfoLog _check_or_init_nvjitlink() if __nvJitLinkGetInfoLog == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkGetInfoLog is not found") return (__nvJitLinkGetInfoLog)( handle, log) cdef nvJitLinkResult _nvJitLinkVersion(unsigned int* major, unsigned int* minor) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil: global __nvJitLinkVersion _check_or_init_nvjitlink() if __nvJitLinkVersion == NULL: with gil: raise FunctionNotFoundError("function nvJitLinkVersion is not found") return (__nvJitLinkVersion)( major, minor)