gpt4 book ai didi

windows - MinGW64 无法进行 32 字节堆栈对齐(Windows x64 上的 AVX 需要),轻松解决或切换编译器?

转载 作者:可可西里 更新时间:2023-11-01 13:34:01 26 4
gpt4 key购买 nike

我正在尝试使用 AVX 指令和 64 位 Windows。我对 g++ 编译器很满意,所以我一直在使用它,但是,报告了一个大错误 here并提出了非常粗略的解决方案here .

基本上,m256 变量不能在堆栈上对齐以正确使用 avx 指令,它需要 32 字节对齐。

在我链接的另一个堆栈问题中提出的解决方案真的很糟糕,特别是如果你考虑到性能的话。一个 python 程序,你每次想要调试时都必须运行它,它用次优未对齐的指令替换指令,或者过度分配并在代码中做一堆昂贵的 hacky 指针数学以获得正确的对齐。如果您执行指针数学解决方案,我认为甚至还有可能出现段错误,因为您无法控制分配或 r-values/temporaries。

我正在寻找更简单、更便宜的解决方案。我不介意切换编译器,我不愿意,但如果这是最好的解决方案,我会的。但是,我对这个错误的理解很差,因为它是 64 位 Windows 固有的,所以切换编译器会有帮助还是其他编译器也有同样的问题?

最佳答案

您可以通过切换到 Microsoft 的 64 位 C/C++ 编译器来解决此问题。该问题不是 64 位 Windows 固有的。尽管 Kai Tietz 在您链接的错误报告中说了什么,但 Microsoft 的 x64 ABI 确实允许编译器在堆栈上为变量提供大于 16 字节的对齐方式。

此外,Cygwin 的 64 位版本的 GCC 4.9.2 可以在堆栈上为变量提供 32 字节对齐。

Windows 版 Clang 还可以使用 AVX 生成工作可执行文件,并且在优化方面是一个不错的选择。

关于windows - MinGW64 无法进行 32 字节堆栈对齐(Windows x64 上的 AVX 需要),轻松解决或切换编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com