好奇。
为什么驱动程序API中的函数使用unsigned int作为CUdeviceptr而不是void?
运行时API使用void。
答案 0 :(得分:4)
我认为根本原因是因为CUdeviceptr是设备内存中分配的句柄而不是设备内存中的地址。驱动程序使用此句柄从内存映射内部查找地址,内部驱动程序API要求它是无符号整数。
Tim Murray曾在NVIDIA负责CUDA驱动程序开发的一个阶段,几年前在另一个论坛上写了this answer。我认为这就像你会发现的权威答案一样(虽然作为最初的CUDA驱动程序作者的Nick Wilt也会偶尔在Stack Overflow上回答问题,并且可能会提示并提供比我更好的答案)。