使用Agner的Vector类库编译多体系结构代码

亚历山大·杜宾斯基(Aleksandr Dubinsky)

如何创建可根据主机处理器/ OS在SSE,AVX和AVX2代码路径之间动态切换的库?我正在使用Agner Fog的VCL(矢量类库),并使用GCC for Linux进行编译。

玻色子

请参见向量类库手册中的“指令集和CPU分配”部分阿格纳在那部分写道

文件dispatch_example.cpp显示了如何制作一个选择适当代码版本的CPU调度程序的示例。

将源代码读取distpatch_example.cpp在文件的开头,您应该看到注释

# Compile dispatch_example.cpp five times for different instruction sets:
| g++ -O3 -msse2    -c dispatch_example.cpp -od2.o
| g++ -O3 -msse4.1  -c dispatch_example.cpp -od5.o
| g++ -O3 -mavx     -c dispatch_example.cpp -od7.o
| g++ -O3 -mavx2    -c dispatch_example.cpp -od8.o
| g++ -O3 -mavx512f -c dispatch_example.cpp -od9.o
| g++ -O3 -msse2 -otest instrset_detect.cpp d2.o d5.o d7.o d8.o d9.o
| ./test

文件instrset_detect.cpp您还应该阅读源代码。这就是所谓的CPUID。

是我对CPU调度程序的部分而非全部问题的总结。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

symfony2类和存储库体系结构

在插件体系结构的类库中处理异常

使用msbuild构建多体系结构安装程序

在64位Debian Wheezy多体系结构主机上编译使用ssl的32位二进制文件

是否存在用于具有大量类的多类分类的体系结构?

在编写由LLVM后端编译的代码时,体系结构重要吗?

如何打包针对通用Windows平台的多体系结构.NET库?

需要多租户数据库体系结构的建议吗?

服务接口和服务隐含类的代码体系结构出现

android-模型类android体系结构中的会议室数据库连接

如何从MVVM体系结构中的Web服务的存储库类与活动/片段进行通信

如何使相同的已编译C代码在不同体系结构上工作而又无需再次对其进行编译?

使用硒实现两类到第三类功能的体系结构

如何指示CMake使用构建体系结构编译器

如何使用clang和distcc在不同体系结构的从属上编译(例如Mac / Linux)

是否应使用条件编译来应对不同体系结构上CGFloat的差异?

R正在使用mingw_32来编译64位体系结构的软件包

C ++编译器如何知道所使用的CPU体系结构

使用g ++编译C ++程序的体系结构x86_64的未定义符号

使用消息队列的项目体系结构

Android体系结构组件:使用枚举

使用WCF的面向服务的体系结构

某些软件包无法使用多体系结构安装(需要两个)

GCC在类似的体系结构上使用“ -march = native”发出完全不同的代码

堆栈由编译器或OS /体系结构创建

用于ARM体系结构的Linux交叉编译

编译时按体系结构排除go源文件

使用存储库模式的具有多个数据源的体系结构

在MVVM体系结构中将Tab布局与数据绑定库一起使用