docs: def _load_nvrtc_lib(self, lib_path):
          """
          Loads the NVRTC shared library, with an optional search path in
          lib_path.
          """
          if sizeof(c_void_p) == 8:
              if system() == 'Windows':
                  def_lib_name = 'nvrtc64_92.dll'
              elif system() == 'Darwin':
                  def_lib_name = 'libnvrtc.dylib'
              else:
                  def_lib_name = 'libnvrtc.so'
          else:
              raise NVRTCException('NVRTC is not supported on 32-bit platforms.')
  
          if len(lib_path) == 0:
              name = def_lib_name
          else:
              name = lib_path
  
          self._lib = cdll.LoadLibrary(name)
  
          self._lib.nvrtcCreateProgram.argtypes = [
              POINTER(c_void_p),  # prog
              c_char_p,           # src
              c_char_p,           # name
              c_int,              # numHeaders
              POINTER(c_char_p),  # headers
              POINTER(c_char_p)   # include_names
          ]
          self._lib.nvrtcCreateProgram.restype = c_int
  
          self._lib.nvrtcDestroyProgram.argtypes = [
              POINTER(c_void_p)   # prog
          ]
          self._lib.nvrtcDestroyProgram.restype = c_int
  
          self._lib.nvrtcCompileProgram.argtypes = [
              c_void_p,           # prog
              c_int,              # numOptions
              POINTER(c_char_p)   # options
          ]
          self._lib.nvrtcCompileProgram.restype = c_int
  
          self._lib.nvrtcGetPTXSize.argtypes = [
              c_void_p,           # prog
              POINTER(c_size_t)   # ptxSizeRet
          ]
          self._lib.nvrtcGetPTXSize.restype = c_int
  
          self._lib.nvrtcGetPTX.argtypes = [
              c_void_p,           # prog
              c_char_p            # ptx
          ]
          self._lib.nvrtcGetPTX.restype = c_int
  
          self._lib.nvrtcGetProgramLogSize.argtypes = [
              c_void_p,           # prog
              POINTER(c_size_t)   # logSizeRet
          ]
          self._lib.nvrtcGetProgramLogSize.restype = c_int
  
          self._lib.nvrtcGetProgramLog.argtypes = [
              c_void_p,           # prog
              c_char_p            # log
          ]
          self._lib.nvrtcGetProgramLog.restype = c_int
  
          self._lib.nvrtcAddNameExpression.argtypes = [
              c_void_p,           # prog
              c_char_p            # nameExpression
          ]
          self._lib.nvrtcAddNameExpression.restype = c_int
  
          self._lib.nvrtcGetLoweredName.argtypes = [
              c_void_p,           # prog
              c_char_p,           # nameExpression
              POINTER(c_char_p)   # loweredName
          ]
          self._lib.nvrtcGetLoweredName.restype = c_int
  
          self._lib.nvrtcGetErrorString.argtypes = [
              c_int               # result
          ]
          self._lib.nvrtcGetErrorString.restype = c_char_p
  
          self._lib.nvrtcVersion.argtypes = [
              POINTER(c_int),     # major
              POINTER(c_int)      # minor
          ]
          self._lib.nvrtcVersion.restype = c_int