Coverage for cuda/bindings/_internal/nvvm.pyx: 78.40%

213 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-07-29 01:38 +0000

1# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 

2# 

3# SPDX-License-Identifier: Apache-2.0 

4# 

5# This code was automatically generated across versions from 12.0.1 to 13.3.0. Do not modify it directly. 

6# CYTHON-BINDINGS-GENERATED-DO-NOT-MODIFY-THIS-FILE: format=1; content-sha256=e0b66c45b6f66a7ab7bae49939a26007efef95651084f1ef09fd32848260f2c8 

7  

8  

9# <<<< PREAMBLE CONTENT >>>> 

10  

11cdef extern from * nogil: 

12 """ 

13 #if defined(_MSC_VER) && !defined(__clang__) 

14 #include <intrin.h> 

15 static __forceinline int atomic_int_load(int *p) { 

16 int v = *(int volatile *)p; _ReadBarrier(); return v; 

17 } 

18 static __forceinline void atomic_int_store(int *p, int v) { 

19 _WriteBarrier(); *(int volatile *)p = v; 

20 } 

21 #elif defined(__cplusplus) 

22 /* GCC/Clang __atomic builtins work in any C++ standard without headers */ 

23 static inline int atomic_int_load(int *p) { 

24 return __atomic_load_n(p, __ATOMIC_ACQUIRE); 

25 } 

26 static inline void atomic_int_store(int *p, int v) { 

27 __atomic_store_n(p, v, __ATOMIC_RELEASE); 

28 } 

29 #else 

30 #include <stdatomic.h> 

31 static inline int atomic_int_load(int *p) { 

32 return (int)atomic_load_explicit((atomic_int *)p, memory_order_acquire); 

33 } 

34 static inline void atomic_int_store(int *p, int v) { 

35 atomic_store_explicit((atomic_int *)p, v, memory_order_release); 

36 } 

37 #endif 

38  

39 """ 

40 cdef int _cyb_atomic_int_load "atomic_int_load"(int *p) nogil 

41 cdef void _cyb_atomic_int_store "atomic_int_store"(int *p, int v) nogil 

42  

43cdef extern from "<dlfcn.h>": 

44 void* _cyb_dlsym "dlsym"(void*, const char*) nogil 

45 const void * _cyb_RTLD_DEFAULT "RTLD_DEFAULT" 

46  

47from libc.stdint cimport intptr_t as _cyb_intptr_t 

48  

49import threading as _cyb_threading 

50  

51cdef int _cyb___py_nvvm_init = 0 

52cdef dict _cyb_func_ptrs = None 

53cdef object _cyb_symbol_lock = _cyb_threading.Lock() 

54  

55# <<<< END OF PREAMBLE CONTENT >>>> 

56  

57from libc.stdint cimport uintptr_t 

58  

59from .utils import FunctionNotFoundError, NotSupportedError 

60from cuda.pathfinder import load_nvidia_dynamic_lib 

61  

62  

63############################################################################### 

64# Wrapper init 

65############################################################################### 

66  

67cdef void* __nvvmGetErrorString = NULL 

68cdef void* __nvvmVersion = NULL 

69cdef void* __nvvmIRVersion = NULL 

70cdef void* __nvvmCreateProgram = NULL 

71cdef void* __nvvmDestroyProgram = NULL 

72cdef void* __nvvmAddModuleToProgram = NULL 

73cdef void* __nvvmLazyAddModuleToProgram = NULL 

74cdef void* __nvvmCompileProgram = NULL 

75cdef void* __nvvmVerifyProgram = NULL 

76cdef void* __nvvmGetCompiledResultSize = NULL 

77cdef void* __nvvmGetCompiledResult = NULL 

78cdef void* __nvvmGetProgramLogSize = NULL 

79cdef void* __nvvmGetProgramLog = NULL 

80cdef void* __nvvmLLVMVersion = NULL 

81  

82cdef int _init_nvvm() except -1 nogil: 

83 global _cyb___py_nvvm_init 

84 cdef void* handle = NULL 

85 with gil, _cyb_symbol_lock: 

86 if _cyb___py_nvvm_init: return 0 

87  

88 global __nvvmGetErrorString 

89 __nvvmGetErrorString = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetErrorString') 

90 if __nvvmGetErrorString == NULL: 

91 if handle == NULL: 

92 handle = load_library() 

93 __nvvmGetErrorString = _cyb_dlsym(handle, 'nvvmGetErrorString') 

94  

95 global __nvvmVersion 

96 __nvvmVersion = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmVersion') 

97 if __nvvmVersion == NULL: 

98 if handle == NULL: 

99 handle = load_library() 

100 __nvvmVersion = _cyb_dlsym(handle, 'nvvmVersion') 

101  

102 global __nvvmIRVersion 

103 __nvvmIRVersion = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmIRVersion') 

104 if __nvvmIRVersion == NULL: 

105 if handle == NULL: 

106 handle = load_library() 

107 __nvvmIRVersion = _cyb_dlsym(handle, 'nvvmIRVersion') 

108  

109 global __nvvmCreateProgram 

110 __nvvmCreateProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmCreateProgram') 

111 if __nvvmCreateProgram == NULL: 

112 if handle == NULL: 

113 handle = load_library() 

114 __nvvmCreateProgram = _cyb_dlsym(handle, 'nvvmCreateProgram') 

115  

116 global __nvvmDestroyProgram 

117 __nvvmDestroyProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmDestroyProgram') 

118 if __nvvmDestroyProgram == NULL: 

119 if handle == NULL: 

120 handle = load_library() 

121 __nvvmDestroyProgram = _cyb_dlsym(handle, 'nvvmDestroyProgram') 

122  

123 global __nvvmAddModuleToProgram 

124 __nvvmAddModuleToProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmAddModuleToProgram') 

125 if __nvvmAddModuleToProgram == NULL: 

126 if handle == NULL: 

127 handle = load_library() 

128 __nvvmAddModuleToProgram = _cyb_dlsym(handle, 'nvvmAddModuleToProgram') 

129  

130 global __nvvmLazyAddModuleToProgram 

131 __nvvmLazyAddModuleToProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmLazyAddModuleToProgram') 

132 if __nvvmLazyAddModuleToProgram == NULL: 

133 if handle == NULL: 

134 handle = load_library() 1aYZj5k6l7m8noWXb9c!d#e$f%g'h(i)0Nw{*34O+P,Q-R.S/T:pqrst

135 __nvvmLazyAddModuleToProgram = _cyb_dlsym(handle, 'nvvmLazyAddModuleToProgram') 1YZj5k6l7m8noWXb9c!d#e$f%g'h(i)0Nw{*34O+P,Q-R.S/T:pqrst

136  

137 global __nvvmCompileProgram 

138 __nvvmCompileProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmCompileProgram') 

139 if __nvvmCompileProgram == NULL: 

140 if handle == NULL: 

141 handle = load_library() 

142 __nvvmCompileProgram = _cyb_dlsym(handle, 'nvvmCompileProgram') 

143  

144 global __nvvmVerifyProgram 

145 __nvvmVerifyProgram = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmVerifyProgram') 

146 if __nvvmVerifyProgram == NULL: 

147 if handle == NULL: 

148 handle = load_library() 

149 __nvvmVerifyProgram = _cyb_dlsym(handle, 'nvvmVerifyProgram') 

150  

151 global __nvvmGetCompiledResultSize 

152 __nvvmGetCompiledResultSize = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetCompiledResultSize') 

153 if __nvvmGetCompiledResultSize == NULL: 

154 if handle == NULL: 

155 handle = load_library() 

156 __nvvmGetCompiledResultSize = _cyb_dlsym(handle, 'nvvmGetCompiledResultSize') 

157  

158 global __nvvmGetCompiledResult 

159 __nvvmGetCompiledResult = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetCompiledResult') 

160 if __nvvmGetCompiledResult == NULL: 

161 if handle == NULL: 

162 handle = load_library() 

163 __nvvmGetCompiledResult = _cyb_dlsym(handle, 'nvvmGetCompiledResult') 

164  

165 global __nvvmGetProgramLogSize 

166 __nvvmGetProgramLogSize = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetProgramLogSize') 

167 if __nvvmGetProgramLogSize == NULL: 

168 if handle == NULL: 

169 handle = load_library() 

170 __nvvmGetProgramLogSize = _cyb_dlsym(handle, 'nvvmGetProgramLogSize') 

171  

172 global __nvvmGetProgramLog 

173 __nvvmGetProgramLog = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmGetProgramLog') 

174 if __nvvmGetProgramLog == NULL: 

175 if handle == NULL: 

176 handle = load_library() 

177 __nvvmGetProgramLog = _cyb_dlsym(handle, 'nvvmGetProgramLog') 

178  

179 global __nvvmLLVMVersion 

180 __nvvmLLVMVersion = _cyb_dlsym(_cyb_RTLD_DEFAULT, 'nvvmLLVMVersion') 

181 if __nvvmLLVMVersion == NULL: 

182 if handle == NULL: 

183 handle = load_library() 

184 __nvvmLLVMVersion = _cyb_dlsym(handle, 'nvvmLLVMVersion') 

185  

186 _cyb_atomic_int_store(<int *>&_cyb___py_nvvm_init, 1) 

187 return 0 

188  

189cdef inline int _check_or_init_nvvm() except -1 nogil: 

190 if _cyb_atomic_int_load(<int *>&_cyb___py_nvvm_init): 2a | Y Z j 5 k 6 l 7 m 8 n o W X b 9 c ! d # e $ f % g ' h ( i ) 0 N w { * 3 4 O + P , Q - R . S / T : ; } x ~ y ab1 U 2 V z A B C D E F G H I J K L M bbu v = ? @ [ ] ^ _ ` p q r s t

191 return 0 2a | Y Z j 5 k 6 l 7 m 8 n o W X b 9 c ! d # e $ f % g ' h ( i ) 0 N w { * 3 4 O + P , Q - R . S / T : ; } x ~ y ab1 U 2 V z A B C D E F G H I J K L M bbu v = ? @ [ ] ^ _ ` p q r s t

192  

193 return _init_nvvm() 

194  

195  

196cpdef dict _inspect_function_pointers(): 1apqrst

197 global _cyb_func_ptrs 

198 if _cyb_func_ptrs is not None: 

199 return _cyb_func_ptrs 

200  

201 _check_or_init_nvvm() 

202 cdef dict data = {} 

203 global __nvvmGetErrorString 

204 data["__nvvmGetErrorString"] = <_cyb_intptr_t>__nvvmGetErrorString 

205  

206 global __nvvmVersion 

207 data["__nvvmVersion"] = <_cyb_intptr_t>__nvvmVersion 

208  

209 global __nvvmIRVersion 

210 data["__nvvmIRVersion"] = <_cyb_intptr_t>__nvvmIRVersion 

211  

212 global __nvvmCreateProgram 

213 data["__nvvmCreateProgram"] = <_cyb_intptr_t>__nvvmCreateProgram 

214  

215 global __nvvmDestroyProgram 

216 data["__nvvmDestroyProgram"] = <_cyb_intptr_t>__nvvmDestroyProgram 

217  

218 global __nvvmAddModuleToProgram 

219 data["__nvvmAddModuleToProgram"] = <_cyb_intptr_t>__nvvmAddModuleToProgram 

220  

221 global __nvvmLazyAddModuleToProgram 

222 data["__nvvmLazyAddModuleToProgram"] = <_cyb_intptr_t>__nvvmLazyAddModuleToProgram 1a4

223  

224 global __nvvmCompileProgram 

225 data["__nvvmCompileProgram"] = <_cyb_intptr_t>__nvvmCompileProgram 1a4

226  

227 global __nvvmVerifyProgram 

228 data["__nvvmVerifyProgram"] = <_cyb_intptr_t>__nvvmVerifyProgram 

229  

230 global __nvvmGetCompiledResultSize 

231 data["__nvvmGetCompiledResultSize"] = <_cyb_intptr_t>__nvvmGetCompiledResultSize 1a56789!#$%'()*+,-./:pqrst

232  

233 global __nvvmGetCompiledResult 

234 data["__nvvmGetCompiledResult"] = <_cyb_intptr_t>__nvvmGetCompiledResult 

235  

236 global __nvvmGetProgramLogSize 

237 data["__nvvmGetProgramLogSize"] = <_cyb_intptr_t>__nvvmGetProgramLogSize 

238  

239 global __nvvmGetProgramLog 

240 data["__nvvmGetProgramLog"] = <_cyb_intptr_t>__nvvmGetProgramLog 

241  

242 global __nvvmLLVMVersion 

243 data["__nvvmLLVMVersion"] = <_cyb_intptr_t>__nvvmLLVMVersion 

244 _cyb_func_ptrs = data 

245 return data 1aYZjklmnoWXbcdefghi0NwOPQRSTpqrst

246  

247  

248cpdef _inspect_function_pointer(str name): 

249 global _cyb_func_ptrs 

250 if _cyb_func_ptrs is None: 1apqrst

251 _cyb_func_ptrs = _inspect_function_pointers() 1aYZjklmnoWXbcdefghi0NwOPQRSTpqrst

252 return _cyb_func_ptrs[name] 1aYZjklmnoWXbcdefghi0NwOPQRSTpqrst

253  

254  

255  

256  

257cdef void* load_library() except* with gil: 

258 cdef uintptr_t handle = load_nvidia_dynamic_lib("nvvm")._handle_uint 

259 return <void*>handle 

260  

261  

262############################################################################### 

263# Wrapper functions 

264############################################################################### 

265  

266cdef const char* _nvvmGetErrorString(nvvmResult result) except?NULL nogil: 

267 global __nvvmGetErrorString 

268 _check_or_init_nvvm() 1{

269 if __nvvmGetErrorString == NULL: 1a{

270 with gil: 

271 raise FunctionNotFoundError("function nvvmGetErrorString is not found") 

272 return (<const char* (*)(nvvmResult) noexcept nogil>__nvvmGetErrorString)( 1{

273 result) 

274  

275  

276cdef nvvmResult _nvvmVersion(int* major, int* minor) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

277 global __nvvmVersion 

278 _check_or_init_nvvm() 1a4=?@[]^_`

279 if __nvvmVersion == NULL: 1a4=?@[]^_`

280 with gil: 

281 raise FunctionNotFoundError("function nvvmVersion is not found") 1jlnWbcdefghipqrst

282 return (<nvvmResult (*)(int*, int*) noexcept nogil>__nvvmVersion)( 1ajlnWbcdefghi4=?@[]^_`pqrst

283 major, minor) 

284  

285  

286cdef nvvmResult _nvvmIRVersion(int* majorIR, int* minorIR, int* majorDbg, int* minorDbg) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

287 global __nvvmIRVersion 

288 _check_or_init_nvvm() 2a 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ~ abbbu v = ? @ [ ] ^ _ ` p q r s t

289 if __nvvmIRVersion == NULL: 2a 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ~ abbbu v = ? @ [ ] ^ _ ` p q r s t

290 with gil: 

291 raise FunctionNotFoundError("function nvvmIRVersion is not found") 1kmoXOPQRST

292 return (<nvvmResult (*)(int*, int*, int*, int*) noexcept nogil>__nvvmIRVersion)( 2a 5 k 6 7 m 8 o X 9 ! # $ % ' ( ) * O + P , Q - R . S / T : ~ abbbu v = ? @ [ ] ^ _ ` p q r s t

293 majorIR, minorIR, majorDbg, minorDbg) 

294  

295  

296cdef nvvmResult _nvvmCreateProgram(nvvmProgram* prog) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

297 global __nvvmCreateProgram 

298 _check_or_init_nvvm() 1aYZjklmnoWXbcdefghi0NwOPQRST;xy1U2VzABCDEFGHIJKLMuvpqrst

299 if __nvvmCreateProgram == NULL: 1aYZjklmnoWXbcdefghi0NwOPQRST;xy1U2VzABCDEFGHIJKLMuvpqrst

300 with gil: 

301 raise FunctionNotFoundError("function nvvmCreateProgram is not found") 1bcdefghiN

302 return (<nvvmResult (*)(nvvmProgram*) noexcept nogil>__nvvmCreateProgram)( 1aYZjklmnoWXbcdefghi0NwOPQRST;xy1U2VzABCDEFGHIJKLMuvpqrst

303 prog) 

304  

305  

306cdef nvvmResult _nvvmDestroyProgram(nvvmProgram* prog) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

307 global __nvvmDestroyProgram 

308 _check_or_init_nvvm() 1a|YZjklmnoWXbcdefghi0NwOPQRST}xy1U2zABCDEFGHIJKLMuvpqrst

309 if __nvvmDestroyProgram == NULL: 1a|YZjklmnoWXbcdefghi0NwOPQRST}xy1U2zABCDEFGHIJKLMuvpqrst

310 with gil: 

311 raise FunctionNotFoundError("function nvvmDestroyProgram is not found") 1bcdefghiN

312 return (<nvvmResult (*)(nvvmProgram*) noexcept nogil>__nvvmDestroyProgram)( 1a|YZjklmnoWXbcdefghi0NwOPQRST}xy1U2zABCDEFGHIJKLMuvpqrst

313 prog) 

314  

315  

316cdef nvvmResult _nvvmAddModuleToProgram(nvvmProgram prog, const char* buffer, size_t size, const char* name) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

317 global __nvvmAddModuleToProgram 

318 _check_or_init_nvvm() 1ajklmnobcdefghiOPQRST;xy1U2VzABCDEFGHIJKLMuvpqrst

319 if __nvvmAddModuleToProgram == NULL: 1ajklmnobcdefghiOPQRST;xy1U2VzABCDEFGHIJKLMuvpqrst

320 with gil: 

321 raise FunctionNotFoundError("function nvvmAddModuleToProgram is not found") 1jklmnobcdefghiw

322 return (<nvvmResult (*)(nvvmProgram, const char*, size_t, const char*) noexcept nogil>__nvvmAddModuleToProgram)( 1ajklmnobcdefghiwOPQRST;xy1U2VzABCDEFGHIJKLMuvpqrst

323 prog, buffer, size, name) 

324  

325  

326cdef nvvmResult _nvvmLazyAddModuleToProgram(nvvmProgram prog, const char* buffer, size_t size, const char* name) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

327 global __nvvmLazyAddModuleToProgram 

328 _check_or_init_nvvm() 

329 if __nvvmLazyAddModuleToProgram == NULL: 

330 with gil: 

331 raise FunctionNotFoundError("function nvvmLazyAddModuleToProgram is not found") 1jklmnobcdefghiw

332 return (<nvvmResult (*)(nvvmProgram, const char*, size_t, const char*) noexcept nogil>__nvvmLazyAddModuleToProgram)( 1jklmnobcdefghiw

333 prog, buffer, size, name) 

334  

335  

336cdef nvvmResult _nvvmCompileProgram(nvvmProgram prog, int numOptions, const char** options) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

337 global __nvvmCompileProgram 

338 _check_or_init_nvvm() 1ajlnWbcdefghixyVzABCDEFGHIJKLMuvpqrst

339 if __nvvmCompileProgram == NULL: 1ajlnWbcdefghixyVzABCDEFGHIJKLMuvpqrst

340 with gil: 

341 raise FunctionNotFoundError("function nvvmCompileProgram is not found") 13

342 return (<nvvmResult (*)(nvvmProgram, int, const char**) noexcept nogil>__nvvmCompileProgram)( 1ajlnWbcdefghi3xyVzABCDEFGHIJKLMuvpqrst

343 prog, numOptions, options) 

344  

345  

346cdef nvvmResult _nvvmVerifyProgram(nvvmProgram prog, int numOptions, const char** options) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

347 global __nvvmVerifyProgram 

348 _check_or_init_nvvm() 1kmoXOPQRSTxyUVzABCDEFGHIJKLMuv

349 if __nvvmVerifyProgram == NULL: 1kmoXOPQRSTxyUVzABCDEFGHIJKLMuv

350 with gil: 

351 raise FunctionNotFoundError("function nvvmVerifyProgram is not found") 

352 return (<nvvmResult (*)(nvvmProgram, int, const char**) noexcept nogil>__nvvmVerifyProgram)( 1kmoXOPQRSTxyUVzABCDEFGHIJKLMuv

353 prog, numOptions, options) 

354  

355  

356cdef nvvmResult _nvvmGetCompiledResultSize(nvvmProgram prog, size_t* bufferSizeRet) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

357 global __nvvmGetCompiledResultSize 

358 _check_or_init_nvvm() 1bcdefghiNxyVzABCDEFGHIJKLMuv

359 if __nvvmGetCompiledResultSize == NULL: 1bcdefghiNxyVzABCDEFGHIJKLMuv

360 with gil: 

361 raise FunctionNotFoundError("function nvvmGetCompiledResultSize is not found") 

362 return (<nvvmResult (*)(nvvmProgram, size_t*) noexcept nogil>__nvvmGetCompiledResultSize)( 1bcdefghiNxyVzABCDEFGHIJKLMuv

363 prog, bufferSizeRet) 

364  

365  

366cdef nvvmResult _nvvmGetCompiledResult(nvvmProgram prog, char* buffer) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

367 global __nvvmGetCompiledResult 

368 _check_or_init_nvvm() 1bcdefghiNxyVzABCDEFGHIJKLMuv

369 if __nvvmGetCompiledResult == NULL: 1bcdefghiNxyVzABCDEFGHIJKLMuv

370 with gil: 

371 raise FunctionNotFoundError("function nvvmGetCompiledResult is not found") 

372 return (<nvvmResult (*)(nvvmProgram, char*) noexcept nogil>__nvvmGetCompiledResult)( 1bcdefghiNxyVzABCDEFGHIJKLMuv

373 prog, buffer) 

374  

375  

376cdef nvvmResult _nvvmGetProgramLogSize(nvvmProgram prog, size_t* bufferSizeRet) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

377 global __nvvmGetProgramLogSize 

378 _check_or_init_nvvm() 1jklmnobcdefghiwU

379 if __nvvmGetProgramLogSize == NULL: 1jklmnobcdefghiwU

380 with gil: 

381 raise FunctionNotFoundError("function nvvmGetProgramLogSize is not found") 

382 return (<nvvmResult (*)(nvvmProgram, size_t*) noexcept nogil>__nvvmGetProgramLogSize)( 1jklmnobcdefghiwU

383 prog, bufferSizeRet) 

384  

385  

386cdef nvvmResult _nvvmGetProgramLog(nvvmProgram prog, char* buffer) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

387 global __nvvmGetProgramLog 

388 _check_or_init_nvvm() 1jklmnobcdefghiwU

389 if __nvvmGetProgramLog == NULL: 1jklmnobcdefghiwU

390 with gil: 

391 raise FunctionNotFoundError("function nvvmGetProgramLog is not found") 

392 return (<nvvmResult (*)(nvvmProgram, char*) noexcept nogil>__nvvmGetProgramLog)( 1jklmnobcdefghiwU

393 prog, buffer) 

394  

395  

396cdef nvvmResult _nvvmLLVMVersion(const char* arch, int* major) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil: 

397 global __nvvmLLVMVersion 

398 _check_or_init_nvvm() 13

399 if __nvvmLLVMVersion == NULL: 13

400 with gil: 

401 raise FunctionNotFoundError("function nvvmLLVMVersion is not found") 

402 return (<nvvmResult (*)(const char*, int*) noexcept nogil>__nvvmLLVMVersion)( 13

403 arch, major)