- GPU异构计算简介
- 异构计算
系统同时使用多种处理器与核心,提高整体的性能或资源利用率。
CPU注重复杂逻辑运算,GPU负责简单大量运算。
- GPU与GPU计算
负责渲染2D,3D,VR效果,专注计算机图形领域。
被开发出AI计算相关功能。相比CPU直接计算,效果拔群。
- GPU编程
OpenCL通用编程语言
CUDA 来自NVIDIA,开发过如cuDNN,cuFFT以及cuBLAS等数学库Thrust,以及通讯库NCCL等。
- OpenCL编程
由NDRange组成;所需计算的数据放入NDRange进行划分。
每个NDRange由多个WORK GROUP组成;每个WORK GROUP由多个WORK-ITEM组成。
对应关系:NDRange对应CUDA编程中的Grid;WORK GROUP对应Block;WORK-ITEM对应CUDA的Thread。
Wave front:CUDA中的Warps,指线程组。
在OpenCL编程中,传统for循环会被拆分,通过获取每一个线程(WORK-ITEM)的ID,映射到每个硬件单元执行,从而控制每一个数据的计算。通过这样的原理,实现密集并行计算。
- CUDA(GPU编程)
由Grid,每个Grid的多个Block,每个Block的多个Thread组成。
GPU编程需要HOST辅助进行数据的分配和拷贝等命令。
C/C++中的向量计算在CUDA中会将for循环通过线程ID拆开并行展开然后计算。其中用于修饰方法的__global__前缀表示此函数用于操纵device,需要通过HOST,也就是CPU辅助来进行数据拷贝启动GPU device启动函数功能然后吧已经计算好的内容从GPU memory(显存)中拷贝到主存。
- CUDA Driver/Runtime API
细分的几十个模块,每个模块负责一个大功能。
其中标题中的Drive和Runtime库是CUDA最底层功能的库。其中Drive部分负责与GPU通讯,Runtime则在Drive基础上封装一层方便用户调用的库。
大部分的用户使用Runtime提供的API。
除此之外,还有很多上层的加速库,如FFT,BLAS等。
[展开全文]
[收起全文]