GPU编程与CPU编程最大的不同可以概括为以下两点:
- “The same program is executed on many data elements in parallel”
- “Data-parallel processing maps data elements to parallel processing threads”
也就是
- 同一份程序在很多“数据单位”上并行执行
- “数据单位”被影射到并行线程上执行
例如,我们可以将一幅图像的每个像素都影射到一个线程,该线程完成的功能是减去图像均值,可以想象“一瞬间,整幅图像就完成了减均值操作”。而CPU通常是,逐像素进行减均值操作。
CUDA是英伟达公司推出通用并行计算架构。在此架构下,可以简单理解我们的编程任务为,“准备好数据单位,影射到线程执行,获取期望的速度”。
我个人体会是,记住上述两条原则,对于我们理解GPU编程有很大的帮助!