下載IPP:https://software.intel.com/en-us/performance-librariesredis
包含如下libraries:windows
須要註冊而後進入以下頁面,選擇IPP for windows下載:dom
安裝完畢後,測試
在環境變量中的Path上添加下面路徑(注意你的安裝路徑,32位電腦添加相應32位路徑):C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.5.281\windows\redist\intel64_win\ipp3d
環境變量配置完成以後注意重啓生效!orm
新建一個控制檯程序,選擇項目屬性->VC++目錄,在可執行文件,包含目錄,庫目錄中分別添加以下路徑(注意安裝路徑):blog
測試代碼:ip
#include "ipp.h" #include <stdio.h> int main(int argc, char* argv[]) { const IppLibraryVersion *lib; IppStatus status; Ipp64u mask, emask; /* Initialize Intel IPP library */ ippInit(); /* Get Intel IPP library version info */ lib = ippGetLibVersion(); printf("%s %s\n", lib->Name, lib->Version); /* Get CPU features and features enabled with selected library level */ status = ippGetCpuFeatures(&mask, 0); if (ippStsNoErr == status) { emask = ippGetEnabledCpuFeatures(); printf("Features supported by CPU\tby Intel IPP\n"); printf("-----------------------------------------\n"); printf(" ippCPUID_MMX = "); printf("%c\t%c\t", (mask & ippCPUID_MMX) ? 'Y' : 'N', (emask & ippCPUID_MMX) ? 'Y' : 'N'); printf("Intel(R) architecture MMX(TM) technology supported\n"); printf(" ippCPUID_SSE = "); printf("%c\t%c\t", (mask & ippCPUID_SSE) ? 'Y' : 'N', (emask & ippCPUID_SSE) ? 'Y' : 'N'); printf("Intel(R) Streaming SIMD Extensions\n"); printf(" ippCPUID_SSE2 = "); printf("%c\t%c\t", (mask & ippCPUID_SSE2) ? 'Y' : 'N', (emask & ippCPUID_SSE2) ? 'Y' : 'N'); printf("Intel(R) Streaming SIMD Extensions 2\n"); printf(" ippCPUID_SSE3 = "); printf("%c\t%c\t", (mask & ippCPUID_SSE3) ? 'Y' : 'N', (emask & ippCPUID_SSE3) ? 'Y' : 'N'); printf("Intel(R) Streaming SIMD Extensions 3\n"); printf(" ippCPUID_SSSE3 = "); printf("%c\t%c\t", (mask & ippCPUID_SSSE3) ? 'Y' : 'N', (emask & ippCPUID_SSSE3) ? 'Y' : 'N'); printf("Supplemental Streaming SIMD Extensions 3\n"); printf(" ippCPUID_MOVBE = "); printf("%c\t%c\t", (mask & ippCPUID_MOVBE) ? 'Y' : 'N', (emask & ippCPUID_MOVBE) ? 'Y' : 'N'); printf("The processor supports MOVBE instruction\n"); printf(" ippCPUID_SSE41 = "); printf("%c\t%c\t", (mask & ippCPUID_SSE41) ? 'Y' : 'N', (emask & ippCPUID_SSE41) ? 'Y' : 'N'); printf("Intel(R) Streaming SIMD Extensions 4.1\n"); printf(" ippCPUID_SSE42 = "); printf("%c\t%c\t", (mask & ippCPUID_SSE42) ? 'Y' : 'N', (emask & ippCPUID_SSE42) ? 'Y' : 'N'); printf("Intel(R) Streaming SIMD Extensions 4.2\n"); printf(" ippCPUID_AVX = "); printf("%c\t%c\t", (mask & ippCPUID_AVX) ? 'Y' : 'N', (emask & ippCPUID_AVX) ? 'Y' : 'N'); printf("Intel(R) Advanced Vector Extensions instruction set\n"); printf(" ippAVX_ENABLEDBYOS = "); printf("%c\t%c\t", (mask & ippAVX_ENABLEDBYOS) ? 'Y' : 'N', (emask & ippAVX_ENABLEDBYOS) ? 'Y' : 'N'); printf("The operating system supports Intel(R) AVX\n"); printf(" ippCPUID_AES = "); printf("%c\t%c\t", (mask & ippCPUID_AES) ? 'Y' : 'N', (emask & ippCPUID_AES) ? 'Y' : 'N'); printf("AES instruction\n"); printf(" ippCPUID_SHA = "); printf("%c\t%c\t", (mask & ippCPUID_SHA) ? 'Y' : 'N', (emask & ippCPUID_SHA) ? 'Y' : 'N'); printf("Intel(R) SHA new instructions\n"); printf(" ippCPUID_CLMUL = "); printf("%c\t%c\t", (mask & ippCPUID_CLMUL) ? 'Y' : 'N', (emask & ippCPUID_CLMUL) ? 'Y' : 'N'); printf("PCLMULQDQ instruction\n"); printf(" ippCPUID_RDRAND = "); printf("%c\t%c\t", (mask & ippCPUID_RDRAND) ? 'Y' : 'N', (emask & ippCPUID_RDRAND) ? 'Y' : 'N'); printf("Read Random Number instructions\n"); printf(" ippCPUID_F16C = "); printf("%c\t%c\t", (mask & ippCPUID_F16C) ? 'Y' : 'N', (emask & ippCPUID_F16C) ? 'Y' : 'N'); printf("Float16 instructions\n"); printf(" ippCPUID_AVX2 = "); printf("%c\t%c\t", (mask & ippCPUID_AVX2) ? 'Y' : 'N', (emask & ippCPUID_AVX2) ? 'Y' : 'N'); printf("Intel(R) Advanced Vector Extensions 2 instruction set\n"); printf(" ippCPUID_AVX512F = "); printf("%c\t%c\t", (mask & ippCPUID_AVX512F) ? 'Y' : 'N', (emask & ippCPUID_AVX512F) ? 'Y' : 'N'); printf("Intel(R) Advanced Vector Extensions 3.1 instruction set\n"); printf(" ippCPUID_AVX512CD = "); printf("%c\t%c\t", (mask & ippCPUID_AVX512CD) ? 'Y' : 'N', (emask & ippCPUID_AVX512CD) ? 'Y' : 'N'); printf("Intel(R) Advanced Vector Extensions CD (Conflict Detection) instruction set\n"); printf(" ippCPUID_AVX512ER = "); printf("%c\t%c\t", (mask & ippCPUID_AVX512ER) ? 'Y' : 'N', (emask & ippCPUID_AVX512ER) ? 'Y' : 'N'); printf("Intel(R) Advanced Vector Extensions ER instruction set\n"); printf(" ippCPUID_ADCOX = "); printf("%c\t%c\t", (mask & ippCPUID_ADCOX) ? 'Y' : 'N', (emask & ippCPUID_ADCOX) ? 'Y' : 'N'); printf("ADCX and ADOX instructions\n"); printf(" ippCPUID_RDSEED = "); printf("%c\t%c\t", (mask & ippCPUID_RDSEED) ? 'Y' : 'N', (emask & ippCPUID_RDSEED) ? 'Y' : 'N'); printf("The RDSEED instruction\n"); printf(" ippCPUID_PREFETCHW = "); printf("%c\t%c\t", (mask & ippCPUID_PREFETCHW) ? 'Y' : 'N', (emask & ippCPUID_PREFETCHW) ? 'Y' : 'N'); printf("The PREFETCHW instruction\n"); printf(" ippCPUID_KNC = "); printf("%c\t%c\t", (mask & ippCPUID_KNC) ? 'Y' : 'N', (emask & ippCPUID_KNC) ? 'Y' : 'N'); printf("Intel(R) Xeon Phi(TM) Coprocessor instruction set\n"); } return 0; }
結果:get