这些CUDA指针属性的类型是什么?

What are the types of these CUDA pointer attributes?

cuGetPointerAttribute() 传递了一个指向多种类型之一的指针,根据请求的实际属性进行填充。其中一些类型是明确说明的,或者可以隐含地推导出来推导,但有些 - 不是那么多。具体...属性必须传递指针的类型是什么:

CUDA 驱动程序 API 似乎没有回答这些问题。

PS - 即使对于布尔属性,也不清楚您应该传递 int* 还是 bool*.

根据文档,缓冲区 ID 存储为 unsigned long long:

CU_POINTER_ATTRIBUTE_BUFFER_ID: Returns 在 *data 中保证在进程中是唯一的缓冲区 ID。 数据必须指向一个 unsigned long long

当我尝试将 char* 传递给 CU_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPES 时,valgrind 报告大小为 8 的无效写入。传递 std::size_t* 不会导致错误。

类似地,将 char*CU_POINTER_ATTRIBUTE_IS_LEGACY_CUDA_IPC_CAPABLE 一起使用会报告大小为 4 的无效写入,而 int*

则不是这种情况

(使用 NVCC V11.5.119)