]> granicus.if.org Git - imagemagick/blob - www/parallel.html
(no commit message)
[imagemagick] / www / parallel.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
2   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html version="-//W3C//DTD XHTML 1.1//EN"
4       xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
5       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6       xsi:schemaLocation="http://www.w3.org/1999/xhtml
7                           http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
8 <head>
9   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
10   <meta name="google-site-verification" content="MxsMq6bdLOx0KSuz1MY6yG9ZTIJ7_7DVRfl5NCAT5Yg"/>
11   <title>ImageMagick: Parallel Execution</title>
12   <meta http-equiv="content-language" content="en-US"/>
13   <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
14   <meta http-equiv="reply-to" content="magick-users@imagemagick.org"/>
15   <meta name="application-name" content="ImageMagick"/>
16   <meta name="description" content="Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats.  In addition resize, rotate, shear, distort and transform images automagically."/>
17   <meta name="application-url" content="http://www.imagemagick.org"/>
18   <meta name="generator" content="PHP"/>
19   <meta name="keywords" content="parallel, execution, ImageMagick, PerlMagick, image processing, OpenMP, software development library, image, photo, software, Magick++, MagickWand"/>
20   <meta name="rating" content="GENERAL"/>
21   <meta name="robots" content="INDEX, FOLLOW"/>
22   <meta name="generator" content="ImageMagick Studio LLC"/>
23   <meta name="author" content="ImageMagick Studio LLC"/>
24   <meta name="revisit-after" content="2 DAYS"/>
25   <meta name="resource-type" content="document"/>
26   <meta name="copyright" content="Copyright (c) 1999-2013 ImageMagick Studio LLC"/>
27   <meta name="distribution" content="Global"/>
28   <link rel="icon" href="../images/wand.png"/>
29   <link rel="shortcut icon" href="../images/wand.ico"  type="images/x-icon"/>
30   <link rel="canonical" href="http://www.imagemagick.org" />
31   <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>
32   <!-- Add jQuery library -->
33   <script type="text/javascript" src="http://localhost/ajax/libs/jquery/1.7/jquery.min.js"></script>
34   
35   <!-- Optionaly include easing and/or mousewheel plugins -->
36   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.easing-1.3.pack.js"></script>
37   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.mousewheel-3.0.6.pack.js"></script>
38   
39   <!-- Add fancyBox -->
40   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/jquery.fancybox.css?v=2.0.4" type="text/css" media="screen" />
41   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/jquery.fancybox.pack.js?v=2.0.4"></script>
42   
43   <!-- Optionaly include button and/or thumbnail helpers -->
44   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.css?v=2.0.4" type="text/css" media="screen" />
45   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-buttons.js?v=2.0.4"></script>
46   
47   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.css?v=2.0.4" type="text/css" media="screen" />
48   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/helpers/jquery.fancybox-thumbs.js?v=2.0.4"></script>
49   <script type="text/javascript">
50         $(document).ready(function() {
51                 $(".fancybox").fancybox();
52         });
53   </script>
54   <!-- ImageMagick style -->
55   <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />
56   <style type="text/css" media="all">
57     @import url("../www/magick.css");
58   </style>
59 </head>
60
61 <body id="www-imagemagick-org">
62 <div class="titlebar">
63 <div style="margin: 17px auto; float: left;">
64   <script type="text/javascript">
65   <!--
66     google_ad_client = "pub-3129977114552745";
67     google_ad_slot = "5439289906";
68     google_ad_width = 728;
69     google_ad_height = 90;
70   //-->
71   </script>
72   <script type="text/javascript"
73     src="http://localhost/pagead/show_ads.js">
74   </script>
75 </div>
76 <a href="../discourse-server">
77   <img src="../images/logo.jpg"
78   alt="ImageMagick Logo"
79   style="width: 123px; height: 118px; border: 0px; float: right;" /></a>
80 <a href="../index.html">
81   <img src="../images/sprite.jpg"
82   alt="ImageMagick Sprite"
83   style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
84 </div>
85
86 <div class="westbar">
87
88 <div class="menu">
89   <a title="About ImageMagick" href="../index.html">About ImageMagick</a>
90 </div>
91 <div class="menu">
92   <a title="Binary Releases" href="binary-releases.html">Binary Releases</a>
93 </div>
94 <div class="sub">
95     <a title="Binary Release: Unix" href="binary-releases.html#unix">Unix</a>
96 </div>
97 <div class="sub">
98     <a title="Binary Release: MacOS X" href="binary-releases.html#macosx">Mac OS X</a>
99 </div>
100 <div class="sub">
101     <a title="Binary Release: iOS" href="binary-releases.html#iOS">iOS</a>
102 </div>
103 <div class="sub">
104     <a title="Binary Release: Windows" href="binary-releases.html#windows">Windows</a>
105 </div>
106 <div class="sep"></div>
107 <div class="menu">
108   <a title="Command-line Tools" href="command-line-tools.html">Command-line Tools</a>
109 </div>
110 <div class="sub">
111     <a title="Command-line Tools: Processing" href="command-line-processing.html">Processing</a>
112 </div>
113 <div class="sub">
114     <a title="Command-line Tools: Options" href="command-line-options.html">Options</a>
115 </div>
116 <div class="sub">
117     <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
118 </div>
119 <div class="menu">
120   <a title="Program Interfaces" href="api.html">Program Interfaces</a>
121 </div>
122 <div class="sub">
123     <a title="Program Interface: MagickWand" href="magick-wand.html">MagickWand</a>
124 </div>
125 <div class="sub">
126     <a title="Program Interface: MagickCore" href="magick-core.html">MagickCore</a>
127 </div>
128 <div class="sub">
129     <a title="Program Interface: PerlMagick" href="perl-magick.html">PerlMagick</a>
130 </div>
131 <div class="sub">
132     <a title="Program Interface: Magick++" href="magick++.html">Magick++</a>
133 </div>
134 <div class="sep"></div>
135 <div  class="menu">
136    <a title="Install from Source" href="install-source.html">Install from Source</a>
137 </div>
138 <div class="sub">
139     <a title="Install from Source: Unix" href="install-source.html#unix">Unix</a>
140 </div>
141 <div class="sub">
142     <a title="Install from Source: Windows" href="install-source.html#windows">Windows</a>
143  </div>
144 <div class="menu">
145   <a title="Resources" href="resources.html">Resources</a>
146 </div>
147 <div class="menu">
148   <a title="Architecture" href="architecture.html">Architecture</a>
149 </div>
150 <div class="menu">
151   <a title="Download" href="download.html">Download</a>
152 </div>
153 <div class="sep"></div>
154 <div class="menu">
155   <a title="Search" href="http://www.imagemagick.org/script/search.php">Search</a>
156 </div>
157 <div class="sep"></div>
158 <div class="menu">
159   <a title="Site Map" href="sitemap.html">Site Map</a>
160 </div>
161 <div  class="sub">
162   <a title="Site Map: Links" href="links.html">Links</a>
163 </div>
164 <div class="sep"></div>
165 <div class="menu">
166   <a rel="follow" title="Sponsors" href="support.html">Sponsors:</a>
167
168   <a href="http://www.networkredux.com"> <img src="../images/networkredux.png" width="140" height="31" alt="[sponsor]" style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a>
169   <a href="http://www.dinodirect.com/ipads-tablets/"> <img src="../images/dino-direct.jpg" width="140" height="90" alt="[sponsor]" style="margin-top: 4px; margin-left: 4px; border: 0px; float: left;" /></a><!-- 201208010120 mickey@163... -->
170 <div class="sponsbox">
171 <div class="sponsor">
172   <a rel="follow" title="Sponsor: The Fastest &amp; Easiest Way to Find Images" href="http://www.graphicsfactory.com">The Fastest &amp; Easiest Way to Find Images</a><!-- 201210010270 graphicsfac... -->
173 </div>
174 <div class="sponsor">
175   <a rel="follow" title="Sponsor: VPS" href="http://www.interdominios.com/vps">VPS</a><!-- 201209010090 barsh@inter... -->
176 </div>
177 <div class="sponsor">
178   <a rel="follow" title="Werbebanner Werbeplane" href="http://www.allesbanner.de">Werbebanner Werbeplane</a><!-- 201212010450 info@druck... -->
179 </div>
180 <div class="sponsor">
181   <a rel="follow" title="Entertainment News &amp; Photos" href="http://www.zimbio.com">Entertainment News &amp; Photos</a><!-- 201211010540 bd@zimb... -->
182 </div>
183 <div class="sponsor">
184   <a rel="follow" title="Sponsor: LED24" href="http://led24.de/">LED24</a><!-- 201207010270 info@led24... -->
185 </div>
186 <div class="sponsor">
187   <a rel="follow" title="Sponsor: Best Website Hosting" href="http://www.top-cheap-web-hosting.com">Best Website Hosting</a><!-- 201304010090 eunge.liu-->
188 </div>
189 <div class="sponsor">
190   <a rel="follow" title="Android Tablet" href="http://www.dinodirect.com/ipads-tablets/">Android Tablet</a><!-- 201208010120 mickey@163... -->
191 </div>
192 <div class="sponsor">
193   <a rel="follow" title="Sponsor: Web Site Hosting" href="http://webhostinggeeks.com">Web Site Hosting</a><!-- 201302010900 funds@enmob... -->
194 </div>
195 <div class="sponsor">
196    <a rel="follow" title="Sponsor: Premium Quality Stock Photos" href="http://www.f1online.pro/en/">Premium Quality Stock Photos</a><!-- 2012080100540 ... -->
197 </div>
198 <div class="sponsor">
199    <a rel="follow" title="Sponsor: Druckerei" href="http://print24.com/de/">Druckerei</a><!-- 2012070100250 ... -->
200 </div>
201 <div class="sponsor">
202   <a rel="follow" title="Sponsor: Managed Server" href="http://www.robhost.de">Managed Server</a><!-- 201210010720 klikics... -->
203 </div>
204 <div class="sponsor">
205   <a rel="follow" title="Sponsor: Druckerei" href="http://www.allesdruck.de">Druckerei</a><!-- 201303011500 r.leo -->
206 </div>
207 <div class="sponsor">
208    <a rel="follow" title="Sponsor: Got Stripes" href="http://www.stripeslawncare.org">Got Stripes?</a><!-- 2012090100150 brooks@stripes...-->
209 </div>
210 <div class="sponsor">
211    <a rel="follow" title="Sponsor: Waschmaschinen Reparatur Berlin" href="http://www.waschmaschinen-reparaturen-berlin.de">Waschmaschinen Reparatur Berlin</a><!-- 2012070100030 Temurbas@autoteile-->
212 </div>
213 </div>
214 </div>
215 </div>
216
217 <div class="eastbar">
218   <div class="g-plusone" id="gplusone"></div>
219   <script type="text/javascript">
220     window.___gcfg = {
221       lang: 'en-US'
222     };
223
224     (function() {
225       var po = document.createElement('offline-script');
226       po.type = 'text/javascript'; po.async = true;
227       po.src = 'https://apis.google.com/js/plusone.js';
228       var script = document.getElementsByTagName('offline-script')[0];
229       script.parentNode.insertBefore(po, script);
230     })();
231     var gplusone = document.getElementById("gplusone");
232     gplusone.setAttribute("data-size","medium");
233     gplusone.setAttribute("data-count","false");
234   </script>
235 </div>
236
237 <div class="main">
238
239
240
241 <h1>Parallel Execution with OpenMP</h1>
242
243
244 <div class="doc-section">
245 <h4>OpenMP</h4>
246 <p>Many of ImageMagick's internal algorithms are threaded to take advantage of speed-ups offered by the multicore processor chips and <a href="http://www.openmp.org">OpenMP</a>. OpenMP, is an API specification for parallel programming. If your compiler supports OpenMP (e.g. gcc, Visual Studio 2005) directives, ImageMagick automatically includes support. To verify, look for the OpenMP feature of ImageMagick with this command:</p>
247 <pre class="text">
248 # identify -version
249 Version: ImageMagick 7.0.0-0 2011-12-26 Q16 http://www.imagemagick.org
250 Copyright: Copyright (C) 1999-2013 ImageMagick Studio LLC
251 Features: OpenMP OpenCL   
252 </pre>
253 <p>With OpenMP enabled, most ImageMagick algorithms execute on all the cores on your system in parallel.  For example, if you have a quad-core system, and attempt to resize an image, the resizing takes place on 4 cores (8 if hyperthreading is enabled).</p>
254 <h4>The Perils of Parallel Execution</h4>
255 <p>It can be difficult to predict behavior in a parallel environment. Performance might depend on a number of factors including the compiler, the version of the OpenMP library, the processor type, the number of cores, the amount of memory, whether hyperthreading is enabled, the mix of applications that are executing concurrently with ImageMagick, or the particular image-processing algorithm you utilize. The only way to be certain of the optimal performance, in terms of the number of threads, is to benchmark. ImageMagick includes progressive threading when benchmarking a command and returns the elapsed time and efficiency for one or more threads. This can help you identify how many threads are the most efficient in your environment. Here is an example benchmark for threads 1-8:</p>
256
257 <pre class="text">
258 convert -bench 40 model.png -sharpen 0x1 null:
259 Performance[1]: 40i 0.712ips 1.000e 14.000u 0:14.040
260 Performance[2]: 40i 1.362ips 0.657e 14.550u 0:07.340
261 Performance[3]: 40i 2.033ips 0.741e 14.530u 0:04.920
262 Performance[4]: 40i 2.667ips 0.789e 14.590u 0:03.750
263 Performance[5]: 40i 3.236ips 0.820e 14.970u 0:03.090
264 Performance[6]: 40i 3.802ips 0.842e 15.280u 0:02.630
265 Performance[7]: 40i 4.274ips 0.857e 15.540u 0:02.340
266 Performance[8]: 40i 4.831ips 0.872e 15.680u 0:02.070
267 </pre>
268 <p>In certain cases, it might be optimal to set the number of threads to 1 (e.g. <kbd>-limit thread 1</kbd>) or to disable OpenMP completely.  To disable this feature, add <kbd>--disable-openmp</kbd> to your configure script command line then rebuild and re-install ImageMagick.</p>
269 <div>
270
271 </div>
272
273 <div id="linkbar">
274     <span id="linkbar-west">&nbsp;</span>
275     <span id="linkbar-center">
276       <a href="../discourse-server">Discourse Server</a> &bull;
277       <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a>
278     </span>
279     <span id="linkbar-east">&nbsp;</span>
280   </div>
281   <div class="footer">
282     <span id="footer-west">&copy; 1999-2013 ImageMagick Studio LLC</span>
283     <span id="footer-east"> <a href="contact.html">Contact the Wizards</a></span>
284   </div>
285   <div style="clear: both; margin: 0; width: 100%; "></div>
286   <script type="text/javascript">
287     var _gaq = _gaq || [];
288     _gaq.push(['_setAccount', 'UA-17690367-1']);
289     _gaq.push(['_trackPageview']);
290
291     (function() {
292       var ga = document.createElement('offline-script'); ga.type = 'text/javascript'; ga.async = true;
293       ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
294       var s = document.getElementsByTagName('offline-script')[0]; s.parentNode.insertBefore(ga, s);
295     })();
296   </script>
297 </body>
298 </html>