I was a little shocked, when I recognized that the IPP can not allocate memory blocks larger than 2GB in a 64bit environment. The ippMalloc function receives an (int length) and all ippiMalloc functions internally perform an integer multplication in order to calculate the size of the image buffer. This fails to allocate image buffers larger than 2GB.
I now switched back and allocate the image buffer myself, but I'm afraid using any function of the IPP since I expect severe trouble for any function that will calculate the pointer offset in the image with a simple
> ptr + size.height*step
calulation. Since in all ipp* function define size.height and step as int types the calculation must fail if not correctly casted from int to size_t or any other 64bit datatype.
One way out of this problem would be to change the step parameter from int to size_t.
I have checked version 5.3, 6.0 and 6.1 and all have the problem. I have not looked into IPP 7 so far.
PS.: Your website about IPP will clearly state that there is no limitation on allocation, see:
What is the maximum amount of memory that can be allocated by Intel IPP functions?
are no restrictions to the amount of memory that can be allocated
except as defined by the the user's operating system and system