@@ -284,7 +284,11 @@ cdef class _HelperCUmem_range_attribute:
284284 self ._attr = attr.value
285285 if self ._attr in (cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_READ_MOSTLY,
286286 cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION,
287- cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION,):
287+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION,
288+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_TYPE,
289+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_ID,
290+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_TYPE,
291+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_ID,):
288292 self ._cptr = < void * > & self ._int_val
289293 elif self ._attr in (cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BY,):
290294 self ._cptr = _callocWrapper(1 , self ._data_size)
@@ -303,7 +307,11 @@ cdef class _HelperCUmem_range_attribute:
303307 def pyObj (self ):
304308 if self ._attr in (cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_READ_MOSTLY,
305309 cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION,
306- cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION,):
310+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION,
311+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_TYPE,
312+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_ID,
313+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_TYPE,
314+ cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_ID,):
307315 return self ._int_val
308316 elif self ._attr in (cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BY,):
309317 return [self ._int_val_list[idx] for idx in range (int (self ._data_size/ 4 ))]
@@ -356,9 +364,22 @@ cdef class _HelperCUpointer_attribute:
356364 cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPES,):
357365 self ._ull = init_value
358366 self ._cptr = < void * > & self ._ull
359- elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_RANGE_SIZE,):
367+ elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_RANGE_SIZE,
368+ cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MAPPING_SIZE,):
360369 self ._size = init_value
361370 self ._cptr = < void * > & self ._size
371+ elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MAPPING_BASE_ADDR,):
372+ if self ._is_getter:
373+ self ._devptr = _driver.CUdeviceptr()
374+ self ._cptr = < void * >< void_ptr> self ._devptr.getPtr()
375+ else :
376+ self ._cptr = < void * >< void_ptr> init_value.getPtr()
377+ elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MEMORY_BLOCK_ID,):
378+ self ._ull = init_value
379+ self ._cptr = < void * > & self ._ull
380+ elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_IS_HW_DECOMPRESS_CAPABLE,):
381+ self ._bool = init_value
382+ self ._cptr = < void * > & self ._bool
362383 elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MEMPOOL_HANDLE,):
363384 if self ._is_getter:
364385 self ._mempool = _driver.CUmemoryPool()
@@ -400,8 +421,15 @@ cdef class _HelperCUpointer_attribute:
400421 elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_BUFFER_ID,
401422 cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPES,):
402423 return self ._ull
403- elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_RANGE_SIZE,):
424+ elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_RANGE_SIZE,
425+ cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MAPPING_SIZE,):
404426 return self ._size
427+ elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MAPPING_BASE_ADDR,):
428+ return self ._devptr
429+ elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MEMORY_BLOCK_ID,):
430+ return self ._ull
431+ elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_IS_HW_DECOMPRESS_CAPABLE,):
432+ return self ._bool
405433 elif self ._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MEMPOOL_HANDLE,):
406434 return self ._mempool
407435 else :
@@ -461,7 +489,9 @@ cdef class _HelperCUjit_option:
461489 self ._cptr = < void * >< void_ptr> self ._uint
462490 elif self ._attr in (cydriver.CUjit_option_enum.CU_JIT_WALL_TIME,):
463491 self ._float = init_value
464- self ._cptr = < void * >< void_ptr> self ._float
492+ # CU_JIT_WALL_TIME is an OUT option: CUDA writes the elapsed float
493+ # back through the pointer.
494+ self ._cptr = < void * > & self ._float
465495 elif self ._attr in (cydriver.CUjit_option_enum.CU_JIT_INFO_LOG_BUFFER,
466496 cydriver.CUjit_option_enum.CU_JIT_ERROR_LOG_BUFFER):
467497 self ._charstar = init_value
@@ -480,7 +510,10 @@ cdef class _HelperCUjit_option:
480510 cydriver.CUjit_option_enum.CU_JIT_PREC_DIV,
481511 cydriver.CUjit_option_enum.CU_JIT_PREC_SQRT,
482512 cydriver.CUjit_option_enum.CU_JIT_FMA,
483- cydriver.CUjit_option_enum.CU_JIT_OPTIMIZE_UNUSED_DEVICE_VARIABLES,):
513+ cydriver.CUjit_option_enum.CU_JIT_OPTIMIZE_UNUSED_DEVICE_VARIABLES,
514+ cydriver.CUjit_option_enum.CU_JIT_POSITION_INDEPENDENT_CODE,
515+ cydriver.CUjit_option_enum.CU_JIT_MAX_THREADS_PER_BLOCK,
516+ cydriver.CUjit_option_enum.CU_JIT_OVERRIDE_DIRECTIVE_VALUES,):
484517 self ._int = init_value
485518 self ._cptr = < void * >< void_ptr> self ._int
486519 elif self ._attr in (cydriver.CUjit_option_enum.CU_JIT_CACHE_MODE,):
@@ -521,7 +554,9 @@ cdef class _HelperCudaJitOption:
521554 self ._cptr = < void * >< void_ptr> self ._uint
522555 elif self ._attr in (cyruntime.cudaJitOption.cudaJitWallTime,):
523556 self ._float = init_value
524- self ._cptr = < void * >< void_ptr> self ._float
557+ # cudaJitWallTime is an OUT option: CUDA writes the elapsed float
558+ # back through the pointer.
559+ self ._cptr = < void * > & self ._float
525560 elif self ._attr in (cyruntime.cudaJitOption.cudaJitInfoLogBuffer,
526561 cyruntime.cudaJitOption.cudaJitErrorLogBuffer):
527562 self ._charstar = init_value
@@ -711,6 +746,12 @@ cdef class _HelperCUcoredumpSettings:
711746
712747 self ._cptr = < void * > & self ._bool
713748 self ._size = sizeof(cpp_bool)
749+ elif self ._attrib in (cydriver.CUcoredumpSettings_enum.CU_COREDUMP_GENERATION_FLAGS,):
750+ if self ._is_getter == False :
751+ self ._uint = init_value
752+
753+ self ._cptr = < void * > & self ._uint
754+ self ._size = sizeof(unsigned int )
714755 else :
715756 raise TypeError (' Unsupported attribute: {}' .format(attr.name))
716757
@@ -734,5 +775,7 @@ cdef class _HelperCUcoredumpSettings:
734775 cydriver.CUcoredumpSettings_enum.CU_COREDUMP_LIGHTWEIGHT,
735776 cydriver.CUcoredumpSettings_enum.CU_COREDUMP_ENABLE_USER_TRIGGER,):
736777 return self ._bool
778+ elif self ._attrib in (cydriver.CUcoredumpSettings_enum.CU_COREDUMP_GENERATION_FLAGS,):
779+ return self ._uint
737780 else :
738781 raise TypeError (' Unsupported attribute value: {}' .format(self ._attrib))
0 commit comments