【问题标题】:C/C++ library for lazy evaluation of SIMD/SSE expressions用于对 SIMD/SSE 表达式进行惰性求值的 C/C++ 库
【发布时间】:2011-08-10 07:49:36
【问题描述】:

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,只是冒险进入新领域。

【问题讨论】:

  • @VJo 感谢您修正错别字并重新格式化编号列表。
  • 这有点切题 snort, snort, ahem 但 Wolfram Alpha 有一些优化和简化工具,如 simplify log( tanh(x) + exp(x) )] 并且他们也有一个 API。可能对你正在做的事情的某些方面有用,或者没有:blog.wolframalpha.com/2011/04/25/…

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 谢谢,我会查一下。但我认为我不能在 GPL 下发布代码。
    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 2010-09-29
    相关资源
    最近更新 更多