nVIDIA CUDA驱动程序到底做了什么?

Mik*_*ang 1 cuda driver nvidia

Nvidia CUDA驱动程序究竟做了什么?从使用CUDA的角度来看.驱动程序传递内核代码,执行配置(#threads,#blockss)......还有什么?

我看到一些帖子,驱动程序应该知道可用SM的数量.但这不是不必要的吗?一旦内核传递给GPU,GPU调度程序只需要将工作分散到可用的SM ......

tal*_*ies 7

GPU不是完全自主的设备,它需要主机驱动程序的大量帮助才能完成最简单的操作.据我了解,驱动程序至少包含:

  • JIT编译器/优化器(PTX汇编代码可以在运行时由驱动程序编译,如果需要和可能,驱动程序还将重新编译代码以匹配设备的执行体系结构)
  • 设备内存管理
  • 主机内存管理(DMA传输缓冲区,固定和映射主机内存,统一寻址模型)
  • 上下文和运行时支持(所以代码/堆/堆栈/ printf缓冲区内存管理),动态符号管理,流等
  • 内核"网格级"调度程序(包括在支持它的体系结构上管理多个同步内核)
  • 计算模式管理
  • 显示驱动程序互操作(用于DirectX和OpenGL资源共享)

这可能代表了将一些用户域设备代码放到GPU上并通过主机端API运行所需的最低限度.