如果您曾在过去两年中购买过智能手机,那么很有可能您的手机里就有多个CPU子处理器 (核)。手机包装盒上很可能标注着“双核”或“四核”!事实上,2013年是这个行业具有里程碑意义的一年,因为在这一年中多核移动终端的数量超越了PC和服务器的数量。
多核可以帮助应用程序飞速运行,但前提是这个应用程序在编写时充分利用了多核的优势——而当今大部分应用程序并没有做到这一点。
这是因为针对多核的编程难度更大,它要求开发人员在其应用程序中重构算法设计,并考虑其算法的并行化。对许多开发人员来说,表达一个并行算法不同部分之间的关系和依赖性,是多核编程最困难的一个方面。开发并行编程最常用的技巧是多线程。在线程少的软件项目中,实施和管理多线程是可行的,但这可能对更复杂的算法和工作负载的开发效率有很大的负面影响。
去年,美国高通技术公司推出了一个新的编程库,将助力开发人员使用C++编程语言更轻松地实现多核并行,特别是在Android移动平台上。Qualcomm® MARE(多核异步运行环境)提供了一个可以简化并行应用程序编程的API,使开发者可以利用现代智能手机的全部计算性能。两个最先采用Qualcomm MARE的Android应用程序是以及中科创达公司(中国)的UCAM应用和Euvision Technologies(美国)公司的Impala应用。
中科创达利用了Qualcomm MARE的 API工具构建其UCAM应用,该程序目前可以在Google Play上下载,截至目前全球下载量超过3千万。UCAM采用Qualcomm MARE执行并行实时图像滤镜功能,用户可以选择任一滤镜应用在自己的照片上。并行处理可以加快GIF动画的创建,最终也能使用户从照片中巧妙地切割出人脸或人像,并把他们放置在不同的背景中。
执行并行实时滤镜功能时,中科创达所使用的代码数量比传统多线程(POSIX线程)少80%,而且实现的性能比其在UCAM应用程序中自己管理线程要高的多。
“将Qualcomm MARE应用于我们的UCAM全能相机应用,使我们能够非常快速地在各层级的Android终端上充分利用多核CPU性能。我们只需要编写一小部分代码,用于图像过滤以及实施MARE与C++ POSIX线程的照片处理场景,就能获得卓越的性能。” 中科创达工程部高级副总裁邹鹏程说。
Euvision Technologies公司的全新Android应用程序Impala是一个终端相机解决方案,提供了可视化场景识别和照片场景分类。它使用机器学习技术在终端上实现了人工智能。Euvision这样描述它:
将相机对准时,它甚至能在实际拍照之前识别出即将拍摄的场景。场景识别通过运行在用户手机上的人工智能实现。
基于智能拍照摄像头“所看到的景象”,类似Instagram的滤镜会自动启用。选定的滤镜均已为常用的拍摄场景而优化。例如,将相机对准拍摄人物时,“Forever Young”(永葆青春)滤镜自动开启,仿佛在您朋友的脸上敷上一层抗皱保湿面膜。
此外,一旦相机检测到您要拍摄一把蓝莓或肉桂片司康饼,它将自动启用“Now It's Tasty”(即刻美味可口)滤镜。拍摄建筑物或古迹时,所谓的“Empire State”(帝国大厦)滤镜将会开启。该滤镜最适合室外场景,因为它通过改变光线,使图像看上去更加冷艳。
Impala Mobile研发部负责人Daniel Fontijne表示:“Euvision Technologies公司的Impala移动应用程序中的场景识别软件是并行开发的。用Qualcomm MARE更新我们的软件来最大化这种并行性可谓轻而易举。MARE的另一大优势是可适用于大多数主流平台。它还能实现近乎线性的加速,使我们能够在 Android终端上运行实时场景识别。”
Impala等应用需要连续执行大量代码才能做到实时观看、思考并向您提供操作建议。要想在体验上毫无延迟感,则需要消耗大量的计算。通过安装Qualcomm MARE的数据库和API,Impala能够做到这一点!
Qualcomm MARE可用于任何搭载多核处理器的Android终端上运行的应用程序。Qualcomm MARE SDK也可用于Linux、Windows或OS X,可使编程人员在转移到移动平台之前,在一个熟悉的环境中开发和调试他们的应用程序。