首页 理论教育 GPGPU通用编程|计算机图形学与角色群组仿真

GPGPU通用编程|计算机图形学与角色群组仿真

时间:2023-10-31 理论教育 版权反馈
【摘要】:从完整的GPGPU定义来讲,它不仅能够进行图形处理,而且能完成CPU的运算工作,更适合高性能计算,并能使用更高级别的编程语言,在性能和通用性上更加强大。GPGPU计算通常采用CPU+GPU异构模式,由CPU负责执行复杂逻辑处理和事务管理等不适合数据并行的计算,由GPU负责计算密集型的大规模数据并行计算。但是,传统的GPGPU受硬件可编程性和开发方式的制约,应用领域受到了限制,开发难度也很大。

GPGPU通用编程|计算机图形学与角色群组仿真

GPGPU在Direct X 9时代就已经初现雏形,随着Direct X 10时代的到来,GPU与CPU都会相继加入相应的GPGPU技术。

从完整的GPGPU定义来讲,它不仅能够进行图形处理,而且能完成CPU的运算工作,更适合高性能计算,并能使用更高级别的编程语言,在性能和通用性上更加强大。从狭义的GPGPU应用来说,GPGPU就是功能强化的GPU,GPU的优势也正是GPGPU的优势,弥补了CPU浮点运算能力的严重不足。

GPGPU计算通常采用CPU+GPU异构模式,由CPU负责执行复杂逻辑处理和事务管理等不适合数据并行的计算,由GPU负责计算密集型的大规模数据并行计算。但是,传统的GPGPU受硬件可编程性和开发方式的制约,应用领域受到了限制,开发难度也很大。

最初的程序员在编写着色程序时需要使用汇编语言,该语言难度大、效率低,如今GPU的高级着色语言能够极大地提高程序员的编程效率。微软公司的HLSL、OpenGL的GLSL、斯坦福大学的RTSL,以及NVIDIA公司的Cg等高级着色语言都能够隐藏底层硬件的技术细节,提高GPU的开发效率。(www.xing528.com)

最早的GPGPU开发直接使用图形学API编程,它要求编程人员将数据打包成纹理,将计算任务映射为对纹理的渲染过程,用汇编或者高级着色器语言(如GLSL、Cg、HLSL)编写shader程序,然后通过图形学API(Direct 3D、OpenGL)执行。这种方式要求编程人员不仅要熟悉自己需要实现的计算和并行算法,还要对图形学硬件和编程接口有深入的了解。在GPGPU计算中,从GPU中返回到系统内存中数据,首先需要分配和初始化在内存中的空间,然后调用glGetTexImage函数,将纹理数据返回到该Tex内存中,并以实际大小存入Vector中。

2007年2月,NVIDIA公司正式发布了CUDA架构(Compute Unified Device Architecture,统一计算设备架构),这也是NVIDIA公司确定的GPGPU产品的正式名称。CUDA是GPGPU产品的一个新的基础架构,也是世界上第一个针对GPU的C语言开发环境的GPGPU产品,它采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案,并且提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈