- 本章介绍CUDA的软件架构。
- 2章:CUDA的硬件平台和同CUDA交互的方法,
- 本章:CUDA的软件平台和CUDA所支持的操作环境。
- 对CUDA中的每个软件抽象从
- 设备与上下文到 模块与内核 到内存作介绍。
- 在描述特定的软件抽象
- 对比CUDA运行时(CUDA runtime)和驱动程序API( driver API),
- CUDA源代码是怎样编译为在GPU上执行的microcode的。
- 本章仅CUDA软件架构的概览,详细的内容在后面展开。
3.1 软件层
3-1:CUDA应用程序中的不同层次,从应用程序本身到CUDA硬件上执行的CUDA驱动程序。
- 除了内核模式驱动程序以外的
- 现代多任务OS的安全模型中,用户模式是“不可信任的”,硬件与OS软件须采取措施严格分割一个与另一个应用程序。
- 意味一个CUDA应用程序使用的主机和设备内存无法
- 被另ー一个CUDA程序使用,
- 唯一的例外是这些程序申请内存共享,这只有在内核模式下才可做到。
CUDA库建立在CUDA运行时或驱动程序接口层之上
- CUDA运行时: 支持CUDA的集成C++/GPU工具的库。
- 当nvcc编译器分割.cu文件发主机和设备,主机部分会自动生成对CUDA运行时的调用,以方便像nvcc中用<<>>>启动内核这样的操作
CUDA驱动程序API,由CUDA用户模式驱动程序直接导出,是CUDA应用程序可用的最底层API。
- 驱动程序API直接调用用户模式驱动程序,之后可能会继续调用内核模式做分配内存等操作。
- 驱动程序API和CUDA运行时中的函数名称分别以cu*()和cuda*()打头
- 许多函数,像cudaEventElapsedTime(),本质上是相同的,只在前缀上有区别。
3.1.1 CUDA运行时和驱动程序
CUDA运行时(CUDART):由CUDA语言集成环境使用的库。
- 每个版本的CUDA工具集( CUDA toolchain)都有其特定的CUDA运行时版本,
- 应用程序会自动链接和运行时兼容的工具集,程序只有当匹配版本的CUDART在路径中可用时才能正确
CUDA驱动程序是后向兼容的,支持所有同版本CUDA编写的程序和旧版本程序。
- 它提供一个相对低层的“驱动程序API”(在cuda.h中),
- 驱动程序版本:cuDriverGetVersion
- CUresult CUDAAPI cuDriverGetVersion(int *driverversion)
- 返回十进制,给出由驱动程序支持的CUDA版本,
- 3010 CUDA3.1,5000代表版本5.0。
表3-1 CUDA每个版本中的特性。
- 在CUDA运行时应用程序中,版本信息由cudaDeviceProp结构体的major和minor提供。
- 3.3.2小节中详细审视ta
CUDA运行时要机器中安装的驱动程序版本高于或等于由运行时支持的CUDA版本。
- 若驱动程序的版本低于运行时版本,CUDA应用程序会初始化失败,弹错cuda Errorlnsufficientdriver(35)。
- CUDA5.0引入设备运行时( device runtime)概念,
- CUDA运行时的一个子集,可被CUDA内核直接调用。
- 有关设备运行时的更详细描述在第7章给出。
驱动程序模型
相关文章:
-
2021-04-24
-
2022-12-23
-
2022-01-16
猜你喜欢
-
2022-02-23
-
2021-10-26
-
2021-10-23
-
2022-12-23
-
2022-01-17
-
2021-10-23
相关资源
-
下载
2023-02-22
-
下载
2022-12-06
-
下载
2021-07-14
-
下载
2021-07-01