如何仅为源代码的特定部分打开 -mavx2
How to turn on -mavx2 for only particular part of source code?
我可以强制编译器在代码的某个特定部分-march
设置之外编译一些内部函数吗?
当然,其余的将保留在-march
设置范围内。
是否可以仅在源代码的特定部分启用-mavx2
?
还是我必须单独编译-mavx2
部分的唯一方法?
试试__attribute__((target("avx2")))
.GCC和Clang都支持它。
例:
#include <stdlib.h>
#include <stdio.h>
#include <immintrin.h>
__attribute__((target("avx2")))
int add_with_avx2(int a, int b) {
__m256i av = _mm256_set_epi32(a, 0, 0, 0, 0, 0, 0, 0);
__m256i bv = _mm256_set_epi32(b, 0, 0, 0, 0, 0, 0, 0);
__m256i result = _mm256_add_epi32(av, bv);
return ((int*)&result)[7];
}
int main(void) {
return add_with_avx2(5, 6);
}
但是,最好将需要内部函数的函数放在单独的文件中,以防需要使用没有此功能的编译器。
相关文章:
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 在基于范围的for循环中使用结构化绑定声明
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 视觉studo 2019中的漫画和静态/动态绑定
- 将自由函数绑定为类成员函数
- 将常量指针引用绑定到非常量指针
- 如何将部分流作为参数传递
- 在派生类中绑定非静态模板化成员函数
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 在 openGL 中多次绑定缓冲区
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 使用结构化绑定'Reflection'
- 为什么 std::绑定错误参数可以成功?
- 如何绑定 C++ gRPC 客户端的网络接口
- 在 openmp 中,omp_get_thread_num是否绑定到物理线程?
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- C++绑定(已弃用)
- 运行时错误:引用绑定到类型为"int"的空指针