前言
从这个系列开始,我会解读《CUDA Compiler Driver NVCC》的内容。通过这本书,可以更深刻地了解GPU 编译的底层相关的设计。
CUDA Programming Model
CUDA Toolkit针对这样一类应用程序:它的控制部分由一个进程运行在一个通用计算设备(比如CPU)上,利用一个或多个GPU作为coprocessors来加速single program multiple data (SPMD)并行任务。这些任务可以由一系列GPU 线程来执行,而不用主机进程的干预;这样的话,就能通过并行图形硬件设备获得性能优化。
GPU 代码由编程语言开发的一系列函数进行开发,主要使用C++,带有一些注释,用于将它们与宿主代码区分开来,另外还有一些注释用于区分GPU上存在的不同类型的数据内存。在GPU程序生命周期内,主机进程可能会调度多个并行进程GPU任务。
CUDA Sources
CUDA应用程序的源文件包含一系列在host上执行的C++代码,以及一些在GPU上执行的核函数代码(kernel function)。CUDA 编译过程(compilation trajectory) 会把host code里的device函数分离出来,用合适的NVIDIA 编译器和汇编程序对这些device