因为视觉方面的一个优化问题需要实时,求解的时候需要用到GPU加速,参考的库是COCOLIB,因此需要简单学习一下CUDA编程。
此书作为一本新手的入门书(之前没有接触过GPU编程的人)非常合适,我花了10个小时的时间阅读中文译版,对于有疑问的地方则对照英文版,由于只是单纯使用,不需要了解太多GPU的工作原理和CUDA实现框架,所以读起来比较顺畅。
总结来看,使用CUDA C的基本套路是,分配host和device的memory,然后进行内存拷贝,之后写GPU的kernel function,用于GPU计算,得出结果后,可以拷贝到CPU,也可以直接用于显卡渲染。
除了全局内存,为了效率,还有常量内存,纹理内存,零拷贝内存等,根据实际的需求特点选取。
而程序或者算法是否能用GPU获得性能的提升,则取决于需要完成的任务本身,如果可以分解成很多独立的子任务,即达到很高的并行度,则适合用GPU加速,且任务的有效分解需要人为的干预(开启多少线程块,线程,对于线程的同步的考虑等)。
本书重“实战”,几个例子都比较生动,对于“底层原理”基本不谈。希望快速上手“使用”GPU的同学,不妨以此书入门!
下一步准备把OpenGL系统学习一下:-)