Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C/C++;SIMD/SSE表达式的惰性计算库_C++_Sse_Intel Mkl_Parse Tree - Fatal编程技术网

C++ C/C++;SIMD/SSE表达式的惰性计算库

C++ C/C++;SIMD/SSE表达式的惰性计算库,c++,sse,intel-mkl,parse-tree,C++,Sse,Intel Mkl,Parse Tree,诸如intel-MKL或amd-ACML之类的库为向量上的SIMD操作提供了更简单的接口,但我想将几个函数链接在一起。是否有现成的库可以为表达式注册解析树,如 log( tanh(x) + exp(x) ) 然后对数组的所有成员求值?我想要避免的是通过调用tanh()、exp()和+的mkl或acml函数来创建一个临时数组,其中包含tanh(x)、exp()和+ 我可以手动打开循环,直接使用SSE指令,但想知道是否有C++库为您这样做,即 1. Handles SIMD/SSE functio

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

log( tanh(x) + exp(x) )
然后对数组的所有成员求值?我想要避免的是通过调用
tanh()
exp()
+
的mkl或acml函数来创建一个临时数组,其中包含
tanh(x)
exp()
+

我可以手动打开循环,直接使用SSE指令,但想知道是否有C++库为您这样做,即

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

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

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

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

@VJo感谢您修复了输入错误并重新格式化了编号列表。这有点像切线snort,snort,ahem,但是Wolfram Alpha有一些优化和简化工具,如
simplify log(tanh(x)+exp(x))
]而且他们也有一个API。可能对你正在做的事情的某些方面有用,或者没有:谢谢,我会查的。但是我想我不能在GPL下发布代码。