JPEG new threading model in IPP

Submit New Article

August 14, 2010 9:00 AM PDT


JPEG old threading model - IPP 6.1 and earlier

  • Based on parallel processing of one row of MCUs(Minimum Coded Units) by each thread
  • Each thread perform JPEG actions under own MCU row (CC, SS, DCT) in parallel, except VLC(Variable Length Coding) step. (CC-Color Conversion;SS-Sub Sampling;DCT-Discrete Cosine Transform)
  • VLC can be done only in serial manner due to data dependency of MCU blocks for this operation
    • VLC is main challenge in parallel JPEG processing

JPEG_old.bmp

 

JPEG new threading model in IPP 7.0

  • JPEG standard allow to split data stream to Independently processed segments called Restart Intervals (RSTI).
       - Each restart interval contain a fixed number of MCUs
       - RSTI separated by restart markers (RSTm)
  • New threading model based on parallel processing of this RSTI                                                                                 
    • Using RSTI allow to resolve main bottleneck of old model - existence of serial part in JPEG pipeline  the VLC.
    • It can be achieved due to main property of RSTI - independency of MCU blocks of one RSTI from MCU  blocks another  RSTI.
    • This property allow to do all JPEG operation - CC, SS, DCT and VLC - for each RSTI by threads in parallel

 

JPEG_new_threading_model.bmp


Performance Comparison (IPP 7.0 vs. 6.1)

UIC_performance_ipp70.bmp

 

 

 

 

Optimization Notice

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804



Do you need more help?


This article applies to: Intel® C++ Compiler for Linux* Knowledge Base,   Intel® C++ Compiler for Mac OS X* Knowledge Base,   Intel® C++ Compiler for Windows* Knowledge Base,   Intel® Integrated Performance Primitives Knowledge Base,   Intel® Parallel Composer Knowledge Base