BD *_*ill 5 c c++ numerical simd
我正在寻找类似于英特尔的Linux矢量数学库的免费/开源C/C++(可接受的)常用数学函数(如ln或exp)的矢量化版本库.我想要一个能够让我具备以下内容的库:
double a[ARRAY_SIZE], b[ARRAY_SIZE];
for (int i = 0; i < ARRAY_SIZE; ++i) {
    a[i] = ln(b[i]);
}
如:
double a[ARRAY_SIZE], b[ARRAY_SIZE];
vectorized_ln(a, b, ARRAY_SIZE);
并使用Intel和AMD架构上提供的SIMD指令的全部功能.开发环境包含在Linux上运行的GNU工具.英特尔的数学核心库包含一个名为矢量数学库的东西,它宣传"计算密集型核心数学函数的矢量实现",包括基本函数,触发函数等,所以我正在寻找类似的东西,但是免费的.
Felix von Leitner撰写了一篇关于各种c编译器生成的实际装配的详尽介绍.
他关于简单操作矢量化的说明从幻灯片28开始.
对于GCC 4.4和memset类型循环
Slide 41的标题是"Outsmarting the Compiler - simd-shift",并得出结论:"gcc比所有平台上的视频编解码器程序员更聪明"
幻灯片42是另一种情况,其中gcc将自动向量化初始代码.
所有这些都加起来先检查你正在使用的编译器是否只是为你处理它.
| 归档时间: | 
 | 
| 查看次数: | 3489 次 | 
| 最近记录: |