用于懒惰评估SIMD / SSE表达式的C / C ++库

时间:2011-08-10 07:49:37

标签: c++ sse intel-mkl parse-tree

intel - MKL或amd - ACML等库提供了更容易的向量上SIMD操作的接口,但我想将几个函数链接在一起。是否有现成的库,我可以为

这样的表达式注册一个解析树
log( tanh(x) + exp(x) )

然后在数组的所有成员上进行评估?我想避免的是通过调用tanh(x)exp(x)和{的{mkl或acml函数来创建tanh(x) + exp(x)tanh()exp()的临时数组。 {1}}。

我可以手动展开循环并直接使用sse指令,但是想知道是否有C ++库为你做这个,即

+

我非常喜欢新手,之前从未使用过SSE或MKL / ACML,只是冒险进入新的领域。

2 个答案:

答案 0 :(得分:2)

它可能不会完全你想要什么,但我建议你看看macstl。它是一个SIMD valarray实现,它使用模板元编程,可以将表达式组合成一个循环。您可以按原样使用此,也可以作为更接近您需要的基础。

答案 1 :(得分:1)

看看Intel ABB。它使用及时编译方法IIRC。它可以使用向量指令和多线程,具体取决于您所使用的向量的大小。