问题标签 [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.
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 文件的全部意义。
如果不清楚我要做什么,我将非常乐意详细说明。
任何帮助将非常感激。
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.
c++ - 使用英特尔 MKL 和英特尔 IPP 的 FFT
我有一个大小为 1024*128*20 的复杂数据。我需要找到 128*20 块的 1024 点 FFT。我打算使用英特尔 MKL 或英特尔 IPP 来寻找相同的东西。是否可以使用英特尔 MKL 或 IPP 并行化代码?就最短计算时间而言,MKL 或 IPP 哪个更好?
c - 如何使用 IPP 将 RGB 转换为 NV12 色彩空间
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进行上述转换的有效方法是什么?
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 论坛上发布了同样的问题
intel-mkl - 我可以对用户分配的数据使用 MKL 函数吗?
将 MKL 与用户(非 64 位对齐)分配的数据一起使用是否有问题?
我正在尝试使用 MKL 功能
继续使用 OpenCV mat 对象分配的内存。(我相信它是使用“新”C++ 操作实现的)
我经常收到访问冲突异常。
我知道 MKL 可以使用 64 位对齐分配
我知道性能漏洞,尽管我可以使用自己的未对齐内存来使用 MKL 函数吗?
我的记忆模型有问题吗?
对于 IPP 功能,我会问同样的问题
更新:
MKL 和 IPP 都与 64 位对齐,我可以对 MKL 和 IPP 库调用使用相同的内存分配机制吗?
(假设对两个库都使用 ippiMalloc() )
最好的
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 的方法吗?谢谢
optimization - SSE 高效有符号短卷积
我正在尝试在大型有符号短图像(1000X1000)上实现定点 7X7 卷积。(float) 内核按比例放大(1<<14)以获得有效结果,最终结果按比例缩小。
我正在使用 SSE 实现它。
处理整数向量的主要问题是任何乘法函数都会给出部分结果(下/上)或立即缩小结果 mulhrs。
为了克服这个问题,我被迫将 16 位结果转换为 32 位:
所有这一切都是为了将 8 个元素乘以单个内核值。
因此 - 我尝试将输入数据转换为浮点数并使用 avx 函数实现它(256 没有对齐,所以我必须不断重新加载......):
然后将结果转换回 16 位短路。浮点数的实现被证明比整数快 2.3。
我知道 ipp 库有 ippsConv_16s_Sfs 应该做同样的事情。有人有什么建议吗?
c - 使用英特尔的集成性能基元调整图像大小
我是 C 新手。我正在使用英特尔的 IPP 来调整 VS2015 中的图像大小。我正在尝试使用ippiResizeLanczos_8u_C3R函数来调整图像大小。
我不知道如何查看/查看调整后的图像或获取调整后的图像的像素值(应用上述功能后的图像),因为我打算使用调整后的图像进行进一步处理。该函数可能只返回“IppStatus”。但我想获取调整后的图像或调整后的图像的数据信息(像素值)作为返回值。
在这方面的任何帮助将不胜感激?