微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在Intel CPU上编译的代码会在AMD CPU机器上崩溃?

如何解决为什么在Intel CPU上编译的代码会在AMD CPU机器上崩溃?

我有一个使用c + +开发的应用程序,该应用程序是在Visual Studio中,Windows上,带有Intel cpu的。

此应用程序在多台计算机上的多个位置都在使用,所有这些都使用Intel cpu

最近,它已安装在具有AMD cpu的PC上。

在AMD机器上,通过某些功能,应用程序冻结并崩溃。

崩溃的功能使用boost线程锁定,然后使用标准的opencv功能(特别是aruco基准标记模块),因此我认为问题出在线程锁定上。

相关代码为:

//标题

const createBase = function (num) {
    return num + 6
};

//第一个线程(生产者)

typedef boost::shared_mutex Lock;
typedef boost::unique_lock< Lock > WriteLock;
typedef boost::shared_lock< Lock > ReadLock;
Lock floorLock;

//线程二(消费者)

WriteLock f_lock2(floorLock);
frameFloor = image_ocv.clone(); //an opencv::Mat 
f_lock2.unlock();

我曾尝试将它们换成ad-safe队列,然后崩溃仍然存在。

一个第三方现在已经在不同的机器上对此进行了测试,并确认了行为。 运行正常的计算机与崩溃的计算机之间的唯一区别是英特尔与AMD cpu

不幸的是,我没有任何AMD机器,因此在调试它时遇到了麻烦。

是否有任何原因导致在Intel cpu上编译的代码在AMD上崩溃? 我该如何解决这个问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。