I have an issue with hppWait and hppiSAD. My target configuration is:
Intel ® (R) Atom CPU E3845 @ 1.91 Ghz (4 cores)
Windows 8 Enterprise (32-bit)
Intel Graphics Driver 10.18.10.3496 (3/11/2014)
IPP Preview 2014 February (2014.feb).
SSE42 instruction set / IvyBridge
The issue is basically that, for a specific instance of template matrix (100x100) and GPU acceleration, the hppWait function did not return. The issue was only observed on the target specified above. No problems were observed when using the AVX2 instruction set/ Haswell GT2 configuration.
Workarounds included :
- Changed HPP_TIME_OUT_INFINITE to a specific timeout value, so that the error code from hppWait could be accessed and analyzed. This was not successful, since the hppWait function never returned, even with a specified timeout value.
- Changed the template matrix specification : 8x8, 16x16, & 32x32 all worked, in lieu of 100x100.
Other symptoms of this issue were as follows:
- When using the 100x100 template and the GPU accelerator, an Error Window would be displayed on the Windows 8 desktop to say “Display Device Driver Stopped Working and has recovered..” This would always occur at the point in the execution sequence where hppiSAD was activated.
- When using the 16x16 or 32x32 template specifications, the error messages below were observed:
[ERROR] : CM EnqueueCopyGPUToCPUStride Failed: errCode=-56.
[ERROR] : VAL ReadSurface error
[ERROR] : m_pVAManager->ReadSurface Failed: erroCode=-156.
The associated hppWait call returned in this case, so the above error messages may or may not be related to the issue with the 100x100 template.
The code base under execution using the two different targets is the same, even though the hppWait failure to return was only observed on IvyBridge. I am not clear as to why the template size matters. This is a near term issue, mainly because it blocks execution of tests which are sequenced after hppiSAD invocation.
In trying to troubleshoot this issue, the hppiSAD function was invoked with two different scale factors. I have noted an earlier forum entry regarding negative hppiSAD scale factors resulting in erroneous hppWait return values. But I wanted to ask further about scale factor values 0 and 1. According to my testing, they are both legal, but from an internal processing perspective, is there a fundamental difference between the two ? How are the results different when these values are processed ?