1.什么是异构架构?
使用CPU,GPU等两种或多种不同的硬件架构结合在一起完成计算任务。
说白了就是CPU内部组织 和 GPU内部组织不一样,即“异构”。
2.什么叫GPU通用计算,也就是GPU并行计算。
没启用GPU计算之前的计算任务,通常是由cpu来完成的。
后来随着GPU的性能越来越强,就和CPU组织在一起完成某项计算任务。
并行计算,顾名思义就是同时进行计算。
看下面的GPU架构就大概知道了:每个小格子可以做同样的计算任务,非常适合处理那种没有先后顺序影响的计算任务。
举个例子,要找到一个512长度的正整数uint数组里最大的值?
用CPU做搞个for循环也不是不行,计算复杂度是O(N).
用GPU并行计算来做就很快,先把512长度直接拦腰切断为两个256,然后下标[0]的下标[256]的比较取大,下标[1]的下标[257]的比较取大,以此类推。一次就减半了,512 = 2的9次幂,9次就出结果了。
计算复杂度O(logN)。这效率不谈了。
另外,对矩阵加减法简直就是一步到位。
3.常用的支持GPU通用计算的开发环境OpenCL和Cuda有什么区别,怎么做选择?
Cuda是Nvida专属,opencl是通用的,A卡也行。但是这两年老黄的显卡这么顶,懂得都懂,Cuda的学习生态环境会好很多。但是,在实际项目中需要兼顾A卡用户,你opencl也得会点。
接下来我会介绍opencl和cuda简单测试框架(C++版本)。