4

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

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

然后对数组的所有成员进行评估?我要避免的是创建一个临时数组tanh(x),exp(x)tanh(x) + exp(x) 通过调用 mkl 或 acml 函数来tanh(),exp()+.

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

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

我是一个新手,以前从未使用过 SSE 或 MKL/ACML,只是冒险进入新领域。

4

2 回答 2

2

它可能不完全符合您的要求,但我建议您看一下macstl。这是一个 SIMD valarray 实现,它使用模板元编程,并且可以将表达式组合成一个循环。您可以按原样使用它或者作为更接近您需要的东西的基础。

于 2011-08-10T08:34:11.593 回答
1

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

于 2011-08-10T11:16:56.337 回答