hi Jon

I measured the performance on my PC and attempted to visualize it:
http://maxy.homeip.net/misc/openmp_perf/figure_1.png

Summary: visible improvement of "brushengine_paint_hires" benchmark,
probably a degradation of the standard "paint" benchmark (could be noise).

Details: http://maxy.homeip.net/misc/openmp_perf/
I included MyPaint 1.1.0 performance as comparison.
CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4200+

(Hm, maybe html with tooltips would work better to visualize this.)

Regards
Martin

On Sun, Jun 09, 2013 at 01:04:19AM +0200, Jon Nordby wrote:
> Hi all,
> 
> I've implemented support for OpenMP based multithreading for the current
> (Python-based) surface backend. Because the backend calls into the Python
> interpreter to get tile data, this whole section is synchronized using the
> OpenMP "critical" directive[1].
> 
> On the brushlib benchmarks, this gives excellent speedups on my 2 core
> Intel Core i5 M520: up to 65% increase for large brushes and less than 10%
> slowdown for tiny brushes (where performance is not an issue anyway). This
> is very close to what I get using the GEGL backend, which does not need to
> do so much synchronization when fetching tiles.
> 
> However, using the GUI performance tests I get very mixed results.
> In one set of test runs:
> scroll_zoomed_out_2x_onelayer: 8.800000 (780%)
> paint_zoomed_out_5x: 1.172571 (17%)
> layerpaint_zoomed_out_5x: 1.156669 (16%)
> brushengine_paint_hires: 1.091002 (9%)
> ... rest unchanged ...
> scroll_nozoom: 0.972973 (-3%)
> scroll_zoomed_out_5x: 0.970874 (-3%)
> layerpaint_nozoom: 0.950122 (-5%)
> paint: 0.948916 (-5%)
> paint_rotated: 0.940476 (-6%)
> scroll_zoomed_out_1x_onelayer: 0.800000 (-20%)
> scroll_nozoom_onelayer: 0.750000 (-25%)
> 
> And in another:
> scroll_nozoom: 25.666667 (2467%)
> paint_zoomed_out_5x: 1.088084 (9%)
> layerpaint_zoomed_out_5x: 1.060632 (6%)
> .... rest unchanged ...
> brushengine_paint_hires: 0.933682 (-7%)
> layerpaint_nozoom: 0.801448 (-20%)
> paint_rotated: 0.782366 (-22%)
> paint: 0.780457 (-22%)
> scroll_nozoom_onelayer: 0.600000 (-40%)
> scroll_zoomed_out_1x_onelayer: 0.500000 (-50%)
> 
> I will investigate these things further, but in the meantime it would be
> good to see what kind of results others get.
> 
> # To test
> scons enable_openmp=true
> ./mypaint
> 
> # To run GUI perf tests. Note: takes about 5 minutes, should not be
> disturbed while running
> python2 tests/test_performance.py -a
> 
> Just copy paste the SUMMARY section for each run (with and without
> enable_openmp=true) into the mail.
> 
> 
> 1.
> http://gitorious.org/mypaint/mypaint/blobs/283df90826bcc9d3ed6c32e44e9f8f5ed3ed9de4/lib/pythontiledsurface.c
> 
> 
> -- 
> Jon Nordby - www.jonnor.com

> _______________________________________________
> Mypaint-discuss mailing list
> [email protected]
> https://mail.gna.org/listinfo/mypaint-discuss


-- 
Martin Renold

_______________________________________________
Mypaint-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/mypaint-discuss

Reply via email to