Microsoft55555 2023-09-20 14:42 采纳率: 0%
浏览 3

C6678多核处理的问题

如图,错误如下

img


单步执行发现出问题在332行这个函数

img


这里因为处理速度跟不上,一半数据送核1解码,核1也是调用的这个函数,但是核1不会报错,函数里面就是一些FFT、逆FFT的计算,如图所示

img


所有数据都是通过地址传递,解码函数里面的for循环单步执行没问题,一旦直接运行立马报错
实在是懵逼了,不知道啥原因😂

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-27 12:05
    关注

    该回复引自免费微信小程序-皆我百晓生:


    根据您的描述,出现问题的函数是在多核处理器C6678上运行的,在核1中没有报错,但在核0中执行时出错。导致错误的原因可能是核0上的处理速度无法跟上数据的处理需求。

    在多核处理器中,不同核之间的执行是并行的,因此核1在处理数据时可能比核0更快一些。由于数据是通过地址传递的,在核1中执行时可能数据已经更新,而在核0中执行时数据还未被更新,导致核0上的处理过程出错。

    为了解决这个问题,可以考虑以下几点:

    1. 确保核0上的处理速度可以满足数据处理需求。您可以通过优化核0上的代码或增加核0的处理能力来提高其处理速度。

    2. 使用同步机制确保数据的一致性。可以使用信号量、互斥锁等同步机制来同步核0和核1对数据的访问,确保在核0访问数据时数据已经更新。

    3. 可以在核0中增加一定的延时,以便等待核1对数据的处理完成。这样可以确保在核0处理数据时数据已经被更新。

    通过以上的措施,可以提高多核处理器的稳定性并避免出现错误。另外,如果问题依然存在,建议仔细检查代码,可能在函数的逻辑中存在其他潜在错误导致核0上的执行出错。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月20日

悬赏问题

  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?