Jer*_*wen 8 c gcc trigonometry vectorization
我正在寻找计算高度并行化的trig函数(在1024的块中),并且我想利用至少一些现代架构所具有的并行性.
当我编译一个块
for(int i=0; i<SIZE; i++) {
arr[i]=sin((float)i/1024);
}
Run Code Online (Sandbox Code Playgroud)
海湾合作委员会不会对其进行矢量化,并表示
not vectorized: relevant stmt not supported: D.3068_39 = __builtin_sinf (D.3069_38);
Run Code Online (Sandbox Code Playgroud)
这对我来说很有意义.但是,我想知道是否有一个库可以进行并行三角计算.
只有一个简单的泰勒系列上升到第11阶,GCC将向所有循环进行矢量化,并且我的速度超过了一个天真的sin循环的速度的两倍(具有精确答案,或者具有9阶系列,只有一个位)关闭1600个值的最后两个,加速> 3倍).我确定有人之前遇到过这样的问题,但是当我谷歌时,我发现没有提及任何库等.
A.是否已存在某些内容?
B.如果没有,建议优化并行触发功能?
编辑:我发现所谓的"SLEEF"以下库:http://shibatch.sourceforge.net/ 其描述此文件,并使用SIMD指令来计算几个基本功能.它使用SSE和AVX特定代码,但我认为将其转换为标准C循环并不困难.
| 归档时间: |
|
| 查看次数: |
3122 次 |
| 最近记录: |