大家好,
我之前采用Message_Q机制进行多核编程,是参考TI的image-processing的例程进行编程的。我测试了一下该方法下通讯时间,主核向8个从核发送并收回一次消息需要121690个时钟周期,这对我的应用来说时间过长了,所以考虑采用其他的通讯机制。目前正在尝试各核直接读取公共内存区域MSMCSRAM的方法,并在MSMCSRAM中设置flag来保证各核之间的同步。首先请问一下做过这种方法的,这种方法进行8核通讯是否可行,通讯时间是否可以显著改善?
现在我只做两个核间的通讯,工作方式如下:
在MSMCSRAM上面设置三个数组,数组u用来存放整个的数据,u0和u1为两个维数较小的数组,分别用来存放u的前一半数据和后一半数据,其中u0用来存放0核写回的数据,u1用来存放1核写回的数据。开始时,对u、u0、u1分别设置初始值,0核和1核读入数组u,核0对u的前一半数据进行操作并把更新后的数据写回u0并使能标志flag0,核1对u的后一半数据进行操作并把更新后的数据写回u1并使能标志flag1。在核0上轮循检查flag0和flag1是否都已使能,若是,则把u0和u1的数据分别copy到u的前一半和后一半,并一次性写回u。
我现在测试程序发现虽然我已在核1上面把u1更改并写回,但是在核0输出时u1仍然是之前设置的初始值。我觉得我的程序逻辑上没有问题,但不知道为什么会有这样的问题。附件里是我的程序和link file,程序比较简单,恳请大家帮忙看一下。
谢谢!