mirror of
https://github.com/ImageMagick/ImageMagick.git
synced 2026-05-25 11:24:54 +02:00
This commit is contained in:
+1
-1
@@ -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++)
|
||||
{
|
||||
|
||||
@@ -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++)
|
||||
{
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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) \
|
||||
|
||||
@@ -106,7 +106,6 @@ MagickExport MagickBooleanType MagickDeleteThreadKey(MagickThreadKey key)
|
||||
key=(MagickThreadKey) RelinquishMagickMemory(key);
|
||||
return(MagickTrue);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+10
-14
@@ -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++)
|
||||
{
|
||||
|
||||
@@ -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++)
|
||||
|
||||
Reference in New Issue
Block a user