只是好奇。
为什么驱动 API 中的函数使用 unsigned int 作为 CUdeviceptr,而不是 void?
不过,运行时 API 使用 void。
我相信根本原因是因为 CUdeviceptr 是设备内存中分配的句柄,而不是设备内存中的地址。驱动程序使用此句柄从内存映射内部查找地址,并且内部驱动程序 API 要求它是无符号整数。
曾在 NVIDIA 负责 CUDA 驱动程序开发的 Tim Murray几年前在另一个论坛上写了这个答案。我认为这与您将找到的权威答案差不多(尽管最初的 CUDA 驱动程序作者 Nick Wilt 也偶尔在 Stack Overflow 上回答问题,并且可能会插话并提供比我更好的答案)。