3

IPP <= 7.1 具有特殊的就地功能。

在 IPP 8 中,它们已被弃用:deprecation-summary

目前尚不清楚新的异地功能是否也支持就地操作。

我的猜测是,对于某些函数,可以为 src/dst 传递相同的指针,但对于其他函数则不是,但这没有记录。

这是文档

4

3 回答 3

3

我有类似的问题,并已将其发布在英特尔的开发人员专区下。以下链接将带您访问我的帖子以及我从英特尔得到的答案:

http://software.intel.com/en-us/forums/topic/498093

以下是来自上述链接的简短引用:

在 IPP 8.1 中(将在 2014 年 6 月的 web 上提供)弃用消息从所有 ipps 就地功能中删除(基于客户的反馈)。计划在最近的将来对 ippi 域进行相同的操作。

希望你觉得这很有帮助(我做到了)。

于 2013-12-25T20:20:57.997 回答
2

Here's a quote from Intel's comment on the deprecated functions:

In-place functionality will be removed: In-place functions accept only one pointer for input and output. The out-of-place versions often offer the same functionality but with the additional flexibility of specifying a different output buffer.

In my experience, all out-of-place functions with deprecated in-place variants support in-place operation, pSrc and pDst may point to the same memory.

Therefore my answer is: Yes, IPP 8.0 still supports in-place operations, but it's not documented well.

于 2013-10-22T12:58:45.900 回答
2

这是7.1 中弃用的函数列表,以及推荐的替代品。您应该注意到,非就地函数通常被推荐作为其就地对应物的替代品。

这是一个论坛讨论,其中一位英特尔工程师确认可以通过设置 src==dst 来使用非就地功能代替其就地对应物。

不过,有一个警告。如果您使用的是 IPP 7.0,编译器将发出弃用警告。但是,至少对于其中一些函数,使用 src==dst 方法会产生损坏的输出。这似乎直到 7.1 才完全实现。我亲身体验过这个过滤器功能的问题,并且在讨论中有一个问题,尽管英特尔从未对此做出回应。

令人沮丧的是,英特尔并没有更加坦率地明确记录这一变化。由此产生的错误非常难以诊断,并且很容易被完全忽略。捕捉它们的唯一方法是比较两个函数的输出,很少有人会费心去做。

于 2014-08-26T14:51:49.957 回答