CUDA 编译过程

CUDA 提供了 GPU 编程平台,包括面向 CPU 的 CUDA Driver API 和 Runtime API,以及面向 GPU 的 CUDA C 语言。nvcc 编译器负责管理复杂编译过程,包括使用 cudafe 分解源文件,将 CUDA C 编译成 PTX,再汇编成 cubin,最后生成可执行文件。开发者可以选择使用 PTX 进行 JIT 编译以获取最新驱动优化。
摘要由CSDN通过智能技术生成

CUDA 从本质上来说,是向宿主机器提供了一个 GPU 的编程平台。因此,其 API 可以从两方面来进行观察:面向 CPU 宿主机器,以及面向 GPU 设备。

对于 CPU 宿主机器,CUDA 提供了 nvcuda.dll 这个驱动程序,它由 NVIDIA 驱动自行安装于 Windows 的系统目录之下,其中提过了很多类似cuXXXX() 的函数,NVIDIA 官方称之为 CUDA Driver API。另外,为了更加简化开发, NVIDIA 还随 CUDA Toolkit 发布了一个 C 语言库,提供一系列更加友好的形如cudaXXXX() 函数,它们包含在 CUDA Toolkit 目录下的 cudart.dll 库文件里,NVIDIA 官方称之为 CUDA Runtime API。

而对于 GPU 设备,CUDA 可以说是提供了一个编程平台,而这个平台上使用的语言则是 PTX 汇编语言。由于 PTX 是汇编语言,使用不方便,NVIDIA 同时提供了一套经过修改的 C 语言,称之为 CUDA C。这个高级语言使用 C 语法,并扩充了一些诸如__global____device__ 这样的关键字,使其能够通过 CUDA Toolkit 提供的编译器编译成 PTX 汇编语言。而 PTX 源程序又进一步通过 CUDA Toolkit 的汇编编译器编译成能够直接载入 GPU 设备的二进制语言。

可以看出,由于这个模式混杂了两个方面,所以编译过程是比较复杂的。NVIDIA 提供的 nvcc 编译器则掌管了整个编译过程,使其简化。实际上,nvcc 只是用来管理一个编译过程流,它通过调用其他专用工具࿰

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值