软件工具帮助挖掘图形处理的力量
今天的计算机依靠强大的图形处理单元(gpu)来创建视频游戏中的壮观图形。事实上,这些图形处理器现在比传统的中央处理器(cpu)——也就是计算机的大脑——更强大。因此,计算机开发人员正试图利用这些gpu的强大功能。现在,北卡罗来纳州立大学的一个研究小组已经开发出一种软件,可以让传统软件程序更容易地利用强大的图形处理器,从本质上增加复杂的计算能力。
利用GPU的处理能力是一件大事,因为GPU包含了大量的计算能力。一台普通电脑的中央处理器的运算能力约为每秒10亿次,也就是每秒100亿次运算。这听起来好像很多,直到你考虑到普通现代计算机的GPU有1万亿次浮点运算的计算能力——也就是每秒1万亿次运算。
但是使用GPU来实现一般的计算功能并不容易。GPU本身的实际架构设计用于处理图形,而不是其他应用程序。由于gpu专注于将数据转换为屏幕上的数百万像素,因此该架构被设计为让许多操作相互隔离地进行。告诉一个像素做什么的操作与告诉其他像素做什么的操作是分开的。这种硬件设计使图形处理效率更高,但对于那些想要使用gpu进行更复杂计算的人来说,这是一个绊脚石。
来自北卡罗来纳州的一个研究小组开发了一种软件,可以使传统软件程序更容易利用gpu。这项研究由美国国家科学基金会资助。
“我们已经开发出一个软件工具,计算机程序,并把它转换成计算机程序B——最终相同的程序,但它更有效地在GPU上,“惠阳周博士说,电气和计算机工程的副教授数控状态和描述研究的一篇论文的作者之一。这种翻译工具称为编译器。
程序A是用户提供的输入,被称为“naïve”版本——它不考虑GPU优化,而是专注于提供一系列清晰的命令,告诉计算机该做什么。Zhou的编译软件采用naïve版本,并将其转换为一个可以有效利用GPU硬件的程序,从而使程序运行得更快。
周的研究团队测试了一系列标准程序,以确定通过编译软件翻译的程序是否比领先的GPU开发人员为GPU使用而手工优化的代码运行效率更高。他们的结果表明,用他们的编译软件翻译的程序比GPU开发人员优化的程序运行速度快大约30%。
“利用GPU可以把你的个人电脑变成超级电脑,”周说。
这篇论文,“一个用于内存优化和并行管理的GPGPU编译器”,是由Zhou,北卡罗来纳州立大学的博士生杨毅,以及中佛罗里达大学的博士生向平和孔景飞共同撰写的。这篇论文将于6月7日在多伦多举行的编程语言设计与实现会议上发表。
北卡罗来纳州立大学电气和计算机工程系是该校工程学院的一部分。
希普曼-
编辑:研究摘要如下。
一种用于内存优化和并行管理的GPGPU编译器
作者:杨毅,周惠阳,北卡罗来纳州立大学;项萍,孔金桂,中佛罗里达大学
提出了6月7日,编程语言设计与实现会议,多伦多
文摘:本文提出了一种新的图形处理单元(GPGPU)通用计算优化编译器。它解决了开发高性能GPGPU程序的两个主要挑战:有效利用GPU内存层次结构和明智的并行管理。我们编译器的输入是naïve GPU内核函数,它在功能上是正确的,但没有考虑性能优化。编译器分析代码,识别其内存访问模式,并生成优化的内核和内核调用参数。我们的优化过程包括向量化和内存合并以增强内存带宽,平铺和展开以实现数据重用和并行管理,以及线程块重映射或地址偏移插入以消除分区宿存。在一组科学和媒体处理算法上的实验表明,我们的优化代码获得了非常高的性能,比NVIDIA CUBLAS 2.2的高度调优库更优或非常接近,并且比原始版本的速度提高了128倍。我们的编译器的另一个特色是优化代码的可理解性,这对性能分析和算法优化很有用。
