《GPU高性能编程CUDA实战》 相关笔记
GPU计算的历史
- 20世纪80年代晚期到90年代早期之间,图形界面程序的普及推动了新型处理器的出现。
- 1992年 Silicon Graphics发布OpenGL库,试图将OpenGL作为一种标准化平台无关的3D图形应用编写方法。
- 20世纪90年代中期,3D图形技术需求增长。两个原因,一是出现了很多3D游戏,如毁灭公爵等。二是图形加速卡的价格低廉,让消费者能用得起。
- 2001年NVIDIA发布GeForce 3 ,从这时起开发人员可以对GPU的计算过程有某种程度的控制。早期GPU计算存在局限性,研究人员必须了解了计算机图形学和着色语言才能使用GPU的功能,导致早期GPU变成没有被广泛接受。
- 2006年,第一个基于CUDA架构的GPU,Geforce 8800 GTX发布,减轻了 早期GPU计算存在的一些限制。
- CUDA发布后,开发人员仍然需要在了解了计算机图形学和着色语言后才能进行GPU编程,为了解决这个问题,几个月后,在2007年,NVIDIA发布 CUDA C。
CUDA C 介绍
-
CUDA C 中用
__global__
修饰符区分主机代码和设备代码,在编译器遇到这个修饰符时,会将这些代码发送给设备的编译器。 -
虽然
cudaMalloc()
也是用来分配内存,但是它只能用于在GPU中分配内存,利用它分配的指针不能再主机代码中使用 这个指针来进行内存读/写操作。 -
使用
cudaGetDeviceCount
来查询设备数量,使用cudaGetDeviceProperties
来查看某个GPU的某个属性值
补充:获取CPU核心数的方法
#include "unistd.h" #include "stdio.h" int main (void ) { printf("system cpu num is %ld\n", sysconf( _SC_NPROCESSORS_CONF)); printf("system enable cpu num is %ld\n", sysconf(_SC_NPROCESSORS_ONLN)); return 0; }