]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sun, 6 Jan 2013 16:56:13 +0000 (16:56 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sun, 6 Jan 2013 16:56:13 +0000 (16:56 +0000)
MagickCore/cache.c
MagickCore/colormap.c
MagickCore/composite.c
MagickCore/decorate.c
MagickCore/effect.c
MagickCore/resize.c
MagickCore/shear.c
MagickCore/thread-private.h
MagickCore/thread.c
MagickCore/transform.c
MagickWand/wand-view.c

index afe01aed406a7f8562b4bab9f671e147d3e87113..a35be25818359de1a0998edc2af4b0bf51aa7068 100644 (file)
@@ -4914,7 +4914,7 @@ static MagickBooleanType SetCacheAlphaChannel(Image *image,const Quantum alpha,
   status=MagickTrue;
   image_view=AcquireVirtualCacheView(image,exception);  /* must be virtual */
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for magick_schedule(static,image->rows/2) shared(status)
+  #pragma omp parallel for schedule(static,4) magick_threads(image,image,1,1)
 #endif
   for (y=0; y < (ssize_t) image->rows; y++)
   {
index e6ac95a0cea61ec3fb31c6b5bbfb8e4fbb3ace8c..4b8aabc6ab64784d37a1950b104d70c662fa0847 100644 (file)
@@ -206,7 +206,8 @@ MagickExport MagickBooleanType CycleColormapImage(Image *image,
   status=MagickTrue;
   image_view=AcquireAuthenticCacheView(image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for magick_schedule(static,image->rows/2) shared(status)
+  #pragma omp parallel for schedule(static,4) \
+    magick_threads(image,image,1,1)
 #endif
   for (y=0; y < (ssize_t) image->rows; y++)
   {
index f7ac52dc1dccb0a2c5f8f3b1d04dc954df5469be..47597e61521c499c989fa0ac060f3643d63e9657 100644 (file)
@@ -2455,7 +2455,8 @@ MagickExport MagickBooleanType TextureImage(Image *image,const Image *texture,
   texture_view=AcquireVirtualCacheView(texture_image,exception);
   image_view=AcquireAuthenticCacheView(image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for magick_schedule(static,image->rows/2) shared(status)
+  #pragma omp parallel for schedule(static,4) shared(status) \
+    magick_threads(texture_image,image,1,1)
 #endif
   for (y=0; y < (ssize_t) image->rows; y++)
   {
index c66445e92d793d8e9bd44844ab0c01f3c4f3f085..3032f2193e3a390337c6f01ae325757285f6614d 100644 (file)
@@ -384,8 +384,8 @@ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info,
     Draw sides of ornamental border.
   */
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for magick_schedule(static,image->rows/2) \
-    shared(progress,status)
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
+    magick_threads(image,frame_image,1,1)
 #endif
   for (y=0; y < (ssize_t) image->rows; y++)
   {
@@ -663,11 +663,6 @@ MagickExport MagickBooleanType RaiseImage(Image *image,
     foreground,
     background;
 
-#if defined(MAGICKCORE_OPENMP_SUPPORT)
-  size_t
-    height;
-#endif
-
   ssize_t
     y;
 
@@ -696,8 +691,8 @@ MagickExport MagickBooleanType RaiseImage(Image *image,
   progress=0;
   image_view=AcquireAuthenticCacheView(image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for schedule(static,raise_info->height/2) \
-    shared(progress,status)
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
+    magick_threads(image,image,1,1)
 #endif
   for (y=0; y < (ssize_t) raise_info->height; y++)
   {
@@ -804,8 +799,8 @@ MagickExport MagickBooleanType RaiseImage(Image *image,
       }
   }
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  height=image->rows-2*raise_info->height;
-  #pragma omp parallel for schedule(static,height/2) shared(progress,status) 
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
+    magick_threads(image,image,image->rows-2*raise_info->height,1)
 #endif
   for (y=(ssize_t) raise_info->height; y < (ssize_t) (image->rows-raise_info->height); y++)
   {
@@ -890,8 +885,8 @@ MagickExport MagickBooleanType RaiseImage(Image *image,
       }
   }
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  height=image->rows-2*raise_info->height;
-  #pragma omp parallel for schedule(static,height/2) shared(progress,status)
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
+    magick_threads(image,image,image->rows-2*raise_info->height,1)
 #endif
   for (y=(ssize_t) (image->rows-raise_info->height); y < (ssize_t) image->rows; y++)
   {
index 95babc68972cbdc2149e0dfcb13ce5698ff6f917..4815ac6d0d2577030c9ed508c7bf1d6e3fa58609 100644 (file)
@@ -1283,7 +1283,7 @@ static void Hull(const Image *image,const ssize_t x_offset,
   q=g+(columns+2);
   r=p+(y_offset*(columns+2)+x_offset);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for schedule(static) \
+  #pragma omp parallel for schedule(static,4) \
     magick_threads(image,image,rows,1)
 #endif
   for (y=0; y < (ssize_t) rows; y++)
@@ -1320,7 +1320,7 @@ static void Hull(const Image *image,const ssize_t x_offset,
   r=q+(y_offset*(columns+2)+x_offset);
   s=q-(y_offset*(columns+2)+x_offset);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for schedule(static) \
+  #pragma omp parallel for schedule(static,4) \
     magick_threads(image,image,rows,1)
 #endif
   for (y=0; y < (ssize_t) rows; y++)
index ef48b3ad0b6f391df1aa92842874ac2c42f162c1..6e82f68e15b93c9a80725c3aaed9b60675a5bc0f 100644 (file)
@@ -2798,7 +2798,8 @@ MagickExport Image *SampleImage(const Image *image,const size_t columns,
   image_view=AcquireVirtualCacheView(image,exception);
   sample_view=AcquireAuthenticCacheView(sample_image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for schedule(static,sample_image->rows/2) shared(status)
+  #pragma omp parallel for schedule(static,4) shared(status) \
+    magick_threads(image,sample_image,1,1)
 #endif
   for (y=0; y < (ssize_t) sample_image->rows; y++)
   {
index adfe58bf3905c8816722cc2542b653d5393ff104..156e6b43858ed027c3c0fae59f89d2aa13922384 100644 (file)
@@ -977,11 +977,6 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations,
   RectangleInfo
     page;
 
-#if defined(MAGICKCORE_OPENMP_SUPPORT)
-  size_t
-    chunk;
-#endif
-
   ssize_t
     y;
 
@@ -1032,9 +1027,8 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations,
       GetPixelCacheTileSize(image,&tile_width,&tile_height);
       tile_width=image->columns;
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-      chunk=image->rows/tile_height/2;
-      #pragma omp parallel for magick_schedule(static,chunk) \
-        shared(progress,status)
+      #pragma omp parallel for schedule(static,4) \
+        magick_threads(image,image,image->rows/tile_height,1)
 #endif
       for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=(ssize_t) tile_height)
       {
@@ -1158,8 +1152,8 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations,
         Rotate 180 degrees.
       */
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-      #pragma omp parallel for magick_schedule(static,image->rows/2) \
-        shared(progress,status)
+      #pragma omp parallel for schedule(static,4) \
+        magick_threads(image,image,1,1)
 #endif
       for (y=0; y < (ssize_t) image->rows; y++)
       {
@@ -1256,9 +1250,8 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations,
       GetPixelCacheTileSize(image,&tile_width,&tile_height);
       tile_width=image->columns;
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-      chunk=image->rows/tile_height/2;
-      #pragma omp parallel for magick_schedule(static,chunk) \
-        shared(progress,status)
+      #pragma omp parallel for schedule(static,4) \
+        magick_threads(image,image,image->rows/tile_height,1)
 #endif
       for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=(ssize_t) tile_height)
       {
index fea3330089f5880f087e32e1556af693cf5987c7..456ed0f930fc3628d454db8e53b2985d4561f135 100644 (file)
@@ -30,16 +30,12 @@ extern "C" {
   Single threaded unless workload justifies the threading overhead.
 */
 #define WorkloadThreshold()  (16*GetMagickResourceLimit(ThreadResource))
-#define magick_threads(source,destination,rows,expression) \
-  if (((rows) > WorkloadThreshold()) && (expression)) \
-    num_threads((source) != (destination) ? \
-      GetMagickResourceLimit(ThreadResource) : \
-      GetImagePixelCacheType(source) != DiskCache ? \
-      GetMagickResourceLimit(ThreadResource) : \
-      GetMagickResourceLimit(ThreadResource) < 2 ? \
-      GetMagickResourceLimit(ThreadResource) : 2)
-#define magick_schedule(type,chunk) \
-  schedule(type,(chunk) < 1 ? 1 : (chunk))
+#define magick_threads(source,destination,chunk,expression) \
+  num_threads((expression) == 0 ? 1 : ((chunk) > WorkloadThreshold()) && \
+    (GetImagePixelCacheType(source) != DiskCache) && \
+    (GetImagePixelCacheType(destination) != DiskCache) ? \
+    GetMagickResourceLimit(ThreadResource) : \
+    GetMagickResourceLimit(ThreadResource) < 2 ? 1 : 2)
 
 #if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 10))
 #define MagickCachePrefetch(address,mode,locality) \
index cd90b0da61152e201e3933c8bcd2036c0d11a99d..dcff73b8b545ea253db81bf4633adaa8e6697e26 100644 (file)
@@ -106,7 +106,6 @@ MagickExport MagickBooleanType MagickDeleteThreadKey(MagickThreadKey key)
   key=(MagickThreadKey) RelinquishMagickMemory(key);
   return(MagickTrue);
 #endif
-
 }
 \f
 /*
index 7a9c08d5aa11332239daeaff850577f951902a90..1b68a35f49ebd5da6ea82048c4265cddcb15f51b 100644 (file)
@@ -205,11 +205,6 @@ MagickExport Image *ChopImage(const Image *image,const RectangleInfo *chop_info,
   RectangleInfo
     extent;
 
-#if defined(MAGICKCORE_OPENMP_SUPPORT)
-  size_t
-    height;
-#endif
-
   ssize_t
     y;
 
@@ -255,7 +250,8 @@ MagickExport Image *ChopImage(const Image *image,const RectangleInfo *chop_info,
   image_view=AcquireVirtualCacheView(image,exception);
   chop_view=AcquireAuthenticCacheView(chop_image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for schedule(static,extent.y/2) shared(progress,status)
+  #pragma omp parallel for schedule(static,4) shared(status) \
+    magick_threads(image,chop_image,1,1)
 #endif
   for (y=0; y < (ssize_t) extent.y; y++)
   {
@@ -325,8 +321,8 @@ MagickExport Image *ChopImage(const Image *image,const RectangleInfo *chop_info,
     Extract chop image.
   */
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  height=image->rows-(extent.y+extent.height);
-  #pragma omp parallel for schedule(static,height/2) shared(progress,status)
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
+    magick_threads(image,chop_image,1,1)
 #endif
   for (y=0; y < (ssize_t) (image->rows-(extent.y+extent.height)); y++)
   {
@@ -683,8 +679,8 @@ MagickExport Image *CropImage(const Image *image,const RectangleInfo *geometry,
   image_view=AcquireVirtualCacheView(image,exception);
   crop_view=AcquireAuthenticCacheView(crop_image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for schedule(static,crop_image->rows/2) \
-    shared(progress,status)
+  #pragma omp parallel for schedule(static,4) shared(status) \
+    magick_threads(image,crop_image,1,1)
 #endif
   for (y=0; y < (ssize_t) crop_image->rows; y++)
   {
@@ -1253,8 +1249,8 @@ MagickExport Image *FlipImage(const Image *image,ExceptionInfo *exception)
   image_view=AcquireVirtualCacheView(image,exception);
   flip_view=AcquireAuthenticCacheView(flip_image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for schedule(static,flip_image->rows/2) \
-    shared(progress,status)
+  #pragma omp parallel for schedule(static,4) shared(status) \
+    magick_threads(image,flip_image,1,1)
 #endif
   for (y=0; y < (ssize_t) flip_image->rows; y++)
   {
@@ -1400,8 +1396,8 @@ MagickExport Image *FlopImage(const Image *image,ExceptionInfo *exception)
   image_view=AcquireVirtualCacheView(image,exception);
   flop_view=AcquireAuthenticCacheView(flop_image,exception);
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp parallel for schedule(static,flop_image->rows/2) \
-    shared(progress,status)
+  #pragma omp parallel for schedule(static,4) shared(status) \
+    magick_threads(image,flop_image,1,1)
 #endif
   for (y=0; y < (ssize_t) flop_image->rows; y++)
   {
index 79d7a64501eac3e6e52a9928ada2fa5e1502dadd..5f71c10a7b8d41cfabfc9d105a5ac198839abee2 100644 (file)
@@ -291,7 +291,7 @@ WandExport MagickBooleanType DuplexTransferWandViewIterator(WandView *source,
   progress=0;
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   height=source->extent.height-source->extent.y;
-  #pragma omp parallel for schedule(static) shared(progress,status) \
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
     magick_threads(source_image,destination_image,height,1)
 #endif
   for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
@@ -544,7 +544,7 @@ WandExport MagickBooleanType GetWandViewIterator(WandView *source,
   progress=0;
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   height=source->extent.height-source->extent.y;
-  #pragma omp parallel for schedule(static) shared(progress,status) \
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
     magick_threads(source_image,source_image,height,1)
 #endif
   for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
@@ -947,7 +947,7 @@ WandExport MagickBooleanType SetWandViewIterator(WandView *destination,
   progress=0;
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   height=destination->extent.height-destination->extent.y;
-  #pragma omp parallel for schedule(static) shared(progress,status) \
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
     magick_threads(destination_image,destination_image,height,1)
 #endif
   for (y=destination->extent.y; y < (ssize_t) destination->extent.height; y++)
@@ -1084,7 +1084,7 @@ WandExport MagickBooleanType TransferWandViewIterator(WandView *source,
   progress=0;
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   height=source->extent.height-source->extent.y;
-  #pragma omp parallel for schedule(static) shared(progress,status) \
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
     magick_threads(source_image,destination_image,height,1)
 #endif
   for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
@@ -1238,7 +1238,7 @@ WandExport MagickBooleanType UpdateWandViewIterator(WandView *source,
   progress=0;
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
   height=source->extent.height-source->extent.y;
-  #pragma omp parallel for schedule(static) shared(progress,status) \
+  #pragma omp parallel for schedule(static,4) shared(progress,status) \
     magick_threads(source_image,source_image,height,1)
 #endif
   for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)