cuda-python icon indicating copy to clipboard operation
cuda-python copied to clipboard

`cuLibraryLoadData` raises `TypeError: 'int' object is not iterable`

Open leofang opened this issue 1 year ago • 1 comments

This line is wrong: https://github.com/NVIDIA/cuda-python/blob/b88592ae51c35af3bf1399a48d2180a6d9cec5cc/cuda/cuda.pyx.in#L21417 numJitOptions is an int, so it cannot be iterated over. What's should have been there in the zip is jitOptions.

leofang avatar Jul 05 '24 22:07 leofang

I confirm this simple patch would make it work:

diff --git a/cuda/cuda.pyx.in b/cuda/cuda.pyx.in
index 74f49d9..e46ea4b 100644
--- a/cuda/cuda.pyx.in
+++ b/cuda/cuda.pyx.in
@@ -21414,12 +21414,12 @@ def cuLibraryLoadData(code, jitOptions : Optional[List[CUjit_option]], jitOption
     ccode = utils.HelperInputVoidPtr(code)
     cdef void* ccode_ptr = <void*><void_ptr>ccode.cptr
     cdef vector[ccuda.CUjit_option] cjitOptions = [pyjitOptions.value for pyjitOptions in (jitOptions)]
-    pylist = [utils.HelperCUjit_option(pyoptions, pyoptionValues) for pyoptions, pyoptionValues in zip(numJitOptions, jitOptionsValues)]
+    pylist = [utils.HelperCUjit_option(pyoptions, pyoptionValues) for pyoptions, pyoptionValues in zip(jitOptions, jitOptionsValues)]
     cdef utils.InputVoidPtrPtrHelper voidStarHelperjitOptionsValues = utils.InputVoidPtrPtrHelper(pylist)
     if numJitOptions > len(jitOptions): raise RuntimeError("List is too small: " + str(len(jitOptions)) + " < " + str(numJitOptions))
     if numJitOptions > len(jitOptionsValues): raise RuntimeError("List is too small: " + str(len(jitOptionsValues)) + " < " + str(numJitOptions))
     cdef vector[ccuda.CUlibraryOption] clibraryOptions = [pylibraryOptions.value for pylibraryOptions in (libraryOptions)]
-    pylist = [utils.HelperCUlibraryOption(pyoptions, pyoptionValues) for pyoptions, pyoptionValues in zip(numLibraryOptions, libraryOptionValues)]
+    pylist = [utils.HelperCUlibraryOption(pyoptions, pyoptionValues) for pyoptions, pyoptionValues in zip(libraryOptions, libraryOptionValues)]
     cdef utils.InputVoidPtrPtrHelper voidStarHelperlibraryOptionValues = utils.InputVoidPtrPtrHelper(pylist)
     if numLibraryOptions > len(libraryOptions): raise RuntimeError("List is too small: " + str(len(libraryOptions)) + " < " + str(numLibraryOptions))
     if numLibraryOptions > len(libraryOptionValues): raise RuntimeError("List is too small: " + str(len(libraryOptionValues)) + " < " + str(numLibraryOptions))
@@ -46813,4 +46813,4 @@ def sizeof(objType):
     {{if True}}
     if objType == VdpOutputSurface:
         return sizeof(ccuda.VdpOutputSurface){{endif}}
-    raise TypeError("Unknown type: " + str(objType))
\ No newline at end of file
+    raise TypeError("Unknown type: " + str(objType))

leofang avatar Jul 09 '24 00:07 leofang

Fixed with 12.6 release, closing.

vzhurba01 avatar Aug 01 '24 19:08 vzhurba01