多核协作之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.核心数越多,耗时越短(废话么)  
 |