本文为作者原创,转载请注明出处
CUDA并行计算
本文叙述性的讲解cuda并行编程相关原理,可以看作是cuda编程的总结和提炼;
GPU及CUDA概述
gpu是一种插入式卡,是cpu的一个协处理器,早期的gpu主要专注于浮点运算,作为cpu的补充,用于游戏等应用中,后来人们意识到gpu可以用于科学计算,因此出现了GPGPU以及CUDA;
gpu板卡主要由五部分组成:1)负责所有计算的gpu芯片,2)gpu内存(显存,与cpu的DRAM相似),3)PCI接口芯片,4)电源芯片,5)使这些芯片能一起工作的其它半导体芯片;
gpu计算芯片与cpu芯片在体系架构上有很大不同,主要体现在:1)gpu核心更多,一般可以达到几百几千个核心,而cpu核心较少,一般只有几个或者几十个,gpu能获得更好的并发性,且gpu启动线程的开销远小于cpu,2)gpu核心的工作频率更低,且结构更加简单,更低的工作频率可以使得gpu芯片获得更低的功耗性能(功耗与频率的平方成正比),简单的结构使得gpu核心可以获得更小的面积;
并行程序开发者可以通过cuda编程模型开发并行计算程序,cuda程序同时包含cpu端(主机端)代码和gpu端(设备端)代码,cpu端代码一般负责串行逻辑部分,gpu端代码一般负