编写了一段用于信号处理的程序,该程序分别调用AB两个函数来完成;
main函数通过核号来实现多核并行处理
1、单核、双核计算时结果正确;
2、当核号增加至4核时,A函数处理结果正确,B函数处理结果异常,通过逐步排查,发现B函数中在计算FFT点数实际应为1024,但进入FFT函数后各核形参值为16982、25848等错误值
程序统一存放在DDR中,程序用未使用cache
zane xu:
回复 Nancy Wang:
将程序修改为循环调用TI的DSPF_sp_fftSPxSP_cn函数,
并且发现前1000多次FFT处理是正常的,
随后出现进入DSPF_sp_fftSPxSP_cn函数后形参N(FFT点数)的值错误,
查看N的地址为0x00843E74,位于分配的L2中.stack段中。
配置文件中.stack起始为0x00840000,长度为0x4000。
请问6678多核使用同一程序时,cmd配置可有需要特别注意之处?
zane xu:
回复 Nancy Wang:
抱歉,FFT结果错误的原因是核间未进行同步,导致存储时有若干核的后半部分结果未得到及时同步进而引起了处理结果的错误。
Nancy Wang:
回复 zane xu:
感谢分享!