CCS+C6678LE开发记录14:多核协作之OMP与IPC方式的较量
本文针对多核协作的两个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方式。
本文原创,博文地址