This commit is contained in:
cristy
2013-01-06 16:56:13 +00:00
parent 424541215c
commit d643247965
11 changed files with 44 additions and 62 deletions
+1 -1
View 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++)
{
+2 -1
View 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++)
{
+2 -1
View 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++)
{
+8 -13
View 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++)
{
+2 -2
View 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++)
+2 -1
View 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++)
{
+6 -13
View 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)
{
+6 -10
View 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) \
-1
View File
@@ -106,7 +106,6 @@ MagickExport MagickBooleanType MagickDeleteThreadKey(MagickThreadKey key)
key=(MagickThreadKey) RelinquishMagickMemory(key);
return(MagickTrue);
#endif
}
/*
+10 -14
View 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++)
{
+5 -5
View 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++)