[webkit-dev] Turn on the PARALLEL_JOBS feature by default

Balazs Kelemen kbalazs at webkit.org
Tue Oct 18 07:27:14 PDT 2011


    Hi Webkittens!

I am planning to turn on the ENABLE_PARALLEL_JOBS feature by default. It 
is tracked in https://bugs.webkit.org/show_bug.cgi?id=70032. This 
feature has proved to be an efficient optimization for some SVG filters 
where it has been applied. Naturally it could be used in other areas as 
well in the future. It supports a fork-and-join threading scheme thus it 
can be used for computations where the task can be divided to 
independent sub-tasks. It plays well with the platform: for Mac it has a 
libdispatch based implementation. For other platforms it has a generic 
and an openmp based one - the latter is used only in -fopenmp builds. 
With the Methanol benchmark - https://gitorious.org/methanol - our 
measurements showed a 60% speedup for SVG filters on a 6 core MacPro 
(libdispatch implementation) and 40% gain on my 4 core i5 desktop 
(generic implementation).
The cost of enabling the feature is a few extra thread creation with the 
generic backend. The maximum of thread creations is the number of cores 
in the system since the implementation using a basic thread-pool for the 
parallel threads. With libdispatch it's cheaper because the system 
handles the thread allocation for us. In the case of openmp the cost is 
implementation specific but normally it should also has an internal 
thread pool. Finally, for !ENABLE(FILTERS) builds there is no cost at 
all currently.
Please tell me if you have any concerns about enabling the feature.

-kbalazs



More information about the webkit-dev mailing list