This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

【多核编程】多核并行处理,数据传输有误

请教各位专家:

   借这次对话的机会向各位专家请假最近比较困惑且急待解决的问题。

   我用双核并行处理一个数据举证,Core0处理上半部分,Core1处理下半部分,但是并行处理时出现了如下问题:

1.Core0所处理的上半部分中仅第二行有问题,第二行的结果与第一行相同;

2.Core1所处理的后半部分中只有第一行没有问题,其他行均有问题,第三行之后的结果与正确结果相差一位(即第三行的结果本应该是第二行的,第四行的结果本应该是第三行的)

多次尝试仍然没能解决问题,还请专家帮忙看看问题出在哪。附件有我的工程代码和问题描述。

谢谢!

工程代码及问题描述.rar
  • 您好,

    单步调试一下看看每个core处理出错数据对应读入的数据正确,这个应该是你软件的问题,单步调试应该能解决。

  • Andy 您好:

       这个问题让我纠结了好久,总之就是单核并行处理时从第二次循环开始数据传输出现了问题,不知道是总线冲突的问题(两个内核可能要同时对DDR3进行读写操作),还是EDMA配置的问题。

       单步调试我试过,我是将两个核group之后设断点,执行之后查看Core0、Core1中相关参量的值,但是这种方式调试下来结果跟单核分别执行的结果相同。

       请问Andy多核并行处理时怎样去单步调试呢?

    谢谢!

  • 1. 你是怎么进行数据传输的?使用的是EVM板么?总线冲突不会影响数据正确性,只会影响传输速率。首先重点查看数据读进来的正确性。

    2. 多核调试跟单核调试没有区别,基本的就是首先在输入口打断点,多核运行起来,然后在断点处查看数据正确性。

  • Andy 您好:

    1.我是用的EVM板进行的数据传输和运算的;

    2.这种单步调试我尝试过,但是这样调试下来的结果是跟单核分别运行的结果是相同的,也就是单步调的时候数据传输没有问题。

    请问Andy会不会是工程里EDMA中Data_Moving_Core0和Data_Sorting_Core0的问题呢?

    谢谢!

  • 你是用EDMA进行数据传输么?有可能是你在数据处理时,数据还没有完全传输完成。

  • 是用EDMA传输的,但是处理结果显示第二次循环处理的结果与第一次相同,Core0仅有这一行数据处理有误,而Core1则是第三行开始处理结果放到了错的位置,相差一行。