用于延迟计算SIMD/SSE表达式的C/ c++库

C/C++ library for lazy evaluation of SIMD/SSE expressions

本文关键字:c++ 表达式 SSE 延迟 计算 SIMD 用于      更新时间:2023-10-16

诸如intel- MKL或amd- ACML之类的库为向量上的SIMD操作提供了更简单的接口,但我想将几个函数链接在一起。是否有现成的库,我可以注册一个解析树的表达式,如

log( tanh(x) + exp(x) )

然后对数组的所有成员求值?我想避免的是通过调用tanh(), exp()+的mkl或acml函数来制作tanh(x), exp(x)tanh(x) + exp(x)的临时数组。

我可以手动展开循环并直接使用sse指令,但我想知道是否有c++库可以为您完成此操作,即

1. Handles SIMD/SSE functions  
2. Allows building of parse trees out of SIMD/SSE functions.  

我是一个新手,从来没有使用过SSE或MKL/ACML,只是冒险进入一个新的领域。

它可能不完全是您想要的,但是我建议您看一下macstl。这是一个SIMD valarray实现,它使用模板元编程,并且可以将表达式组合到单个循环中。您可以直接使用,或者作为更接近您需要的内容的基础。

看看Intel ABB,它使用的是即时编译方法IIRC。它可以使用矢量指令和多线程,这取决于你所操作的矢量的大小。