在 CUDA 10.0 中,应用调用 API cudaMallocHost 时,libcudart.so 中的 cudaHostAlloc 会被调用,而不是 cudaMallocHost。这是因为在 CUDA 10.0 中,nvcc 对 cudaMallocHost 进行了优化,使其使用 cudaHostAlloc 作为实现,以提高性能和可移植性。

具体来说,CUDA 10.0 中的 nvcc 在处理 cudaMallocHost 时,会将其转换为对 cudaHostAlloc 的调用。这样做的好处是,通过使用 cudaHostAlloc,可以获得更好的性能和可移植性。因为 cudaHostAlloc 不仅可以在所有支持 CUDA 的设备上使用,还可以在不支持 cudaMallocHost 的系统上使用,例如在 Windows 上的 WDDM 环境中。

另外,cudaHostAlloc 还支持更多的选项和功能,例如可以指定内存类型、映射等。

综上所述,CUDA 10.0 中的 nvcc 对 cudaMallocHost 进行了优化,使其使用 cudaHostAlloc 作为实现,以提高性能和可移植性

cuda 100中为什么应用调用api cudaMallocHost时libcudartso中的cudaHostAlloc会被调用而cudaMallocHost未被调用nvcc做了什么优化?

原文地址: https://www.cveoy.top/t/topic/eEWs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录