By Richard Gerber, Aart J.C. Bik, Kevin Smith and Xinmin Tian
Parallelization using threads on multiple logical processors is an attractive and effective way to optimize software. As technologies to simulate multiple processors (such as Hyper Threading) and processors containing multiple cores become the standard for even consumer level computing, the importance of parallelization becomes apparent.
To properly parallelize software, however, it is important to understand the algorithm well enough to determine if data or functional decomposition would be better suited. An excellent example showing the benefits of parallelization is the encoding of video using the H.264 encoder.


