禁用所有AVX512扩展名

问题描述 投票:1回答:1

我需要在gcc编译的代码中禁用所有AVX512扩展。原因是Valgrind阻塞了AVX512指令。有没有办法用一个标志做到这一点?

我知道如何分别禁用每个扩展名(-mno-avx512f-mno-avx512pf等),但这很麻烦,因为不同的gcc版本支持这些扩展名的不同子集。

我使用CMake。如果有一种方法可以使用CMake机械来自动执行标记,这对我也将起作用。

gcc avx instruction-set avx512
1个回答
0
投票

[gcc -mno-avx512f也暗含没有other AVX512扩展名。

类似地,-mno-avx禁用AVX2,FMA3等,因为它们都是基于AVX构建的。 (由于GCC的工作方式,-mavx512f -mno-avx甚至可能还会禁用AVX512F。)


例如gcc -march=icelake-client -mno-avx512f将拒绝AVX512DQ或AVX512VL指令等的内部函数,以及在自动向量化时不使用它们的内部函数。

© www.soinside.com 2019 - 2024. All rights reserved.