cuda - nVIDIA CUDA 驱动程序究竟做了什么?

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

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

最佳答案

GPU 不是完全自主的设备,它需要主机驱动程序的很多帮助才能完成甚至 最简单的事情。据我了解,驱动程序至少包含:

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

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

https://stackoverflow.com/questions/9764591/

相关文章:

ruby-on-rails - 在 Rails 迁移中排序的模式字段

oracle - 如何以编程方式在 PL/SQL 中设置表名?

ajax - JSF f :ajax listener not called

ruby-on-rails - 创建 Rails 音乐播放器应用程序(类似于 Rdio)

matlab - 不同长度的向量之间的相关性

django - 如何为基于ListView的类写get方法

asp.net - 如何检查 Amazon S3 存储桶中文件夹的子文件夹大小

php - DOMPDF 安装选项

optimization - 为什么在没有 mem2reg 的情况下优化过程不起作用?

python - 如何设置浏览器为 webbrowser 打开 localhost?