OpenCV & IPP

 

下載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

  • 配置IDE:

新建一個控制檯程序,選擇項目屬性->VC++目錄,在可執行文件,包含目錄,庫目錄中分別添加以下路徑(注意安裝路徑):blog

  1. 可執行文件目錄:C:\Program Files(x86)\IntelSWTools\compilers_and_libraries_2019.5.281\windows\redist\intel64_win\ipp
  2. 包含目錄:C:\Program Files(x86) \IntelSWTools\compilers_and_libraries_2019.5.281\windows\ipp\include
  3. 庫目錄:C:\Program Files(x86)\IntelSWTools\compilers_and_libraries_2019.5.281\windows\ipp\lib\intel64_win

 測試代碼: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

相關文章
相關標籤/搜索