CUDA编程(5)
发布时间
阅读量:
阅读量
1、介绍
图形处理单元(GPU)在指令吞吐量和内存带宽方面相较于中央处理器(CPU),在相似的价格和功耗水平下展现出显著优势。许多应用正是借助这些优越性能,实现了在GPU上执行任务的速度远超CPU。此外,诸如FPGA等其他计算设备虽然具备较高的能效比,但其编程灵活性则明显低于GPU。
GPU与CPU之间存在的这种性能差异源于它们在设计之初所针对的目标不同。CPU主要被优化用于高效执行一系列操作,即所谓的线程,并能够同时运行数十个线程。而GPU则被设计为能够并行处理数千个线程,尽管单个线程的性能较低,但通过这种方式实现了更高的整体吞吐量。
2. 编程模型
2.1. 内核
CUDA C++ 对 C++ 进行了扩展,使程序员可以定义特定的 C++ 函数,这些函数被称为 kernels 。当调用这些 kernels 时,它们将在 N 个不同的并行 CUDA 线程中被执行 N 次,而不是像普通 C++ 函数那样仅执行一次。
内核的定义需使用 global 修饰符,并通过 <<<…>>> 新增的配置语法来指定执行该内核的 CUDA 线程数量(详见 C++ 语言扩展部分)。每个参与内核执行的线程都会被分配一个唯一的线程 ID ,该 ID 可以通过内置变量在内核中进行访问。
举例来说,以下示例代码利用内置变量 线程标识符 ,将两个大小为 N 的向量 A 和 B
全部评论 (0)
还没有任何评论哟~
