本文针对多核协作的两个Image processing demo进行对比,它们分别是OMP和IPC.
其中:
OMP=OpenMP,这个demo用到了MailBox邮箱投递
IPC=Inter-processor Communication,这个demo用的是MessageQueue消息队列
两个demo在测试的时候最大的一个区别是,OMP只需连接core0,而IPC则是master-slave模式。
至于IPC模式的demo可以参见以下两篇博文
CCS+C6678LE开发记录13:多核协作图像处理demo测试
这两个demo测试的时候都是在EVM board上运行主程序(Edge detection),在PC的Web浏览器中访问网页内容
测试起来有些麻烦,因此我只选择两张图片进行测试,具体结果如下
测试1:2640*1210, 24bit RGB 位图
#代表使用的core数目,下同
# | Time (ms) | |
OMP | IPC | |
1 | 180.721 | 295.116 |
2 | 91.927 | 149.748 |
3 | 63.769 | 102.540 |
4 | 47.139 | 77.575 |
5 | 37.947 | 62.715 |
6 | 31.877 | 52.857 |
7 | 27.687 | 45.350 |
8 | 24.832 | 40.214 |
测试2:1920*1080, 24bit RGB 位图
# | Time (ms) | |
OMP | IPC | |
1 | 116.342 | 191.460 |
2 | 60.543 | 97.286 |
3 | 40.507 | 66.241 |
4 | 30.675 | 50.398 |
5 | 24.706 | 40.317 |
6 | 21.018 | 34.359 |
7 | 17.967 | 29.661 |
8 | 15.961 | 26.225 |
为了更加直观的比较,我将其绘制成折线图
测试1
测试2
虽然测试不太严格,但总体看来可以得到以下粗略的结论:
1.同样的核心数,OMP效果>IPC效果
2.核心数*消耗时间基本一致,也就是说,单核耗时为t,那么n核耗时近似为t/n
3.图像尺寸越大,耗时越长(废话么)
4.核心数越多,耗时越短(废话么)
最后总结一点,OMP方式只需要向core0载入out文件,并且执行效果优于IPC方式。
本文原创,博文地址
http://blog.csdn.net/fengyhack/article/details/44084479
转载于:https://www.cnblogs.com/fengyhack/p/10603514.html