问题标签 [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 投票
1 回答
574 浏览

static - Visual Studio 中的静态库,包括 IPP 和 MKL

我一直在尝试用我的一些 DSP 类创建一个静态库(.lib)。DSP 类使用 Eigen 库,该库又使用 MKL 和 IPP。

我的问题是我找不到创建这个“独立”静态库的方法,即如果我创建一个应用程序项目,我只需要包含我自己的 DSP 库 .lib 文件和它的头文件( s)。

当我尝试从 IPP 和 MKL 的静态版本中创建一个静态库时,我收到一个 LNK1189 错误,表明超出了允许的符号数量。

到目前为止,唯一有效的是使用 IPP 和 MKL 的动态版本,当然还有将 IPP 和 MKL 的 redist 路径添加到 Windows 环境路径变量中。可悲的是,这取消使用一组头文件(我自己的,引用 ipp 头文件)和我的 .lib 文件的全部意义。

如果不清楚我要做什么,我将非常乐意详细说明。

任何帮助将非常感激。

0 投票
3 回答
652 浏览

c++ - Multi Threading Performance in Multiplication of 2 Arrays / Images - Intel IPP

I'm using Intel IPP for multiplication of 2 Images (Arrays).
I'm using Intel IPP 8.2 which comes with Intel Composer 2015 Update 6.

I created a simple function to multiply too large images (The whole project is attached, see below).
I wanted to see the gains using Intel IPP Multi Threaded Library.

Here is the simple project (I also attached the complete project form Visual Studio):

I compiled this project once using Intel IPP Single Threaded and once using Intel IPP Multi Threaded.

I tried different sizes of arrays and in all of them the Multi Threaded version yields no gains (Sometimes it is even slower).

I wonder, how come there is no gain in this task with multi threading?
I know Intel IPP uses the AVX and I thought maybe the task becomes Memory Bounded?

I tried another approach by using OpenMP manually to have Multi Threaded approach using Intel IPP Single Thread implementation.
This is the code:

The results were the same, again, no gain of performance.

Is there a way to benefit from Multi Threading in this kind of task?
How can I validate whether a task becomes memory bounded and hence no benefit in parallelize it? Are there benefit to parallelize task of multiplying 2 arrays on CPU with AVX?

The Computers I tried it on is based on Core i7 4770k (Haswell).

Here is a link to the Project in Visual Studio 2013.

Thank You.

0 投票
2 回答
1577 浏览

c++ - 使用英特尔 MKL 和英特尔 IPP 的 FFT

我有一个大小为 1024*128*20 的复杂数据。我需要找到 128*20 块的 1024 点 FFT。我打算使用英特尔 MKL 或英特尔 IPP 来寻找相同的东西。是否可以使用英特尔 MKL 或 IPP 并行化代码?就最短计算时间而言,MKL 或 IPP 哪个更好?

0 投票
1 回答
7446 浏览

c - 如何使用 IPP 将 RGB 转换为 NV12 色彩空间

英特尔® Media SDK 等视频编码器需要 NV12 视频输入格式。

NV12 格式是在内存中排序的 YUV 4:2:0 格式,首先是 Y 平面,然后是交错 UV 平面中的打包色度样本。

例子:
YYYYYY
YYYYYY
UVUVUV

在此处输入图像描述

RGB 颜色格式,指 Pixel-Order RGB(每像素字节,低字节为红色):
RGBRGBRGBRGBRGB
RGBRGBRGBRGBRGB

在此处输入图像描述

我做了一些网络研究,发现关于 NV12,YUV被定义为 YCbCr 颜色空间。目前至少有 2 种可能的 YCbCr 格式适用于 NV12:

  • BT.601 - 适用于标清电视
  • BT.709 - 适用于高清电视

我的问题是:是否有将 RGB 颜色空间转换为 NV12的IPP功能?

0 投票
1 回答
1767 浏览

c - 如何使用 IPP 将 8 位灰度图像转换为 NV12(有限范围)色彩空间

英特尔® Media SDK 等视频编码器不接受 8 位灰度图像作为输入格式。
8 位灰度格式在 [0, 255] 范围内每个像素应用一个字节。

问题上下文中的 8 位 YUV 格式适用YCbCr(BT.601 或 BT.709)。
虽然有一个全范围的 YUV 标准,但常用的格式是“有限范围”YUV,其中 Y 的范围为 [16, 235],U,V 的范围为 [16, 240]。

在这种情况下, NV12 格式是常见的输入格式。
NV12 格式是在内存中排序的 YUV 4:2:0 格式,首先是 Y 平面,然后是交错 UV 平面中的打包色度样本:
YYYYYY
YYYYYY
UVUVUV

在此处输入图像描述

灰度图像将被称为“I 平面”:
IIIIII
IIIIII

在此处输入图像描述

设置 UV 平面很简单:将所有 U、V 元素设置为 128 值。

但是Y平面呢?

在全范围YUV的情况下,我们可以简单地将“I平面”作为Y平面(即Y = I)。

如果是“有限”的 YUV 格式,则需要
进行转换:在转换公式结果中设置 R=G=B:Y = round(I*0.859 + 16)。

使用IPP进行上述转换的有效方法是什么?

0 投票
2 回答
1996 浏览

opencv - 使用 IPP ippicv_windows_20151201.zip 构建 Opencv 3.1.0

我正在尝试在独立计算机上构建 OpenCV 3.1.0(无法访问互联网)。

我安装了 Intel composer 2015,其中包括 IPP v8。

在 CMake 构建配置期间,我收到以下消息:

我发现我需要手动下载 ippicv_windows_20151201.zip 并将其放在源子文件夹中。

你知道我可以从哪里下载吗?

我可以排除构建标志:“WITH_IPP”,在这种情况下,我根本不会使用 IPP 构建,这是我不想要的。

我宁愿用我预装的 IPP (Intel Composer) 构建 OpenCV,而不是从 OpenCV 下载的免费版本,你知道我该怎么做吗?

BWT,构建 WITH_IPP 和 WITH_IPP_A 标志有什么区别?

PS 我在 OpenCV 论坛上发布了同样的问题

0 投票
1 回答
115 浏览

intel-mkl - 我可以对用户分配的数据使用 MKL 函数吗?

将 MKL 与用户(非 64 位对齐)分配的数据一起使用是否有问题?

我正在尝试使用 MKL 功能

继续使用 OpenCV mat 对象分配的内存。(我相信它是使用“新”C++ 操作实现的)

我经常收到访问冲突异常。

我知道 MKL 可以使用 64 位对齐分配

我知道性能漏洞,尽管我可以使用自己的未对齐内存来使用 MKL 函数吗?

我的记忆模型有问题吗?

对于 IPP 功能,我会问同样的问题


更新:

MKL 和 IPP 都与 64 位对齐,我可以对 MKL 和 IPP 库调用使用相同的内存分配机制吗?

(假设对两个库都使用 ippiMalloc() )

最好的

0 投票
1 回答
876 浏览

linux - CMake QNX 交叉编译 find_path 和 find_library 适用于 Linux 但不适用于 Windows

我的 FindIpp.cmake 脚本如上所示。在 Windows 上,我 -- Could NOT find IPP (missing: IPP_INCLUDE_DIR IPP_LIBRARY).已经在 Linux 下对此进行了测试,它可以正常工作。在这两种情况下,我都尝试使用 QNX Momentics 工具链进行交叉编译。

  • ${CMAKE_CURRENT_SOURCE_DIR} 是包含(FindIpp)的“根”脚本的位置。
  • 我查看了 ${CMAKE_CURRENT_SOURCE_DIR} 的输出和相对路径的输出,以确保文件和文件夹存在于报告的路径中。${CMAKE_CURRENT_SOURCE_DIR}/../libs/intel 显示为 C:/../libs/intel。
  • 我在 Linux 上使用 CMake 3.5,在 Windows 7 上使用 CMake 3.6.1。
  • 在 cmd 提示符下,我可以毫无问题地输入“cd c:/libs/intel”。
  • 我尝试将 IPP_ROOT_DIR 路径硬编码为set(IPP_ROOT_DIR C:/libs/intel/linux/intel_ipp),尝试在路径周围添加引号,附加CACHE PATH "Description"set调用中。这些都不起作用。
  • 我试过-GNinja、-G“MinGW Makefiles”和-G“Unix Makefiles”。还是想出了:

    /li>
  • 将 FindIpp.cmake 等单个文件中的内容复制并粘贴到主 CMakeLists.txt 文件中会找到库,但不会找到包含的路径。现在我还添加list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SRC_DIR}/CMake/Modules)了查找我的模块文件。如果我删除该行,cmake 会在include(FindIpp). 有什么明显的我做错了吗?另外,这是编写 find_library 或 find_path 的方法吗?谢谢

0 投票
0 回答
439 浏览

optimization - SSE 高效有符号短卷积

我正在尝试在大型有符号短图像(1000X1000)上实现定点 7X7 卷积。(float) 内核按比例放大(1<<14)以获得有效结果,最终结果按比例缩小。

我正在使用 SSE 实现它。

处理整数向量的主要问题是任何乘法函数都会给出部分结果(下/上)或立即缩小结果 mulhrs。

为了克服这个问题,我被迫将 16 位结果转换为 32 位:

所有这一切都是为了将​​ 8 个元素乘以单个内核值。

因此 - 我尝试将输入数据转换为浮点数并使用 avx 函数实现它(256 没有对齐,所以我必须不断重新加载......):

然后将结果转换回 16 位短路。浮点数的实现被证明比整数快 2.3。

我知道 ipp 库有 ippsConv_16s_Sfs 应该做同样的事情。有人有什么建议吗?

0 投票
0 回答
1401 浏览

c - 使用英特尔的集成性能基元调整图像大小

我是 C 新手。我正在使用英特尔的 IPP 来调整 VS2015 中的图像大小。我正在尝试使用ippiResizeLanczos_8u_C3R函数来调整图像大小。

我不知道如何查看/查看调整后的图像或获取调整后的图像的像素值(应用上述功能后的图像),因为我打算使用调整后的图像进行进一步处理。该函数可能只返回“IppStatus”。但我想获取调整后的图像或调整后的图像的数据信息(像素值)作为返回值。

在这方面的任何帮助将不胜感激?