Part I. 开发指南
内容参考官方文档
《Intel® Integrated Performance Primitives Cryptography Developer Guide, Intel Integrated Performance Primitives 2018》
1. Getting Started
路径说明
- 默认的Intel IPP密码库安装路径<install_dir>为C:/Program files (x86)/IntelSWTools/compilers_and_libraries_2018.x.xxx/<target_os
- 默认的Intel IPP密码库主文件目录<ipp cryptography directory>为<install_dir>/ippcp/.
添加环境变量
- 环境变量(执行如下文件)
- <install_dir>\ipp\bin\ippvars.bat
- <install_dir>\ippcp\bin\ippcpvars.bat
- 手动添加Path
- <install_dir>\redist\ ia32_win\ipp
- <install_dir>\redist\ intel64_win\ippcp
然后分别运行
- <install_dir>\ippcp\tools\ia32\perfsys\ps_ippcp.exe
- <install_dir>\ippcp\tools\intel64\perfsys\ps_ippcp.exe
检测这两个程序是否能正常运行;正常运行则设置正确。
2. Theory of Operation
默认的接口函数是一个分派接口而已,它会根据CPU型号去分配对于的真正实现的库。根据CPU型号实现的库和函数会以该CPU标识为前缀。
比如ippsSHA256Update()是一般的接口,内含很多版本。在64-bit 应用的第二代Core处理器会调用e9_ippsSHA256Update(),在64-bit 应用的支持SSE4.2的处理器上会调用y8_ippsSHA256Update()。
表 CPU型号的前缀标识表
3. Linking Your Application
Intel IPP密码库支持四种链接方式:单线程静态库、单线程动态库、多线程静态库、多线程动态库。
- 单线程库已带,安装后路径为
<ipp cryptography directory>/lib/<arch>
- 多线程库需单独下载,安装后路径为
<ipp cryptography directory>/lib/<arch>/threaded
库名 | 单线程 | 多线程 |
静态库 | ippcpmt.lib | ippcpmt.lib |
动态库 | ippcp.lib | ippcp.lib |
4. Programming in the VS* IDE
1. VS IDE添加路径
最好把IPP的相关路径也添加进去,因为有很多需要IPP。
工具 → 选项 → 环境很解决方案 → VC目录,添加对应平台的include文件和lib文件。
- include
- <install_dir>\ipp\include
- <install_dir>\ippcp\include
- Lib
- <install_dir>\ipp\lib\<arch>_win,<arch> 为ia32或者intel64
- <install_dir>\ippcp\lib\<arch>_win,<arch> 为ia32或者intel64
- bin(是否需要添加,因为环境变量已经添加)
- <install_dir>\redist\<arch>_win\ipp,<arch> 为ia32或intel64
- <install_dir>\redist\<arch>_win\ippcp,<arch> 为ia32或intel64
2. 工程添加库
项目 → 属性 → 配置属性 → 链接器 → 输入 → 附加依赖性,添加需要的lib文件。例如动态链接需要ippcp.lib,静态链接需要ippcpmt.lib。
附录A Performance Test Tool
- <install_dir>\ippcp\tools\ia32\perfsys\ps_ippcp.exe
- <install_dir>\ippcp\tools\intel64\perfsys\ps_ippcp.exe
附录B Threading and OpenMP
如果应用层已经采用多线程来调用 IPP 密码库,则底层最好使用单线程密码库。否则,应用层和底层IPP密码库都使用多线程的话,会出现Nested parallelization,从而导致效率降低。