CUDA编程:基础与实践学习笔记(第2章)
线程束 —个线程块中的线程还可以细分为不同的线程束(threadwarp)。一个线程束 (即一束线程)是同一个线程块中相邻的"wrapSize个线程",wrapSize也是一个内建变量’表示线程束大小’其值对于目前所有的GPU架构都是32。所以’一个线程束就是连续的32个线程。
CUDA 头文件
目前我们写代码,并没有包含任何 CUDA 头文件,原因是在使用 nvcc 编译器编译 .cu 文件时,将自动包含必要的 CUDA 的头文件,如 <cuda.h> 和 <cuda_runtime.h> .
用 NVCC 编译 CUDA 程序
nvcc 将设备代码编译为 PTX(parallel thread execution)伪汇编代码,再将 PTX 翻译为二进制的 cubin 目标代码。
在将源代码编译为PTX代码时,需要用选项 -arch=compute_XY 指定一个虚拟架构的计算能力,以确定代码中能够使用的 CUDA 功能。
在将 PTX 代码编译为 cubin 代码时,需要用选项 -code=sm_ZW 指定一个真实架构的计算能力,用以确定可执行文件能够使用 GPU。
真实架构的计算能力必须大于等于虚拟架构的计算能力。