Skip to content

Commit f14d76b

Browse files
committed
Resolve signed/unsigned runtime error. Use uintptr_t consistently.
https://github.com/NVIDIA/cuda-python/actions/runs/14224673173/job/39861750852?pr=447#logs ``` =================================== ERRORS ==================================== _____________________ ERROR collecting test_nvjitlink.py ______________________ tests\test_nvjitlink.py:62: in <module> not check_nvjitlink_usable(), reason="nvJitLink not usable, maybe not installed or too old (<12.3)" tests\test_nvjitlink.py:58: in check_nvjitlink_usable return inner_nvjitlink._inspect_function_pointer("__nvJitLinkVersion") != 0 cuda\\bindings\\_internal\\nvjitlink.pyx:221: in cuda.bindings._internal.nvjitlink._inspect_function_pointer ??? cuda\\bindings\\_internal\\nvjitlink.pyx:224: in cuda.bindings._internal.nvjitlink._inspect_function_pointer ??? cuda\\bindings\\_internal\\nvjitlink.pyx:172: in cuda.bindings._internal.nvjitlink._inspect_function_pointers ??? cuda\\bindings\\_internal\\nvjitlink.pyx:73: in cuda.bindings._internal.nvjitlink._check_or_init_nvjitlink ??? cuda\\bindings\\_internal\\nvjitlink.pyx:46: in cuda.bindings._internal.nvjitlink.load_library ??? E OverflowError: can't convert negative value to size_t ```
1 parent 870f2e9 commit f14d76b

3 files changed

Lines changed: 62 additions & 66 deletions

File tree

cuda_bindings/cuda/bindings/_internal/nvjitlink_windows.pyx

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@
44
#
55
# This code was automatically generated across versions from 12.0.1 to 12.6.2. Do not modify it directly.
66

7-
from libc.stdint cimport intptr_t, uintptr_t
7+
from libc.stdint cimport uintptr_t
88

99
from .utils import FunctionNotFoundError, NotSupportedError
1010

1111
from cuda.bindings import path_finder
1212

1313
import os
14-
import site
15-
1614
import win32api
1715

1816

@@ -53,7 +51,7 @@ cdef int _check_or_init_nvjitlink() except -1 nogil:
5351
return 0
5452

5553
cdef int err, driver_ver
56-
cdef intptr_t handle
54+
cdef uintptr_t handle
5755
with gil:
5856
# Load driver to check version
5957
try:
@@ -62,98 +60,98 @@ cdef int _check_or_init_nvjitlink() except -1 nogil:
6260
raise NotSupportedError(f'CUDA driver is not found ({e})')
6361
global __cuDriverGetVersion
6462
if __cuDriverGetVersion == NULL:
65-
__cuDriverGetVersion = <void*><intptr_t>win32api.GetProcAddress(nvcuda_handle, 'cuDriverGetVersion')
63+
__cuDriverGetVersion = <void*><uintptr_t>win32api.GetProcAddress(nvcuda_handle, 'cuDriverGetVersion')
6664
if __cuDriverGetVersion == NULL:
6765
raise RuntimeError('something went wrong')
6866
err = (<int (*)(int*) nogil>__cuDriverGetVersion)(&driver_ver)
6967
if err != 0:
7068
raise RuntimeError('something went wrong')
7169

7270
# Load library
73-
handle = <intptr_t>load_library(driver_ver)
71+
handle = <uintptr_t>load_library(driver_ver)
7472

7573
# Load function
7674
global __nvJitLinkCreate
7775
try:
78-
__nvJitLinkCreate = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkCreate')
76+
__nvJitLinkCreate = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkCreate')
7977
except:
8078
pass
8179

8280
global __nvJitLinkDestroy
8381
try:
84-
__nvJitLinkDestroy = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkDestroy')
82+
__nvJitLinkDestroy = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkDestroy')
8583
except:
8684
pass
8785

8886
global __nvJitLinkAddData
8987
try:
90-
__nvJitLinkAddData = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkAddData')
88+
__nvJitLinkAddData = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkAddData')
9189
except:
9290
pass
9391

9492
global __nvJitLinkAddFile
9593
try:
96-
__nvJitLinkAddFile = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkAddFile')
94+
__nvJitLinkAddFile = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkAddFile')
9795
except:
9896
pass
9997

10098
global __nvJitLinkComplete
10199
try:
102-
__nvJitLinkComplete = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkComplete')
100+
__nvJitLinkComplete = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkComplete')
103101
except:
104102
pass
105103

106104
global __nvJitLinkGetLinkedCubinSize
107105
try:
108-
__nvJitLinkGetLinkedCubinSize = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetLinkedCubinSize')
106+
__nvJitLinkGetLinkedCubinSize = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetLinkedCubinSize')
109107
except:
110108
pass
111109

112110
global __nvJitLinkGetLinkedCubin
113111
try:
114-
__nvJitLinkGetLinkedCubin = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetLinkedCubin')
112+
__nvJitLinkGetLinkedCubin = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetLinkedCubin')
115113
except:
116114
pass
117115

118116
global __nvJitLinkGetLinkedPtxSize
119117
try:
120-
__nvJitLinkGetLinkedPtxSize = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetLinkedPtxSize')
118+
__nvJitLinkGetLinkedPtxSize = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetLinkedPtxSize')
121119
except:
122120
pass
123121

124122
global __nvJitLinkGetLinkedPtx
125123
try:
126-
__nvJitLinkGetLinkedPtx = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetLinkedPtx')
124+
__nvJitLinkGetLinkedPtx = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetLinkedPtx')
127125
except:
128126
pass
129127

130128
global __nvJitLinkGetErrorLogSize
131129
try:
132-
__nvJitLinkGetErrorLogSize = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetErrorLogSize')
130+
__nvJitLinkGetErrorLogSize = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetErrorLogSize')
133131
except:
134132
pass
135133

136134
global __nvJitLinkGetErrorLog
137135
try:
138-
__nvJitLinkGetErrorLog = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetErrorLog')
136+
__nvJitLinkGetErrorLog = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetErrorLog')
139137
except:
140138
pass
141139

142140
global __nvJitLinkGetInfoLogSize
143141
try:
144-
__nvJitLinkGetInfoLogSize = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetInfoLogSize')
142+
__nvJitLinkGetInfoLogSize = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetInfoLogSize')
145143
except:
146144
pass
147145

148146
global __nvJitLinkGetInfoLog
149147
try:
150-
__nvJitLinkGetInfoLog = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetInfoLog')
148+
__nvJitLinkGetInfoLog = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkGetInfoLog')
151149
except:
152150
pass
153151

154152
global __nvJitLinkVersion
155153
try:
156-
__nvJitLinkVersion = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvJitLinkVersion')
154+
__nvJitLinkVersion = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvJitLinkVersion')
157155
except:
158156
pass
159157

@@ -173,46 +171,46 @@ cpdef dict _inspect_function_pointers():
173171
cdef dict data = {}
174172

175173
global __nvJitLinkCreate
176-
data["__nvJitLinkCreate"] = <intptr_t>__nvJitLinkCreate
174+
data["__nvJitLinkCreate"] = <uintptr_t>__nvJitLinkCreate
177175

178176
global __nvJitLinkDestroy
179-
data["__nvJitLinkDestroy"] = <intptr_t>__nvJitLinkDestroy
177+
data["__nvJitLinkDestroy"] = <uintptr_t>__nvJitLinkDestroy
180178

181179
global __nvJitLinkAddData
182-
data["__nvJitLinkAddData"] = <intptr_t>__nvJitLinkAddData
180+
data["__nvJitLinkAddData"] = <uintptr_t>__nvJitLinkAddData
183181

184182
global __nvJitLinkAddFile
185-
data["__nvJitLinkAddFile"] = <intptr_t>__nvJitLinkAddFile
183+
data["__nvJitLinkAddFile"] = <uintptr_t>__nvJitLinkAddFile
186184

187185
global __nvJitLinkComplete
188-
data["__nvJitLinkComplete"] = <intptr_t>__nvJitLinkComplete
186+
data["__nvJitLinkComplete"] = <uintptr_t>__nvJitLinkComplete
189187

190188
global __nvJitLinkGetLinkedCubinSize
191-
data["__nvJitLinkGetLinkedCubinSize"] = <intptr_t>__nvJitLinkGetLinkedCubinSize
189+
data["__nvJitLinkGetLinkedCubinSize"] = <uintptr_t>__nvJitLinkGetLinkedCubinSize
192190

193191
global __nvJitLinkGetLinkedCubin
194-
data["__nvJitLinkGetLinkedCubin"] = <intptr_t>__nvJitLinkGetLinkedCubin
192+
data["__nvJitLinkGetLinkedCubin"] = <uintptr_t>__nvJitLinkGetLinkedCubin
195193

196194
global __nvJitLinkGetLinkedPtxSize
197-
data["__nvJitLinkGetLinkedPtxSize"] = <intptr_t>__nvJitLinkGetLinkedPtxSize
195+
data["__nvJitLinkGetLinkedPtxSize"] = <uintptr_t>__nvJitLinkGetLinkedPtxSize
198196

199197
global __nvJitLinkGetLinkedPtx
200-
data["__nvJitLinkGetLinkedPtx"] = <intptr_t>__nvJitLinkGetLinkedPtx
198+
data["__nvJitLinkGetLinkedPtx"] = <uintptr_t>__nvJitLinkGetLinkedPtx
201199

202200
global __nvJitLinkGetErrorLogSize
203-
data["__nvJitLinkGetErrorLogSize"] = <intptr_t>__nvJitLinkGetErrorLogSize
201+
data["__nvJitLinkGetErrorLogSize"] = <uintptr_t>__nvJitLinkGetErrorLogSize
204202

205203
global __nvJitLinkGetErrorLog
206-
data["__nvJitLinkGetErrorLog"] = <intptr_t>__nvJitLinkGetErrorLog
204+
data["__nvJitLinkGetErrorLog"] = <uintptr_t>__nvJitLinkGetErrorLog
207205

208206
global __nvJitLinkGetInfoLogSize
209-
data["__nvJitLinkGetInfoLogSize"] = <intptr_t>__nvJitLinkGetInfoLogSize
207+
data["__nvJitLinkGetInfoLogSize"] = <uintptr_t>__nvJitLinkGetInfoLogSize
210208

211209
global __nvJitLinkGetInfoLog
212-
data["__nvJitLinkGetInfoLog"] = <intptr_t>__nvJitLinkGetInfoLog
210+
data["__nvJitLinkGetInfoLog"] = <uintptr_t>__nvJitLinkGetInfoLog
213211

214212
global __nvJitLinkVersion
215-
data["__nvJitLinkVersion"] = <intptr_t>__nvJitLinkVersion
213+
data["__nvJitLinkVersion"] = <uintptr_t>__nvJitLinkVersion
216214

217215
func_ptrs = data
218216
return data

cuda_bindings/cuda/bindings/_internal/nvvm_windows.pyx

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@
44
#
55
# This code was automatically generated across versions from 11.0.3 to 12.8.0. Do not modify it directly.
66

7-
from libc.stdint cimport intptr_t, uintptr_t
7+
from libc.stdint cimport uintptr_t
88

99
from .utils import FunctionNotFoundError, NotSupportedError
1010

1111
from cuda.bindings import path_finder
1212

1313
import os
14-
import site
15-
1614
import win32api
1715

1816

@@ -51,7 +49,7 @@ cdef int _check_or_init_nvvm() except -1 nogil:
5149
return 0
5250

5351
cdef int err, driver_ver
54-
cdef intptr_t handle
52+
cdef uintptr_t handle
5553
with gil:
5654
# Load driver to check version
5755
try:
@@ -60,86 +58,86 @@ cdef int _check_or_init_nvvm() except -1 nogil:
6058
raise NotSupportedError(f'CUDA driver is not found ({e})')
6159
global __cuDriverGetVersion
6260
if __cuDriverGetVersion == NULL:
63-
__cuDriverGetVersion = <void*><intptr_t>win32api.GetProcAddress(nvcuda_handle, 'cuDriverGetVersion')
61+
__cuDriverGetVersion = <void*><uintptr_t>win32api.GetProcAddress(nvcuda_handle, 'cuDriverGetVersion')
6462
if __cuDriverGetVersion == NULL:
6563
raise RuntimeError('something went wrong')
6664
err = (<int (*)(int*) nogil>__cuDriverGetVersion)(&driver_ver)
6765
if err != 0:
6866
raise RuntimeError('something went wrong')
6967

7068
# Load library
71-
handle = <intptr_t>load_library(driver_ver)
69+
handle = <uintptr_t>load_library(driver_ver)
7270

7371
# Load function
7472
global __nvvmVersion
7573
try:
76-
__nvvmVersion = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmVersion')
74+
__nvvmVersion = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmVersion')
7775
except:
7876
pass
7977

8078
global __nvvmIRVersion
8179
try:
82-
__nvvmIRVersion = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmIRVersion')
80+
__nvvmIRVersion = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmIRVersion')
8381
except:
8482
pass
8583

8684
global __nvvmCreateProgram
8785
try:
88-
__nvvmCreateProgram = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmCreateProgram')
86+
__nvvmCreateProgram = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmCreateProgram')
8987
except:
9088
pass
9189

9290
global __nvvmDestroyProgram
9391
try:
94-
__nvvmDestroyProgram = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmDestroyProgram')
92+
__nvvmDestroyProgram = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmDestroyProgram')
9593
except:
9694
pass
9795

9896
global __nvvmAddModuleToProgram
9997
try:
100-
__nvvmAddModuleToProgram = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmAddModuleToProgram')
98+
__nvvmAddModuleToProgram = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmAddModuleToProgram')
10199
except:
102100
pass
103101

104102
global __nvvmLazyAddModuleToProgram
105103
try:
106-
__nvvmLazyAddModuleToProgram = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmLazyAddModuleToProgram')
104+
__nvvmLazyAddModuleToProgram = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmLazyAddModuleToProgram')
107105
except:
108106
pass
109107

110108
global __nvvmCompileProgram
111109
try:
112-
__nvvmCompileProgram = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmCompileProgram')
110+
__nvvmCompileProgram = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmCompileProgram')
113111
except:
114112
pass
115113

116114
global __nvvmVerifyProgram
117115
try:
118-
__nvvmVerifyProgram = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmVerifyProgram')
116+
__nvvmVerifyProgram = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmVerifyProgram')
119117
except:
120118
pass
121119

122120
global __nvvmGetCompiledResultSize
123121
try:
124-
__nvvmGetCompiledResultSize = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmGetCompiledResultSize')
122+
__nvvmGetCompiledResultSize = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmGetCompiledResultSize')
125123
except:
126124
pass
127125

128126
global __nvvmGetCompiledResult
129127
try:
130-
__nvvmGetCompiledResult = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmGetCompiledResult')
128+
__nvvmGetCompiledResult = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmGetCompiledResult')
131129
except:
132130
pass
133131

134132
global __nvvmGetProgramLogSize
135133
try:
136-
__nvvmGetProgramLogSize = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmGetProgramLogSize')
134+
__nvvmGetProgramLogSize = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmGetProgramLogSize')
137135
except:
138136
pass
139137

140138
global __nvvmGetProgramLog
141139
try:
142-
__nvvmGetProgramLog = <void*><intptr_t>win32api.GetProcAddress(handle, 'nvvmGetProgramLog')
140+
__nvvmGetProgramLog = <void*><uintptr_t>win32api.GetProcAddress(handle, 'nvvmGetProgramLog')
143141
except:
144142
pass
145143

@@ -159,40 +157,40 @@ cpdef dict _inspect_function_pointers():
159157
cdef dict data = {}
160158

161159
global __nvvmVersion
162-
data["__nvvmVersion"] = <intptr_t>__nvvmVersion
160+
data["__nvvmVersion"] = <uintptr_t>__nvvmVersion
163161

164162
global __nvvmIRVersion
165-
data["__nvvmIRVersion"] = <intptr_t>__nvvmIRVersion
163+
data["__nvvmIRVersion"] = <uintptr_t>__nvvmIRVersion
166164

167165
global __nvvmCreateProgram
168-
data["__nvvmCreateProgram"] = <intptr_t>__nvvmCreateProgram
166+
data["__nvvmCreateProgram"] = <uintptr_t>__nvvmCreateProgram
169167

170168
global __nvvmDestroyProgram
171-
data["__nvvmDestroyProgram"] = <intptr_t>__nvvmDestroyProgram
169+
data["__nvvmDestroyProgram"] = <uintptr_t>__nvvmDestroyProgram
172170

173171
global __nvvmAddModuleToProgram
174-
data["__nvvmAddModuleToProgram"] = <intptr_t>__nvvmAddModuleToProgram
172+
data["__nvvmAddModuleToProgram"] = <uintptr_t>__nvvmAddModuleToProgram
175173

176174
global __nvvmLazyAddModuleToProgram
177-
data["__nvvmLazyAddModuleToProgram"] = <intptr_t>__nvvmLazyAddModuleToProgram
175+
data["__nvvmLazyAddModuleToProgram"] = <uintptr_t>__nvvmLazyAddModuleToProgram
178176

179177
global __nvvmCompileProgram
180-
data["__nvvmCompileProgram"] = <intptr_t>__nvvmCompileProgram
178+
data["__nvvmCompileProgram"] = <uintptr_t>__nvvmCompileProgram
181179

182180
global __nvvmVerifyProgram
183-
data["__nvvmVerifyProgram"] = <intptr_t>__nvvmVerifyProgram
181+
data["__nvvmVerifyProgram"] = <uintptr_t>__nvvmVerifyProgram
184182

185183
global __nvvmGetCompiledResultSize
186-
data["__nvvmGetCompiledResultSize"] = <intptr_t>__nvvmGetCompiledResultSize
184+
data["__nvvmGetCompiledResultSize"] = <uintptr_t>__nvvmGetCompiledResultSize
187185

188186
global __nvvmGetCompiledResult
189-
data["__nvvmGetCompiledResult"] = <intptr_t>__nvvmGetCompiledResult
187+
data["__nvvmGetCompiledResult"] = <uintptr_t>__nvvmGetCompiledResult
190188

191189
global __nvvmGetProgramLogSize
192-
data["__nvvmGetProgramLogSize"] = <intptr_t>__nvvmGetProgramLogSize
190+
data["__nvvmGetProgramLogSize"] = <uintptr_t>__nvvmGetProgramLogSize
193191

194192
global __nvvmGetProgramLog
195-
data["__nvvmGetProgramLog"] = <intptr_t>__nvvmGetProgramLog
193+
data["__nvvmGetProgramLog"] = <uintptr_t>__nvvmGetProgramLog
196194

197195
func_ptrs = data
198196
return data

cuda_bindings/cuda/bindings/_path_finder_utils/load_nvidia_dynamic_library.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ def load_nvidia_dynamic_library(name: str) -> int:
1616
raise ctypes.WinError(ctypes.get_last_error())
1717
except Exception as e:
1818
raise RuntimeError(f"Failed to load DLL at {dl_path}: {e}") from e
19-
return handle
19+
return ctypes.c_size_t(handle).value # Ensures unsigned result
2020
else:
2121
try:
2222
handle = ctypes.CDLL(dl_path, mode=os.RTLD_NOW | os.RTLD_GLOBAL)
23-
return handle._handle # Raw void* as int
23+
return handle._handle # Raw void* as unsigned int
2424
except OSError as e:
2525
raise RuntimeError(f"Failed to dlopen {dl_path}: {e}") from e

0 commit comments

Comments
 (0)