最近再调试多核并行运算一个算法时遇到不明白的问题了,在此请教大家:
就是一个算法流程代码都放在一个.c文件中,单核运行时加-o3级优化能顺利执行,现在想把算法分成两部分放在两个核中执行,实现并行运算,首先调试不加优化,双核运行结果正确,具体方法就是:
1.先把算法需要的数据准备好,L1dcachewritback()操作后,给core1发送一个IPC中断,
2.然后两核同时运算,core1运算结束后给core0一个IPC中断,
3.最后Core0收到core1中断后,L1dcacheinvalid()操作,然后读取数据,
4.继续往后的操作。
不加优化时一切正常,加了优化后发现程序运算好像是死在哪块,出不来,暂停后发现指针停在第一步之后,一直不动,为什么呢???是cache操作还是IPC中断发送受优化影响了?奇怪的地方出现了:
这个时候我在1步之后加一个断点,然后每次会停在断点一次,继续运行就没有问题,结果也正确,实在没想明白,望大家指导一下,多谢多谢。。