Hiding/scheduling GPU->CPU transfers costs (>= 1 frame latency) is important to see actual throughput gains when using the GPGPU ACF pyramid acceleration. Simply using the GPGPU acceleration sequentially for each frame may actually slow down the frame rate due to transfer overhead (glFlush(), etc).. Since one of the main advantages of this module is speed, it makes sense to add this functionality to the API. Currently src/app/pipeline/GPUDetectionPipeline.{h, cpp} provides some sample code for this. After a review/cleanup this can be added to src/lib/acf/acf/GPUDetectionPipeline.{h, cpp}.
Hiding/scheduling GPU->CPU transfers costs (>= 1 frame latency) is important to see actual throughput gains when using the GPGPU ACF pyramid acceleration. Simply using the GPGPU acceleration sequentially for each frame may actually slow down the frame rate due to transfer overhead (
glFlush()
, etc).. Since one of the main advantages of this module is speed, it makes sense to add this functionality to the API. Currentlysrc/app/pipeline/GPUDetectionPipeline.{h, cpp}
provides some sample code for this. After a review/cleanup this can be added tosrc/lib/acf/acf/GPUDetectionPipeline.{h, cpp}
.