c++ - 使用英特尔 C++ 编译器 2019.4 编译的简单控制台应用程序无法在 Ryzen 处理器上运行

标签 c++ x86 intel icc amd-processor

简单的程序

#include <stdio.h>

int main()
{
    printf( "Hello, world!\n" );
}

使用带有以下开关的英特尔 C++ 编译器 2019.4 编译时: /O3/Qunroll/Qunroll-aggressive/QxSSE3/QaxCORE-AVX2 拒绝在运行 Windows 10 的 Ryzen 3 1200 处理器上运行。

我在控制台上得到的错误是运行应用程序所需的处理器功能列表。所有这些功能在 Ryzen 处理器(SSE3、AVX2、CMOV、FXSAVE 等)上都可用,但应用程序无法运行。

这个简单程序的完整运行时库错误如下:

Please verify that both the operating system and the processor support Intel(R) X87, CMOV, MMX, FXSAVE, SSE, SSE2 and SSE3 instructions.

这只是一个最低限度的例子,我当然有很多更复杂的应用程序,但它也没有运行。

唯一的解决方法是使用 /O3/Qunroll/Qunroll-aggressive/QxSSE2 开关,但这会有效地禁用 AVX2 自动调度和 SSE3 指令。

这个问题是否有可能的解决方法?

最佳答案

即使这些指令集可用,编译器发出的验证其可用性的代码也不一定能识别它们在非英特尔 CPU 上的存在。 Documentation明确声明像 CORE-AVX2 这样的选项可能只适用于 Intel 处理器:

CORE-AVX2 May generate Intel® Advanced Vector Extensions 2 (Intel® AVX2), Intel® AVX, SSE4.2, SSE4.1, SSE3, SSE2, SSE, and SSSE3 instructions for Intel® processors. Optimizes for Intel® processors that support Intel® AVX2 instructions.

(备注)

Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel.

关于c++ - 使用英特尔 C++ 编译器 2019.4 编译的简单控制台应用程序无法在 Ryzen 处理器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57026548/

相关文章:

linux - Hello World 通过一个系统调用打印两条消息?为什么 length equ $-msg1 包括两者?

android - 在 INTEL Android (Android-x86) 上安装 Flash 或 AIR?

C++ 使用*新类,丢失指针?

c++ - 在 UE4.22.3 及以上版本中将用户输入绑定(bind)到 UActorComponent 方法

c++ - 强制模板静态成员实例化

c - 在 __m128 上右移 32 位的最快方法(Intel Intrinsics)

c++ - 有没有比添加 0.5f 和截断转换更直接的方法来将 float 转换为 int 并进行舍入?

c++ - C++中的数据库程序问题

c# - x64 和 x86 之间字节数组访问的巨大性能差异

linux - 写保护的虚拟页面,捕捉写