移动GPU计算必须是实用性的GPU计算

从定义上来看,移动应用场景必须是节能的,原因很简单:它们是靠电池来运行的。这个目标是为了保证用户在一次充电之后能尽可能长时间地使用设备的全部功能。这意味着任何使用场景必须是实用和有用的,而不是让用户非常不开心地带着一个已经没有电的、无用的设备。

在移动GPU计算方面,任何计算场景必须是一个实用的、有用的计算场景。我在前一篇文章中解释了这个关键特性:只考虑适合GPU的任务。这在理想情况下意味着并行的计算任务之间只有最小的散度,而不是连续不同的任务,一个更好的表达方式是保证我们把合适的计算资源用于正确的任务。但是即使是任务本身必须是实用的,设备的整体使用场景也必须是实用的。

实用和不实用的移动GPU计算应用的案例

在运行一个高品质图形游戏的时候,使用GPU计算去进行一些物理运算是没有任何意义的,因为物理计算是并行的、散度有限的任务。在这个使用场景中,GPU为了向一个高分辨率屏幕输出高品质的图形,工作已经非常繁忙,因此,再用一个物理计算任务去给GPU进一步增加负载(或者可能更准确的描述是过载),只会导致在总体上降低用户体验(比如,降低帧率和/或者降低图像质量)。

另一方面,当用你的手机摄像头抓拍百万像素的图片时,你可能想运行一些图像增强的例程。虽然这是一个并行的、无散度类型的任务,但把它加载到GPU是没有问题的。加之,在处理过程中,用户基本上只是在等着看他的照片,因此GPU不会非常繁忙 – 除了可能只是显示一个空闲/等待动画的GUI界面。

因此两个不同的场景都通过了处理类型的检查,但是只有一个能通过实用性场景检查。

还有其它一些使用场景,它们能通过处理类型检查,但可能也不能通过实用性检查。视频编码和解码就介于这个灰色地带,绝大部分设备都有专用的资源,一般都是硬件模块的形式来执行这些任务(视频处理单元),举个例子,PowerVR VPUs(本质上就是固定功能的硬件)在功耗和带宽效率上要远远好于使用一个可编程的、通用的计算资源比如是一个PowerVR GPU。然而,对于那些本身不带有处理视频编解码的专用硬件资源的平台来说,跟CPU相比,使用GPU计算来处理视频编解码可能是一个更现实和有效的方法,在移动计算领域,需要大量处理时间和精度的极端类型的计算任务将会是一个失败的使用场景,比如分子折叠或者其它科学任务。这些任务不能通过实用性检查,因为你根本不应该考虑使用一个移动设备去执行这些任务。虽然你可能想在移动设备上查看结果,但这种类型的计算应该在云端的专用服务器上运行。

1
生物医学模拟和天气模式分布就是一些不切实际的移动GPU计算的案例

采用电池供电的移动设备的大多数计算使用场景,至少在短期内将是实用的,常识性的使用场景,比如图像和视频后处理以及照相机视觉类型的任务,所有这些满足计算类型检查以及实用性的要求。

2
图像处理、照相机视觉和现实增强应用是移动GPU计算的一些实用性案例的例子

记住一个基本的原则:一个任务,只是因为并行的和无散度的特性,并不意味着该任务就应该在移动GPU上运行 – 它必须要能合理使用电池的电量。

原文链接: http://blog.imgtec.com/powervr/mobile-gpu-compute-must-be-practical-gpu-...

1 条评论

有芯度 的头像

(1楼)把一些外围运算都分给其它一些会比较好

由 有芯度 在 星期六, 2014-06-21 21:12 发表。

把一些外围运算都分给其它一些会比较好

--电子创新网--
粤ICP备12070055号