正在寻找新方法来提高您的计算密集型任务性能?高通MARE(多核异步运行环境)让您能够轻松地编写可使用移动设备上所有可用内核的并行应用程序。
当前,有越来越多的用户在围绕多核处理器建造的移动设备上运行您的应用程序。事实上,来自市场调查公司Strategy Analytics的一份报告显示,2013年年初出货的全部智能手机中,有三分之二包含多核处理器。高通研究院(Qualcomm Research)打造的MARE(多核异步运行环境)是一种用于并行及异构移动计算的编程模型和运行时系统。这种原生C++库提供了一种简单而优雅的方式在多个CPU核心上实现并行计算,并且可以利用我们刚刚更新的MARE SDK(软件开发工具包)在GPU上实现异构计算。
用简单方法进行并行和异构计算
您可以通过在独立的计算引擎上运行任务,来普遍提升游戏、多媒体处理和计算机视觉应用程序的性能。不过,这种性能改善通常会需要开发额外的程序来管理并发机制和线程,因为很多程序员目前仍还在使用粗粒度线程。MARE运行时会自动处理资源管理任务,尤其是能够以最佳方式根据任务选择计算核心,从而让您能够专注于您的应用程序逻辑问题。
使用今天发布的MARE SDK(软件开发工具包)版本,您所得到的不仅仅是CPU并行计算多核支持。这一新版本包含以下特性:
· 并行编程模式——是一个包括并行迭代、并行图、并行前缀扫描和同步数据流在内的集合。这些模式通过优化执行通用并行习语,可进一步简化编程。
· Snapdragon™骁龙处理器优化——配备MARE功能的应用程序可在搭载任何处理器的安卓设备上运行。我们为诸如矩阵乘法等线性代数例程增加了对Snapdragon骁龙处理器的特定支持。
电源管理——MARE电源API(应用程序编程接口)包括两种功耗控制方式:粗功率设置(包括“正常”、“高效”、“高性能”、“节能”四种模式),和利用该应用的优质服务实现的动态功率控制。高通Snapdragon骁龙处理器提供这些API(应用程序编程接口)。
· 异构计算——MARE可以在多个CPU核心以及GPU上执行任务。
MARE作为用户级库实施,与安卓NDK相集成,提供易于使用的并行编程原语言。其应用级摘要帮助您利用任意安卓设备上的多进程硬件,而不需要深入了解有关该硬件的知识。
中科创达UCam全能相机(UCam by Thundersoft)——1名工程师,2天时间,60%的性能提升幅度
MARE多核异步运行环境在实际应用方面的一个范例是中科创达软件股份公司(Thundersoft,以下简称“中科创达”)的UCam全能相机平台,该平台让开发人员能够将摄像头相关功能集成到单一应用程序中。由于手机屏幕尺寸日渐增大、摄像头分辨率越来越高,并且应用程序已发展到包含更多计算密集型效应,因此中科创达的工程师们意识到,是时候在UCam全能相机中实现实时并行图像滤镜和GIF动画创建功能了。
中科创达战略产品高级副总裁邹鹏程表示:“我们曾尝试使用POSIX线程(简称“Pthread”)进行并行计算,因为我们的很多程序员都曾在学校里学过这方面的知识。但是普通程序员很难掌握Pthread中的线程管理任务(包括同步、对话等),所以我们另辟蹊径。”
工程师们对UCam全能相机进行了修改,以便使用MARE任务API(应用程序编程接口),这样可以让运行时决定如何最好地对任务进行并行处理与同步。他们仅需要修改用以启动每项任务的代码即可。为了尽可能减少MARE占用的空间,加载到内存中的唯一API(应用程序编程接口)就是UCam全能相机所需要的那个API。中科创达通过实施MARE多核异步运行环境获得的成果包括:
· 与单线程版本的UCam全能相机相比,图像处理速度提高60%
· 线程管理和并行计算只占用五分之一的Pthread代码
· 无论采用何种设备或处理器,只在Google Play中出现一个单一.apk文件
实施MARE多核异步运行环境无需对UCam全能相机算法做任何代码更改,一名工程师只需两天左右即可完成。
|