Estimating GPU availability in massive transcoding environment

Estimating GPU availability in massive transcoding environment

 Say you have a machine on which transcoding of massive number of live streams happens concurrently.

Whenever a new transcoding requirement comes, before trying to run the task the obvious first step would be to estimate whether there are currently available GPU resources. If the resources are available, the transcoding session would be launched, otherwise, the task would be put on hold. 

The 'trial-and-error' paradigm (i.e. try launching the session, and if it fails, we will handle it somehow') is unsuitable as the streams are live, and there is no tolerance for run-time error of that kind. Instead, some kind of reliable GPU resources estimation mechanism (regardless of how precise) is needed.

Any suggestion as to how to approach solving this kind of problem would be greatly appreciated.

Thanks,

Mamil

11 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Self learning. On startup, have it create internal video generators ( just create buffers of image data) of the same matrix size as the live video streams. Then profile itself. Once it's figured out the practical limit for that machine and video matrix size, it sets the limit to that.

>>...Whenever a new transcoding requirement comes, before trying to run the task the obvious first step would be to estimate whether
>>there are currently available GPU resources...

I'm not sure that Intel Media SDK provides API for verification of availability of GPU resources. However, I know that NVIDIA APIs allow to do it and that subject was recently discussed on the forum.

All,

Intel Media SDK does not have the capability to report GPU load. And unfortunately there is currently no Windows tool that provides GPU load programmatically or via command line utility (as far as we know).

We are exploring possible solutions to this request and will keep the community posted as soon as we have new information to share.

In the meantime we suggest exploring the method that "andy4us" suggested.

Regards,
Petter 

>>... there is currently no Windows tool that provides GPU load programmatically or via command line utility (as far as we know)...

Some WMI providers allow to get GPU load, its temperature, and another attributes. An utility with GUI to access to WMI and explore is wbemtest.exe.

Hi Mamil, there is Nvidia PerfKit tool which could probably be  used to gather performance data. Web Link //developer.nvidia.com/nvidia-perfkit

I do not know if Nvidia exposes for user mode software  an API functions used to access GPU performance counters which are accessed from within the driver.

All existing NVIDIA SDKs ( many! ) are for applications with Win32 applications and I don't see any relevance to applications with driver(s) ( see the initial question of the post ).

Thanks for informing.

Initial question was answered by me in my first post.In second post I asked about the availability of Nvidia specific API  to query hardware counters from user mode.It is not relatd to any drivers.

>>...Initial question was answered by me in my first post...

The question was about how to '...to estimate whether there are currently available GPU resources...' in some application using API and Not some magic performance tool.

And you in your post provided an example of WMI based tool wbemtest.exe  and how it is related to original poster question.

Leave a Comment

Please sign in to add a comment. Not a member? Join today