多核协作之OMP与IPC方式的较量
本文针对多核协作的两个Image processing demo进行对比,它们分别是OMP和IPC. 其中: OMP=OpenMP,这个demo用到了MailBox邮箱投递 IPC=Inter-processor Communication,这个demo用的是MessageQueue消息队列 两个demo在测试的时候最大的一个区别是,OMP只需连接core0,而IPC则是master-slave模式。 这两个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.核心数越多,耗时越短(废话么)
|