用于延迟计算SIMD/SSE表达式的C/ c++库
C/C++ library for lazy evaluation of SIMD/SSE expressions
诸如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。它可以使用矢量指令和多线程,这取决于你所操作的矢量的大小。
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 提升精神:解析布尔表达式并简化为规范范式
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 使用正则表达式regex_search在字符串中查找字符串
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 概念中的cv限定符需要表达式参数列表
- 为什么constexpr的性能比正常表达式差
- 对于结构,表达式必须是可修改的ivalue
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 将fold表达式与std::一起用于两个元组
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- 标记 '","' 之前的预期主表达式
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 带有用户定义类的c++折叠表达式
- 即使使用调试编译标志,表达式也是"optimized out"
- holeMenuProgram.cpp:38:1 错误:'}'令牌之前的预期主表达式
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 这 4 个 lambda 表达式之间有什么区别?