Media (Intel® Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools like Intel® oneAPI Video Processing Library and Intel® Media SDK
Announcements
The Intel Media SDK project is no longer active. For continued support and access to new features, Intel Media SDK users are encouraged to read the transition guide on upgrading from Intel® Media SDK to Intel® Video Processing Library (VPL), and to move to VPL as soon as possible.
For more information, see the VPL website.

HEVC plugin performance

Ingvar_P_
Beginner
465 Views

Hello,

Could you please explain me the difference between hardware accelerated and GPU accelerated HEVC plugins? I understand that Professional version of the SDK has two hardware accelerated plugins - libmfx_hevce_hw64.so and libmfx_hevce_gacc64.so. Their GUID's are 6fadc791a0c2eb479ab6dcd5ea9da347 and e5400a06c74d41f5b12d430bbaa23d0b.

They both utilize GPU - I can see that in the output of the metrics_monitor tool. However the two plugins have different performance;  libmfx_hevce_hw64 is almost 2.5x faster than libmfx_hevce_gacc64. I am confused because libmfx_hevce_gacc64 ships with Professional Evaluation version and I was under the impression that it should perform better than the plugin that comes with Community Edition version of the SDK. 

$ /opt/intel/mediasdk/samples/sample_multi_transcode -i::h265 puppies.h265 -b 6000 -o::h265 puppies_out.h265 -hw -u 7 -n 1000 -pe 6fadc791a0c2eb479ab6dcd5ea9da347 

Multi Transcoding Sample Version 7.0.16053497

libva info: VA-API version 0.99.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'iHD'
libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
plugin_loader.h :170 [INFO] Plugin was loaded from GUID: { 0x33, 0xa6, 0x1c, 0x0b, 0x4c, 0x27, 0x45, 0x4c, 0xa8, 0xd8, 0x5d, 0xde, 0x75, 0x7c, 0x6f, 0x8e } (Intel (R) Media SDK HW plugin for HEVC DECODE)
plugin_loader.h :170 [INFO] Plugin was loaded from GUID: { 0x6f, 0xad, 0xc7, 0x91, 0xa0, 0xc2, 0xeb, 0x47, 0x9a, 0xb6, 0xdc, 0xd5, 0xea, 0x9d, 0xa3, 0x47 } (Intel (R) Media SDK HW plugin for HEVC ENCODE)
Pipeline surfaces number (DecPool): 9
MFX HARDWARE Session 0 API ver 1.19 parameters: 
Input  video: HEVC
Output video: HEVC

Session 0 was NOT joined with other sessions

Transcoding started
..........
Transcoding finished

Common transcoding time is  25.57 sec 
MFX session 0 transcoding PASSED:
Processing time: 25.57 sec 
Number of processed frames: 1000

The test PASSED
plugin_loader.h :196 [INFO] MFXBaseUSER_UnLoad(session=0x0x564e053eaf20), sts=0
plugin_loader.h :196 [INFO] MFXBaseUSER_UnLoad(session=0x0x564e053eaf20), sts=0

 

$ /opt/intel/mediasdk/samples/sample_multi_transcode -i::h265 puppies.h265 -b 6000 -o::h265 puppies_out.h265 -hw -u 7 -n 1000 -pe e5400a06c74d41f5b12d430bbaa23d0b
Multi Transcoding Sample Version 7.0.16053497

libva info: VA-API version 0.99.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'iHD'
libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so
libva info: Found init function __vaDriverInit_0_32
libva info: va_openDriver() returns 0
plugin_loader.h :170 [INFO] Plugin was loaded from GUID: { 0x33, 0xa6, 0x1c, 0x0b, 0x4c, 0x27, 0x45, 0x4c, 0xa8, 0xd8, 0x5d, 0xde, 0x75, 0x7c, 0x6f, 0x8e } (Intel (R) Media SDK HW plugin for HEVC DECODE)
plugin_loader.h :170 [INFO] Plugin was loaded from GUID: { 0xe5, 0x40, 0x0a, 0x06, 0xc7, 0x4d, 0x41, 0xf5, 0xb1, 0x2d, 0x43, 0x0b, 0xba, 0xa2, 0x3d, 0x0b } (Unknown plugin)
Pipeline surfaces number (DecPool): 13
MFX HARDWARE Session 0 API ver 1.19 parameters: 
Input  video: HEVC
Output video: HEVC

Session 0 was NOT joined with other sessions

Transcoding started
..........
Transcoding finished

Common transcoding time is  89.21 sec 
MFX session 0 transcoding PASSED:
Processing time: 89.21 sec 
Number of processed frames: 1000

The test PASSED
plugin_loader.h :196 [INFO] MFXBaseUSER_UnLoad(session=0x0x5599cb479f20), sts=0
plugin_loader.h :196 [INFO] MFXBaseUSER_UnLoad(session=0x0x5599cb479f20), sts=0

 

 

Thanks,

Ingvar

0 Kudos
1 Reply
Anna_B_Intel
Employee
465 Views

Hi Ingvar,

Intel GPU has Execution Units (EUs) – general purpose cores and a media block (MFX) with Fixed Functions (FF) – GPU areas dedicated for special coding purposes. Hardware accelerated HEVC encoder is based on Fixed Functions (MFX) and available only on Skylake. GPU-accelerated encoder is based on EUs and can be run on Broadwell and earlier generations of Intel processors. Encoding on MFX is the fastest way, but GPU accelerated encoder plugin makes HEVC encoding possible on 5th and lower gen of processors. 

Best wishes,

Anna

0 Kudos
Reply