Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d8b4acc

Browse files
authored
Fix #789: Remove self-cycle in cuda.bindings.driver (#976)
1 parent fcfeba0 commit d8b4acc

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed

cuda_bindings/cuda/bindings/_lib/utils.pxi.in

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ from libc.string cimport memcpy
99
from enum import Enum as _Enum
1010
import ctypes as _ctypes
1111
cimport cuda.bindings.cydriver as cydriver
12-
import cuda.bindings.driver as _driver
1312
cimport cuda.bindings._lib.param_packer as param_packer
1413

1514
cdef void* _callocWrapper(length, size):
@@ -135,7 +134,7 @@ cdef class _HelperInputVoidPtr:
135134
elif isinstance(ptr, (int)):
136135
# Easy run, user gave us an already configured void** address
137136
self._cptr = <void*><void_ptr>ptr
138-
elif isinstance(ptr, (_driver.CUdeviceptr)):
137+
elif isinstance(ptr, (_driver["CUdeviceptr"])):
139138
self._cptr = <void*><void_ptr>int(ptr)
140139
elif PyObject_CheckBuffer(ptr):
141140
# Easy run, get address from Python Buffer Protocol
@@ -172,7 +171,7 @@ cdef class _HelperCUmemPool_attribute:
172171
{{if 'CU_MEMPOOL_ATTR_USED_MEM_CURRENT'}}cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_USED_MEM_CURRENT,{{endif}}
173172
{{if 'CU_MEMPOOL_ATTR_USED_MEM_HIGH'}}cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_USED_MEM_HIGH,{{endif}}):
174173
if self._is_getter:
175-
self._cuuint64_t_val = _driver.cuuint64_t()
174+
self._cuuint64_t_val = _driver["cuuint64_t"]()
176175
self._cptr = <void*><void_ptr>self._cuuint64_t_val.getPtr()
177176
else:
178177
self._cptr = <void*><void_ptr>init_value.getPtr()
@@ -243,7 +242,7 @@ cdef class _HelperCUpointer_attribute:
243242
self._attr = attr.value
244243
if self._attr in ({{if 'CU_POINTER_ATTRIBUTE_CONTEXT'}}cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_CONTEXT,{{endif}}):
245244
if self._is_getter:
246-
self._ctx = _driver.CUcontext()
245+
self._ctx = _driver["CUcontext"]()
247246
self._cptr = <void*><void_ptr>self._ctx.getPtr()
248247
else:
249248
self._cptr = <void*><void_ptr>init_value.getPtr()
@@ -257,7 +256,7 @@ cdef class _HelperCUpointer_attribute:
257256
elif self._attr in ({{if 'CU_POINTER_ATTRIBUTE_DEVICE_POINTER'}}cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_DEVICE_POINTER,{{endif}}
258257
{{if 'CU_POINTER_ATTRIBUTE_RANGE_START_ADDR'}}cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_RANGE_START_ADDR,{{endif}}):
259258
if self._is_getter:
260-
self._devptr = _driver.CUdeviceptr()
259+
self._devptr = _driver["CUdeviceptr"]()
261260
self._cptr = <void*><void_ptr>self._devptr.getPtr()
262261
else:
263262
self._cptr = <void*><void_ptr>init_value.getPtr()
@@ -266,7 +265,7 @@ cdef class _HelperCUpointer_attribute:
266265
self._cptr = <void*>&self._void
267266
elif self._attr in ({{if 'CU_POINTER_ATTRIBUTE_P2P_TOKENS'}}cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_P2P_TOKENS,{{endif}}):
268267
if self._is_getter:
269-
self._token = _driver.CUDA_POINTER_ATTRIBUTE_P2P_TOKENS()
268+
self._token = _driver["CUDA_POINTER_ATTRIBUTE_P2P_TOKENS"]()
270269
self._cptr = <void*><void_ptr>self._token.getPtr()
271270
else:
272271
self._cptr = <void*><void_ptr>init_value.getPtr()
@@ -284,7 +283,7 @@ cdef class _HelperCUpointer_attribute:
284283
self._cptr = <void*>&self._size
285284
elif self._attr in ({{if 'CU_POINTER_ATTRIBUTE_MEMPOOL_HANDLE'}}cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MEMPOOL_HANDLE,{{endif}}):
286285
if self._is_getter:
287-
self._mempool = _driver.CUmemoryPool()
286+
self._mempool = _driver["CUmemoryPool"]()
288287
self._cptr = <void*><void_ptr>self._mempool.getPtr()
289288
else:
290289
self._cptr = <void*><void_ptr>init_value.getPtr()
@@ -340,7 +339,7 @@ cdef class _HelperCUgraphMem_attribute:
340339
{{if 'CU_GRAPH_MEM_ATTR_RESERVED_MEM_CURRENT' in found_values}}cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_RESERVED_MEM_CURRENT,{{endif}}
341340
{{if 'CU_GRAPH_MEM_ATTR_RESERVED_MEM_HIGH' in found_values}}cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_RESERVED_MEM_HIGH,{{endif}}):
342341
if self._is_getter:
343-
self._cuuint64_t_val = _driver.cuuint64_t()
342+
self._cuuint64_t_val = _driver["cuuint64_t"]()
344343
self._cptr = <void*><void_ptr>self._cuuint64_t_val.getPtr()
345344
else:
346345
self._cptr = <void*><void_ptr>init_value.getPtr()
@@ -553,7 +552,7 @@ cdef class _HelperCUmemAllocationHandleType:
553552
{{endif}}
554553
{{if 'CU_MEM_HANDLE_TYPE_FABRIC' in found_values}}
555554
elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_FABRIC,):
556-
self._mem_fabric_handle = _driver.CUmemFabricHandle()
555+
self._mem_fabric_handle = _driver["CUmemFabricHandle"]()
557556
self._cptr = <void*><void_ptr>self._mem_fabric_handle.getPtr()
558557
{{endif}}
559558
else:

cuda_bindings/cuda/bindings/driver.pyx.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ from cpython.bytes cimport PyBytes_FromStringAndSize
1717
import cuda.bindings.driver
1818
from libcpp.map cimport map
1919

20+
_driver = globals()
2021
include "_lib/utils.pxi"
2122

2223
ctypedef unsigned long long signed_char_ptr

cuda_bindings/cuda/bindings/nvrtc.pyx.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ from libcpp.vector cimport vector
1515
from cpython.buffer cimport PyObject_CheckBuffer, PyObject_GetBuffer, PyBuffer_Release, PyBUF_SIMPLE, PyBUF_ANY_CONTIGUOUS
1616
from cpython.bytes cimport PyBytes_FromStringAndSize
1717

18+
import cuda.bindings.driver as _driver
19+
_driver = _driver.__dict__
1820
include "_lib/utils.pxi"
1921

2022
ctypedef unsigned long long signed_char_ptr

cuda_bindings/cuda/bindings/runtime.pyx.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ from cpython.bytes cimport PyBytes_FromStringAndSize
1717
import cuda.bindings.driver
1818
from libcpp.map cimport map
1919

20+
import cuda.bindings.driver as _driver
21+
_driver = _driver.__dict__
2022
include "_lib/utils.pxi"
2123

2224
ctypedef unsigned long long signed_char_ptr

0 commit comments

Comments
 (0)