问题标签 [intel-ipp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4289 浏览

c++ - 将 Linux 上的静态英特尔 IPP 库与 g++ 链接时出现问题

我一直在尝试将项目从 Xcode 转移到 Linux(目前是 Ubuntu x86,但希望静态链接的可执行文件将在 x86 CentOS 机器上运行?我希望我希望?)。我已经编译了整个项目,但它在链接阶段失败了——它为 IPP 定义的所有函数提供了未定义的引用。这可能是一件非常小而愚蠢的事情,但我已经为此绞尽脑汁好几天了,但我无法让它发挥作用。

这是编译语句(我也有一个生成相同错误的生成文件):

g++ -static /opt/intel/ipp/6.0.1.071/ia32/lib/libippiemerged.a /opt/intel/ipp/6.0.1.071/ia32/lib/libippimerged.a /opt/intel/ipp/6.0.1.071/ ia32/lib/libippsemerged.a /opt/intel/ipp/6.0.1.071/ia32/lib/libippsmerged.a /opt/intel/ipp/6.0.1.071/ia32/lib/libippcore.a -pthread -I /opt/ intel/ipp/6.0.1.071/ia32/include -I 工具/include -o main main.cpp pick_peak.cpp get_starting_segments.cpp get_segment_timing_differences.cpp recast_and_normalize_wave_file.cpp pitch_score.cpp pitch_score.cpp pitch_curve.cpp tools/source/LocalBuffer.cpp工具/来源/wave.cpp distance.cpp

...这是一长串链接器错误的开头:

有任何想法吗?FWIW,这些是我的 Xcode 项目中的 IPP 依赖项,它们可以毫无问题地构建、链接和运行:“-lippiemerged”、“-lippimerged”、“-lippsemerged”、“-lippsmerged”、“-lippcore”、

谢谢!

0 投票
4 回答
1110 浏览

c++ - 为什么 iplRotate() 没有给我正确的结果?

叹息我很抱歉地说我在我正在处理的一些图像处理代码中使用英特尔 IPL(图像处理库)。这是我努力让图像正确旋转的故事。

  1. 我有一个源图像。它的大小(w, h)不一定是正方形。
  2. 它将旋转角度theta
  3. 我已经计算了适合大小为(w, h)的图像旋转角度theta所需的输出大小。这个大小是(dw, dh)。我已经分配了一个具有该大小的目标缓冲区。
  4. 我想通过围绕源图像中心(w/2,h/2)的角度theta旋转源图像,并使旋转后的图像在我的目标缓冲区中居中。

iplRotate () 采用 2 个移位参数xShiftyShift,它们表示执行旋转后图像应沿 x 和 y 轴移动的距离。

问题是我无法让 iplRotate 在目标图像中居中旋转图像。它总是偏离中心。

我对 xShift 和 yShift应该是什么的最佳猜测如下:

  • xShift = dw - w
  • yShift = dh - h

但这不起作用,我不确定还有什么可以计算xShiftyShift。有人对如何使用 iplRotate 做我想做的事有任何建议吗?

最后一点信息: 我尝试使用 iplGetRotateShift() 再次计算 xShift 和 yShift,但无济于事。我想这会起作用:

但事实并非如此。


编辑: 我使用 Intel IPP 6.0 而不是 IPL 重写了代码,我看到了相同的错误结果。我无法想象英特尔在 2 个不同的库中轮换错误,所以我一定做错了什么


编辑: 我尝试了 Dani van der Meer 建议的以下(IPP)代码:

不幸的是,仍然没有运气。那也不行。

0 投票
1 回答
1414 浏览

performance - 如何以最低的 CPU 使用率进行 jpeg 压缩?

我需要将原始图像数据转换为 jpeg。但就最佳质量或最小尺寸等而言,我不需要任何特别的东西。我只需要最小的 CPU 使用率。我是 jpeg 压缩的新手。

您能否建议在转换 jpeg 时哪些参数的 CPU 使用率最低?

我想使用 IPP(英特尔性能库)。IPP jpeg 库中的一个例子会很棒。但是来自任何其他 jpeg 库的任何样本也将受到赞赏。

如果您知道任何比 IPP 的 jpeg 库性能更高的 jpeg 库,请告诉我。

提前致谢。

问候。

0 投票
3 回答
1485 浏览

c++ - 有符号整数数组的高性能比较(使用英特尔 IPP 库)

我们正在尝试以signed int高性能的方式使用不等式操作 <、<=、> 和 >= 来比较两个大小相同的原生值数组。由于比较了许多值,true/false结果将存储在char与输入大小相同的数组中,其中0x00均值false0xff均值true

为此,我们使用了英特尔 IPP 库。问题是我们ippiCompare_*从图像和视频处理库中找到的执行此操作的函数名为 ,仅支持类型unsigned char( Ipp8u)、signed/unsigned short( Ipp16s/Ipp16u) 和float( Ipp32f)。它不直接支持signed int( Ipp32s)

我(仅)设想了两种可能的解决方法:

  • 将数组转换为直接支持的类型之一并在更多步骤中执行比较(它将变成大小两倍的短数组或大小四倍的 char 数组)并合并中间结果。

  • 使用另一个函数直接支持signed int来自 IPP 或另一个库的数组,这些函数可以在性能方面做一些等效的事情。

但可能还有其他创造性的方式......所以我请你帮忙!:)

PS:使用英特尔 IPP 的优势在于大型阵列的性能提升:它同时使用多值处理器功能和多个内核(可能还有更多技巧)。如此简单的循环解决方案不会像AFAIK那样快。

PS2:ippiCompare_* 文档的链接

0 投票
5 回答
10901 浏览

c++ - 将 FFT 转换为频谱图

我有一个音频文件,我正在遍历该文件并在每个步骤中采集 512 个样本,然后将它们传递给 FFT。

我将数据作为块 514 浮动很长(使用 IPP 的 ippsFFTFwd_RToCCS_32f_I),实部和虚部交错。

我的问题是,一旦我有了这些复数,我该怎么办?目前我正在为每个值做

这给出了一些稍微有用的东西,但我宁愿通过某种方式将值从 0 到 1 范围内。他上面的问题是峰值最终会回到大约 9 或更多。这意味着事情变得严重饱和,然后频谱图的其他部分几乎没有出现,尽管当我通过试听的频谱图运行音频时它们看起来非常强。我完全承认我不是 100% 确定 FFT 返回的数据是什么(除了它代表我传入的 512 个样本长块的频率值)。特别是我对复杂数字的确切含义缺乏了解。

任何建议和帮助将不胜感激!

编辑:只是为了澄清。我的大问题是如果不知道比例是多少,返回的 FFT 值是没有意义的。有人可以指点我计算出这个比例吗?

Edit2:通过执行以下操作,我得到了非常漂亮的结果:

在我看来,这甚至比我看过的大多数其他频谱图实现看起来更好。

我在做什么有什么重大问题吗?

0 投票
2 回答
763 浏览

c++ - 使用 winsock.h 的库的问题

我有一个使用 Boost.Asio 和英特尔 IPP 库附带的媒体解码示例的项目。问题如下。如果我在没有定义的情况下编译项目WIN32_LEAN_AND_MEAN,Asio 会抱怨臭名昭著的“winsock.h 已包含”错误。如果我定义了宏,则另一个库中的标头具有未定义的类型,因为它依赖于 windows.h,包括 winsock.h。我尝试手动将 winsock.h 添加到该标头,但这让 Boost.Asio 再次大喊大叫。我能想到的唯一解决方案是遍历每个编译单元并确保始终首先包含 Asio。由于项目的规模和复杂性(以及该解决方案的丑陋),我想找到一种更好的方法。

提前致谢 !

0 投票
2 回答
657 浏览

c++ - cygwin 上的 IPP 链接器错误

我已经构建了一个使用 mkl 和 ipp 在 mac 和 linux 上运行的程序。我现在正在使用 cygwin 和 gcc 为 Windows 构建该程序,但无法链接。

我得到的错误是:

警告:.drectve -defaultlib:"uuid.lib" ' unrecognized ../../../bin/libMath.a(VectorUtility.cxx.o):VectorUtility.cxx:(.text+0x95): undefined reference to _ippGetLibVersion' ../../../bin/libMath.a(VectorUtility.cxx.o):VectorUtility.cxx:(.text+0x157): undefined reference to `_ippsWinHann_32f_I'

(还有更多类似的)。

我正在使用链接路径:

/opt/intel/IPP/6.1.2.041/ia32/lib

并链接到以下内容:

ippiemerged、ippimerged、ippmemerged、ippmmerged、ippsemerged、ippsmerged 和 ippcorel。

有人可以指出我做错了什么吗?

0 投票
2 回答
1229 浏览

c++ - 英特尔性能原语 (IPP) 运行时错误

我有不是我写的源代码,我联系不上作者。它是用 C++ 编写的,需要 libjpeg、boost 和 Intel Performance Primitives。

编译是一件苦差事,但经过几天的问题解决后,它编译了。现在,我收到以下运行时错误:error while loading shared libraries: libippi.so.5.1: cannot open shared object file: No such file or directory. 无论命令行参数如何,错误都会立即发生。

我下载了适用于 Ubuntu 9.04 的 IPP 试用版。在 下/opt/intel/ipp/6.1.2.051/ia32/sharedlib/,我看到一堆以lib*and开头的文件libippi*,包括libippi.so.6.1. 所以我想我会尝试创建一个指向 的链接libippi.so.5.1libippi.so.6.1但这不起作用。我尝试在本地目录中创建一个类似的链接,但这也不起作用。

我不熟悉这些库中的任何一个,所以我不知道还能尝试什么。我在网上或 SO 上找不到任何解决方案。如果您能帮我解决这个错误,我将不胜感激。谢谢你。

0 投票
2 回答
543 浏览

c++ - IPP 和 DEV C++

嗨,我在 windows xp sp2 中使用 DEV C++ 编译器,最近我下载了 IPP 库。我安装成功,我将编译器目录从选项菜单设置到 IPP 目录,但是当我尝试编译 ITT 程序时,出现 ITT 函数的链接器错误。有解决办法吗?

0 投票
7 回答
10067 浏览

c++ - 如何在运行时摆脱 LD_LIBRARY_PATH?

我正在构建一个使用英特尔IPP库的 C++ 应用程序。该库默认安装在 /opt 中,需要您设置LD_LIBRARY_PATH编译和运行软件(如果您选择共享库链接,我这样做了)。我已经修改了我的configure.ac/Makefile.am以便在编译时不需要设置该变量,但是在运行时我仍然找不到共享库;我怎么做?

我正在使用-Wl, -R/path/to/libdir标志编译g++

更新 1:实际上我的二进制程序有一些正确链接的 IPP 库,但只有一个不是:

当然图书馆在那里: