2025年Visual Studio配置Intel IPP库流程详解

Visual Studio配置Intel IPP库流程详解Visual Studio 配置 Intel IPP 库流程详解 英特尔 IPP Integrate Performance Primitives 库是一个功能强大 使用简单的函数库 能够针对不同的英特尔架构进行了高度优化 其免版税 API 可以帮助开发人员 使用单指令 多数据 SIMD 的 指令

大家好,我是讯享网,很高兴认识大家。

Visual Studio配置Intel IPP库流程详解

英特尔IPP(Integrate Performance Primitives)库是一个功能强大,使用简单的函数库,能够针对不同的英特尔架构进行了高度优化。其免版税 API 可以帮助开发人员

  • 使用单指令、多数据 (SIMD)的 指令(类似于matlab中的函数)。
  • 提高计算密集型应用程序的性能,包括信号处理数据压缩视频处理和加密
  • 降低软件开发和维护的成本并缩短上市时间。

本文将介绍在Windows系统中使用Visual Studio编译器配置Intel IPP的流程。

一、官网下载IPP库

官网链接

进入官网,点击Download the Stand-Alone Version模块

image-20230704134651607
讯享网

跳转后选择需要的版本进行下载安装

image-20230704143229981

下载完成后启动安装程序,照着提示一路点点点就行

image-20230704135129745

image-20230704142700804

image-20230704142900753

image-20230704142940081

image-20230704142952261

image-20230704143154598

image-20230704143609792
安装完成后,需要配置PATH、LIB、INCLUDE环境变量,可以通过运行脚本<install_dir>\env\vars.bat程序实现
在这里插入图片描述

二、使用Visual Studio链接IPP库

  1. 打开Visual Studio创建一个新的空项目

  1. 在解决方案处右击你的工程并点击“属性”,进行到配置页面

  1. 在配置页面中选择“配置属性”->VC++目录,并完成如下的配置
  • 在“包含目录中”添加Intel IPP的include目录地址(默认是在<install_dir>\include);
  • 在“库目录”中添加Intel IPP的library目录地址(默认是在<install_dir>\lib<arch>);
  • 在“可执行文件目录”中添加Intel IPP的可执行文件目录(默认是在<install_dir>\redist<arch>);

image-20230704141557451

上述是官网教程配置IPP库的常用方法,通常情况下配置第三方库可以在工程属性页按照如下步骤配置

  • 配置头文件所在目录(存放.h头文件的目录)

C/C+±>常规->附加包含目录

  • 添加库文件目录(存放静态库.lib文件的目录)

链接器->常规->附加库目录

  • 添加具体的lib文件(静态库文件)

链接器->输入->附加依赖项

image-20230704151755619

  • 添加dll文件索引目录(存放动态库.dll文件的目录)

VC++目录->常规->可执行文件目录

image-20230704152103280

  1. 在“配置属性”->Intel Libraries for oneAPI将"Use Intel IPP"选项设置为Default Linking Methed。

image-20230704141817485

  1. 创建main.cpp文件,并运行检测代码
#include <stdio.h> #include "ipp.h" #define PRINT_INFO(feature, text) printf(" %-30s= ", #feature); \ printf("%c\t%c\t", (cpuFeatures & feature) ? 'Y' : 'N', (enabledFeatures & feature) ? 'Y' : 'N'); \ printf( #text "\n") int main(int argc, char* argv[]) { 
    const IppLibraryVersion *libVersion; IppStatus status; Ipp64u cpuFeatures, enabledFeatures; ippInit(); /* Initialize Intel(R) IPP library */ libVersion = ippGetLibVersion();/* Get Intel(R) IPP library version info */ printf("%s %s\n", libVersion->Name, libVersion->Version); status = ippGetCpuFeatures(&cpuFeatures, 0);/* Get CPU features and features enabled with selected library level */ if (ippStsNoErr != status) return status; enabledFeatures = ippGetEnabledCpuFeatures(); printf("Features supported: by CPU\tby Intel(R) IPP\n"); printf("------------------------------------------------\n"); PRINT_INFO(ippCPUID_MMX, Intel(R) Architecture MMX technology supported); PRINT_INFO(ippCPUID_SSE, Intel(R) Streaming SIMD Extensions); PRINT_INFO(ippCPUID_SSE2, Intel(R) Streaming SIMD Extensions 2); PRINT_INFO(ippCPUID_SSE3, Intel(R) Streaming SIMD Extensions 3); PRINT_INFO(ippCPUID_SSSE3, Supplemental Streaming SIMD Extensions 3); PRINT_INFO(ippCPUID_MOVBE, Intel(R) MOVBE instruction); PRINT_INFO(ippCPUID_SSE41, Intel(R) Streaming SIMD Extensions 4.1); PRINT_INFO(ippCPUID_SSE42, Intel(R) Streaming SIMD Extensions 4.2); PRINT_INFO(ippCPUID_AVX, Intel(R) Advanced Vector Extensions instruction set); PRINT_INFO(ippAVX_ENABLEDBYOS, Intel(R) Advanced Vector Extensions instruction set is supported by OS); PRINT_INFO(ippCPUID_AES, Intel(R) AES New Instructions); PRINT_INFO(ippCPUID_CLMUL, Intel(R) CLMUL instruction); PRINT_INFO(ippCPUID_RDRAND, Intel(R) RDRAND instruction); PRINT_INFO(ippCPUID_F16C, Intel(R) F16C new instructions); PRINT_INFO(ippCPUID_AVX2, Intel(R) Advanced Vector Extensions 2 instruction set); PRINT_INFO(ippCPUID_ADCOX, Intel(R) ADOX/ADCX new instructions); PRINT_INFO(ippCPUID_RDSEED, Intel(R) RDSEED instruction); PRINT_INFO(ippCPUID_PREFETCHW, Intel(R) PREFETCHW instruction); PRINT_INFO(ippCPUID_SHA, Intel(R) SHA new instructions); PRINT_INFO(ippCPUID_AVX512F, Intel(R) Advanced Vector Extensions 512 Foundation instruction set); PRINT_INFO(ippCPUID_AVX512CD, Intel(R) Advanced Vector Extensions 512 CD instruction set); PRINT_INFO(ippCPUID_AVX512ER, Intel(R) Advanced Vector Extensions 512 ER instruction set); PRINT_INFO(ippCPUID_AVX512PF, Intel(R) Advanced Vector Extensions 512 PF instruction set); PRINT_INFO(ippCPUID_AVX512BW, Intel(R) Advanced Vector Extensions 512 BW instruction set); PRINT_INFO(ippCPUID_AVX512VL, Intel(R) Advanced Vector Extensions 512 VL instruction set); PRINT_INFO(ippCPUID_AVX512VBMI, Intel(R) Advanced Vector Extensions 512 Bit Manipulation instructions); PRINT_INFO(ippCPUID_MPX, Intel(R) Memory Protection Extensions); PRINT_INFO(ippCPUID_AVX512_4FMADDPS, Intel(R) Advanced Vector Extensions 512 DL floating-point single precision); PRINT_INFO(ippCPUID_AVX512_4VNNIW, Intel(R) Advanced Vector Extensions 512 DL enhanced word variable precision); PRINT_INFO(ippCPUID_KNC, Intel(R) Xeon Phi(TM) Coprocessor); PRINT_INFO(ippCPUID_AVX512IFMA, Intel(R) Advanced Vector Extensions 512 IFMA (PMADD52) instruction set); PRINT_INFO(ippAVX512_ENABLEDBYOS, Intel(R) Advanced Vector Extensions 512 is supported by OS); return 0; } 

讯享网

运行结果如下,则代表成功配置IPP库

image-20230704142122216

) Advanced Vector Extensions 512 is supported by OS);
return 0;
}

讯享网 运行结果如下,则代表成功配置IPP库 [外链图片转存中...(img-Yj3dmEZA-90)] 
小讯
上一篇 2025-02-05 13:58
下一篇 2025-03-22 18:58

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/66805.html