#include #include #include "ipp.h" #include "immintrin.h" __int64 get_freq() { LARGE_INTEGER fre; QueryPerformanceFrequency(&fre); return (__int64)fre.QuadPart; } __int64 get_count() { LARGE_INTEGER cnt; QueryPerformanceCounter(&cnt); return (__int64)cnt.QuadPart; } void libinfo(void) { const IppLibraryVersion* lib = ippsGetLibVersion(); printf("version of IPP is: %s %s %d.%d.%d.%d\n", lib->Name, lib->Version, lib->major, lib->minor, lib->majorBuild, lib->build); } int main(int argc, char** argv) { IppStatus result = ippStsNoErr; ippInit(); libinfo(); IppiSize roi = { 1024,1024 }; int step; Ipp32f* pSrc1 = ippiMalloc_32f_C1(roi.width, roi.height, &step); Ipp32f* pSrc2 = ippiMalloc_32f_C1(roi.width, roi.height, &step); Ipp32f* pDst = ippiMalloc_32f_C1(roi.width, roi.height, &step); ippiSet_32f_C1R(1.0, pSrc1, step, roi); ippiSet_32f_C1R(2.0, pSrc2, step, roi); __int64 t0, t1; int n,N=1000; ippiAdd_32f_C1R(pSrc1, step, pSrc2, step, pDst, step, roi); t0 = get_count(); //t1 = __rdtsc(); for (n = 0; n < N; n++) { ippiAdd_32f_C1R(pSrc1, step, pSrc2, step, pDst, step, roi); } //t1 = __rdtsc()-t1; t0 = get_count()-t0; double msec = (double)(t0) / ((double)N*get_freq()) * 1000.0; printf("%13.4f millisec per call\n", msec); //printf("%13.4f clocks per call", (double)t0); ippiFree(pSrc1); ippiFree(pSrc2); ippsFree(pDst); return result; }