c++ - High performance comparison of signed int arrays (using Intel IPP library) -
We compare the basic arrays of two equal sizes of signed int values using the operation of inequality Trying to do the & lt;, & lt; =,> And> =, in a high performance way. The values that are compared will be considered in the char Orem of the same size as the input, the result will be true / false , where 0x00 means < Code> false and 0xff mean true .
To accomplish this, we are using the Intel IPP library. The problem is that the function we found is that this operation, by name, ippiCompare _ * , images and video processing, only type unsigned char ( Ipp8u) ), signed / signed short ( Ipp16s / Ipp16u ) and float ( Ipp32f ). It does not directly support signed int ( Ipp32s )
I (only) imagine two possible ways to solve it: < / P>
-
Performing an array of straight-forwarded types and comparison in more steps (it will become a small array of four arrays of size twice or four times the size) and Merge into intermediate results. / P>
-
Using any other function is directly supporting
signed intarrays from the IPP or any other library which can do something in terms of performance .
But there can be other creative ways ... so I ask that you are helping it! PS: The advantage of using Intel IPP is the performance advantage for large arrays: It uses multi-value processor functions and many cores together (and perhaps more moves) together. So easy looped solution it will not be as fast AFAIK.
The link for PS2:
You can compare with PCMUDDUD, After that, a PaxDue and PackWB It will be something with
#include & lt; Emmintrin.h & gt; Void cmp (__m128d * a, __m128d * b, v16qi * result, unsigned count) {for (unsigned i = 0; i
Comments
Post a Comment