嵌入式系统安装配置
嵌入式系统产品日臻完善,并在全世界各行业得到广泛应用。嵌入式系统产品的研制和应用已经成为我国信息化带动工业化、工业化促进信息化发展的新的国民经济增长点。下面是小编整理的关于嵌入式系统安装配置,欢迎大家参考!
ARM嵌入式系统上OpenCL测试
1). 简介
相比曾经,如今科技设备对处理性能和速度要求越来越高。为了应对这种技术需求,许多公司发明了不少方法来获得更好的处理性能。例如苹果公司,发明了 Open Computing Language (OpenCL)。2008年6月,苹果公司向Khronos Group 提交了 OpenCL 工作建议。历经五个月的研发,OpenCL 1.0 于 2008 年 11 月发布。
OpenCL 是为个人电脑、服务器、移动设备以及嵌入式设备的多核系统提供并行编程开发的底层 API。OpenCL 的编程语言类似于 C 语言。其可以用于包含 CPU、GPU 以及来自主流制造商如 NXP®、NVIDIA®、Intel®、AMD、IBM 等的处理器的异构平台。OpenCL 旨在提高应用软件如游戏、娱乐以及科研和医疗软件的运行速度和响应。
在本博文中,我们使用Toradex公司基于NXP iMX6QSoC的计算机模块产品ApalisiMX6Q 来测试 OpenCL,对比两个应用 - 一个运行在 GPU 上,另一个则在 CPU。最后我们将分享本次测试的结果。
2). 测试硬件平台
Toradex 的 Apalis iMX6Q 计算机模块采用 NXP 的 iMX6 四核处理器,其提供的处理性能特别适合于多媒体应用。该处理器具有 4 个 ARM® Cortex®-A9 核,最高主频为 800MHz。除了处理器,Apalis 系统模块还具有高达 2GB DDR3 RAM(64bit)和 4GB eMMC Flash。
除了具备出色的图形和多媒体处理能力,该处理器还具有 Vivante GC2000 3D GPU,其能够支持 OpenCL EP (Embedded Profile)。因此,我们能充分够利用 6QGPU 处理能力。
3). Toradex Embedded Linux 镜像中添加 OpenCL
我们假设你已经具有能够编译 Apalis iMX6 镜像的 OpenEmbedded 编译环境。你可以参考Toradex开发者中心OpenEmbedded(core) 文章。
4). GPU 和CPU 代码
我们使用数列求和应用作为基本的演示例程。第一部分代码运行在 GPU 上,第二部分则在 CPU 上。应用执行完毕后打印其所消耗的'时间。使用 OpenCL 所需的头文件是 cl.h,位于文件系统的 /usr/include/CL 目录。链接程序所需的库文件是 和 ,位于 /usr/lib 目录。
为了计算消耗的时间,我们创建带分析功能的队列,在结束的时候获取分析的结果。
OpenCL 代码见如下GitHub链接:
https://github.com/giobauermeister/OpenCL-test-apps/tree/master/cl_sample_timer
CPU 代码是简单的 C 程序,和上面一样计算同样的队列求和。为了计算消耗的时间,我们使用 time.h中的库。代码见如下链接:
https://github.com/giobauermeister/OpenCL-test-apps/tree/master/proc_sample
5). 交叉编译应用
同一个 Makefile 可以用于交叉编译 GPU 和 CPU 应用,如以下面链接Makefile为例,不过你需要注意下面的三个变量。根据你的系统做相应的调整:
https://github.com/giobauermeister/OpenCL-test-apps/34654864/3b68547284d1/267b4865bed0e2eda604d9/1b684c6387ca.e
a). ROOTFS_DIR -> Apalis iMX6 文件系统路径
b). APPNAME -> 应用的名字
c). TOOLCHAIN -> 交叉编译工具的路径
在应用所在的目录中保持 Makefile 文件,然后运行 make。最后将编译生成的文件复制到 Apalis iMX6 开发板上。
6). 在执行两个应用程序后,我们得到以下结果:
--------------------------------
### Processor time
Execution time in miliseconds = 778.999 ms
Execution time in seconds = 0.779 s
### GPU time
Execution time in milliseconds = 12.324 ms
Execution time in seconds = 0.012 s
--------------------------------
根据以上结果,我们可以很清楚地看到在 Apalis iMX6Q GPU 上使用 OpenCL 能够加速队列求和运算。
7). 总结
用户想要使用 Apalis iMX6Q GPU ,除了其他的方法,还可以使用 OpenCL 提高计算性能。正如本博文所描述,借助 OpenCL,可以在不同设备从图形显卡到超级计算机以及嵌入式设备,运行代码。用户还可以进一步结合,例如在 OpenCV 中使用 OpenCL 提高计算机视觉的性能。这个演示可以作为开发无图形界面应用的例程。
-
嵌入式Linux+Android学习路线图
嵌入式Linux的特点是版权费免费,购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持等。下面是小编整理的嵌入式Linux+Android学习路线图,希望大家喜欢!1.程序员的三大方向程序员的方向,一...
-
嵌入式系统简介
嵌入式系统本身是一个相对模糊的定义。嵌入式系统已经渗透到我们生活中的每个角落,工业、服务业、消费电子……,而恰恰由于这种范围的扩大,使得嵌入式系统更加难于明确定义。举个简单例子:一个手持的mp3是否可以叫做是嵌入式系统呢?答案肯定是是。另外...
-
2016年嵌入式开发系统的七个小技巧
从规范完善的开发周期到严格执行和系统检查,开发高可靠性嵌入式系统的技术有许多种。下面yjbys小编为大家介绍7个易操作且可以长久使用的技巧,它们对于确保系统更加可靠地运行并捕获异常行为大有帮助。技巧1:用已知值填充ROM软件开发人员往往都是非常乐观的一群人...
-
嵌入式系统编程中的代码优化
今天,嵌入式系统已经广泛地应用于工业控制、信息家电、办公自动化、移动通信、仪器仪表、医疗电子以及国防等领域。随着国内外各种嵌入式产品的进一步开发和推广,嵌入式技术越来越和人们的生活紧密结合。那么嵌入式系统编程中的代码如何优化,下面跟yjbys小编一起...