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开发记录11:多核协作(IPC)入门

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

猜你喜欢

转载自blog.csdn.net/von_Ryan_Hack/article/details/44084479