您的位置:首页 > 其它

并行计算与GLSL的一些总结

2013-08-20 10:33 211 查看
并行计算模型:

指令并行:指令并行简单的说就是流水线技术,通过使用多流水线来达到并行的效果,其实在特定的时间片内,处理器每次还是只能处理一个线程,我觉得这个可以理解为微观上的串行,宏观上的并行,实质还是伪并行。

数据并行:指多个不同的数据同时被相同的指令、指令集或者算法处理。这和GPU并行的概念是相同的。这样的话我们可以把每个处理器设计的很简单,因为都可以运行相同的指令和算法,相互之间的协调和通信也是比较简单的。

任务并行:是指在多个数据上执行不同的指令、指令集或者算法。这与多核CPU的并行模型是相同的。

 

经典GPGPU(GLSL)运算的优缺点:

GLSL使用了通用的图形API,比如openGL,作为实现手段,这使得它具有高度的通用性和可移植性,对操作系统和图形处理器都没有限制性的要求。也就是说它可以运行在windows下,可以运行在linux下,可以运行在intel,nvidai,ATI甚至是支持opengl的手机显卡上。而且由于GLSL更接近底层,所以它的系统开销也很小。这是它的优点。

 

但是它还有很多的缺点,首先就是编程人员要对图形流水线,计算机图形学有一定的了解,如果对这些不了解根本无法进行程序的编写。

其次,GLSL本来是为了图形渲染诞生的,通用计算只是它的一个“副产品”,所以我们在实现加速算法的时候需要一些技巧,比如我们要处理一个矩阵,就要将这个矩阵输入到纹理缓存,把这个矩阵当成一幅图来处理。还有GLSL对线程的分配和控制能力很弱,很难为特定的硬件架构提供细致的接口,无法发挥出硬件的强大性能。

在GLSL中,用户只能选择输入数据的数量(即纹理图的尺寸),而对于处理器中分配的线程总数不能干预。事实上,线程数等于纹理元的数量,是不能选择的,在CUDA中,用户不仅可以定制线程的数目,更可以将它们编制为合适的线程组。

参考文献:

《GPGPU编程技术——从GLSL、CUDA到openCL》 仇德元编著
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: