I am now using intel MEDIA SDK to get a high-performance video decoder.
As per mediasdk-man.pdf, before using any hardware or software-implemented decoder via media SDK, i must call MFXInit() and at the same time, set a appropriate SDK implementation via mfxIMPL which is used as one input parameter of MFXInit().
Now, My question cames out:
1. How to confirm the actually used implementation ( software or hardware? and which hardware ? (supposing I have more intel GPU cards) ) when decoding is just what I have set via mfxIMPL?
2. There are a "MFX_IMPL_AUTO" and a "MFX_IMPL_AUTO_ANY" implementation enumeration value, I want to know if I set mfxIMPL to be one of them, which implementation is really used when decoding ?
3. Is there any monitoring tool to monitor QSV devices ( such as, intel HD graphics, intel iris graphics, intel GPU cards)'s workload?
--- via this tool I can really confirm this device is working.
any tips is appreciated!
You can call the below to get the actual implementation used following session initialization (pSession->InitEx(par);),
mfxIMPL imp; MFXQueryIMPL(*pSession, &imp); imp = MFX_IMPL_BASETYPE(imp);
Thanks for your questions here. Let me take the last one here on monitoring QSV.
You have a couple of options here but it also depends on what you are exactly after. You will find more details on Intel® Media Server Studio, discussing what might be interesting. Please also look here.
Let me subdivide the tools and solutions in real-time and offline analysis:
- Real-Time Analysis
- Intel® Extreme Tuning Utility (Intel® XTU): Platform information tool with tuning capabilities. This is a simple performance tuning software for novice and experienced enthusiasts to overclock, monitor, and stress a system. The software interface exposes a set of robust capabilities common in most enthusiast platforms along with special new features available on new Intel® Processors and Intel® Motherboards.
- Intel® GPA System Analyzer: Analyze CPU, Graphics API, and GPU performance and power metrics. This tool is to quickly identify key performance opportunities and identify if your workload is CPU or graphics-bound so you know where to focus your efforts. System Analyzer is a real-time tool that displays CPU, Graphics API, and GPU performance and power metrics. Use graphics pipeline state override experiments for fast, high-level iterative analysis of your game, all without changing a single line of code.
- Intel® MSDK – cttMetricsMonitor API: Utilization of render engine, VDBOX, VEBOX, and blitter engine. Use this API if you want to build a light weight processor utilization tool based on a cttMetrics API (Linux only) described here. We also have a great video “Analyze GPU Usage in Metrics Monitor in Intel® Media Server Studio” which gives you some ideas on how you might want to use the metrics.
- Offline Analysis
- Intel® Platform Analyzer: Time spending's across the CPU and GPU. This performance analyzer visualizes performance data from your application, enabling you to understand system-level and individual frame performance issues, as well as allowing you to perform 'what-if' experiments to estimate potential performance gains from optimizations.
- Intel® VTune™ Amplifier: Turn raw profiling data into performance insights. If you need more detailed processor utilization information you might want to use Intel® VTune™ Amplifier also coming with the Intel® Media Server Studio Professional Edition. Intel® VTune™ Amplifier is a performance profiler, ideal for tuning media applications. Gather the rich set of CPU, GPU, threading, OpenCL and bandwidth metrics needed to find media processing bottlenecks. Intel VTune Amplifier provides tools to quickly analyze and interpret data. Sort and filter the results and then display it for easy analysis on the timeline, the code source and on a GPU architecture diagram that shows VDBox, VEBox, EU utilization and bus bandwidth. Get faster code faster with extensive performance metrics and powerful analysis tools.
- Intel® Platform Analysis Library: Power and performance analysis with tracing capabilities. This library is a framework which simplifies access to a wide variety of performance metric data available across Intel platforms. The framework publishes the data in a standardized way through a common API independent of any data viewer or data source.
So depending on what you exactly want to know you have multiple options as of above.
Thanks & Best,