mirror of
https://github.com/ImageMagick/ImageMagick.git
synced 2026-05-25 11:24:54 +02:00
This commit is contained in:
+22
-8
@@ -168,7 +168,9 @@ MagickExport RectangleInfo GetImageBoundingBox(const Image *image,
|
||||
status=MagickTrue;
|
||||
GetPixelInfo(image,&zero);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -290,7 +292,7 @@ MagickExport size_t GetImageDepth(const Image *image,ExceptionInfo *exception)
|
||||
assert(image->signature == MagickSignature);
|
||||
if (image->debug != MagickFalse)
|
||||
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
current_depth=(size_t *) AcquireQuantumMemory(number_threads,
|
||||
sizeof(*current_depth));
|
||||
if (current_depth == (size_t *) NULL)
|
||||
@@ -304,7 +306,9 @@ MagickExport size_t GetImageDepth(const Image *image,ExceptionInfo *exception)
|
||||
i;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((image->colors) > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
@@ -384,7 +388,9 @@ MagickExport size_t GetImageDepth(const Image *image,ExceptionInfo *exception)
|
||||
depth_map[i]=depth;
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -447,7 +453,9 @@ MagickExport size_t GetImageDepth(const Image *image,ExceptionInfo *exception)
|
||||
Compute pixel depth.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -930,7 +938,9 @@ MagickExport MagickBooleanType SetImageDepth(Image *image,
|
||||
i;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
@@ -972,7 +982,9 @@ MagickExport MagickBooleanType SetImageDepth(Image *image,
|
||||
depth_map[i]=ScaleAnyToQuantum(ScaleQuantumToAny((Quantum) i,range),
|
||||
range);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1035,7 +1047,9 @@ MagickExport MagickBooleanType SetImageDepth(Image *image,
|
||||
Scale pixels to desired depth.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
#include "MagickCore/exception.h"
|
||||
#include "MagickCore/exception-private.h"
|
||||
#include "MagickCore/pixel-accessor.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/thread-private.h"
|
||||
|
||||
@@ -164,7 +165,7 @@ MagickExport CacheView *AcquireVirtualCacheView(const Image *image,
|
||||
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
|
||||
(void) ResetMagickMemory(cache_view,0,sizeof(*cache_view));
|
||||
cache_view->image=ReferenceImage((Image *) image);
|
||||
cache_view->number_threads=GetOpenMPMaximumThreads();
|
||||
cache_view->number_threads=GetMagickResourceLimit(ThreadResource);
|
||||
cache_view->nexus_info=AcquirePixelCacheNexus(cache_view->number_threads);
|
||||
cache_view->virtual_pixel_method=GetImageVirtualPixelMethod(image);
|
||||
cache_view->debug=IsEventLogging();
|
||||
|
||||
+7
-5
@@ -201,7 +201,7 @@ MagickPrivate Cache AcquirePixelCache(const size_t number_threads)
|
||||
cache_info->id=GetMagickThreadId();
|
||||
cache_info->number_threads=number_threads;
|
||||
if (number_threads == 0)
|
||||
cache_info->number_threads=GetOpenMPMaximumThreads();
|
||||
cache_info->number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
cache_info->nexus_info=AcquirePixelCacheNexus(cache_info->number_threads);
|
||||
if (cache_info->nexus_info == (NexusInfo **) NULL)
|
||||
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
|
||||
@@ -898,7 +898,7 @@ static MagickBooleanType PixelCacheCloneUnoptimized(CacheInfo *clone_info,
|
||||
clone_offset+=sizeof(Quantum);
|
||||
}
|
||||
}
|
||||
if (y < clone_info->rows)
|
||||
if (y < (ssize_t) clone_info->rows)
|
||||
{
|
||||
/*
|
||||
Set remaining columns as undefined.
|
||||
@@ -1017,7 +1017,7 @@ static MagickBooleanType PixelCacheCloneUnoptimized(CacheInfo *clone_info,
|
||||
clone_offset+=length;
|
||||
}
|
||||
}
|
||||
if (y < clone_info->rows)
|
||||
if (y < (ssize_t) clone_info->rows)
|
||||
{
|
||||
/*
|
||||
Set remaining rows as undefined.
|
||||
@@ -1856,7 +1856,7 @@ static inline MagickBooleanType ValidatePixelCacheMorphology(const Image *image)
|
||||
(memcmp(p,q,image->number_channels*sizeof(*p)) != 0) ||
|
||||
(image->metacontent_extent != cache_info->metacontent_extent) ||
|
||||
(cache_info->nexus_info == (NexusInfo **) NULL) ||
|
||||
(cache_info->number_threads < GetOpenMPMaximumThreads()))
|
||||
(cache_info->number_threads < (size_t) GetMagickResourceLimit(ThreadResource)))
|
||||
return(MagickFalse);
|
||||
return(MagickTrue);
|
||||
}
|
||||
@@ -4898,7 +4898,9 @@ 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 schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
+11
-8
@@ -49,6 +49,7 @@
|
||||
#include "MagickCore/monitor-private.h"
|
||||
#include "MagickCore/option.h"
|
||||
#include "MagickCore/pixel-accessor.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/string-private.h"
|
||||
#include "MagickCore/token.h"
|
||||
#include "MagickCore/utility.h"
|
||||
@@ -126,7 +127,8 @@ static MagickBooleanType ChannelImage(Image *destination_image,
|
||||
status;
|
||||
|
||||
size_t
|
||||
height;
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
@@ -135,8 +137,11 @@ static MagickBooleanType ChannelImage(Image *destination_image,
|
||||
source_view=AcquireVirtualCacheView(source_image,exception);
|
||||
destination_view=AcquireAuthenticCacheView(destination_image,exception);
|
||||
height=MagickMin(source_image->rows,destination_image->rows);
|
||||
width=MagickMin(source_image->columns,destination_image->columns);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) height; y++)
|
||||
{
|
||||
@@ -153,9 +158,6 @@ static MagickBooleanType ChannelImage(Image *destination_image,
|
||||
register ssize_t
|
||||
x;
|
||||
|
||||
size_t
|
||||
width;
|
||||
|
||||
if (status == MagickFalse)
|
||||
continue;
|
||||
p=GetCacheViewVirtualPixels(source_view,0,y,source_image->columns,1,
|
||||
@@ -173,7 +175,6 @@ static MagickBooleanType ChannelImage(Image *destination_image,
|
||||
if ((destination_traits == UndefinedPixelTrait) ||
|
||||
(source_traits == UndefinedPixelTrait))
|
||||
continue;
|
||||
width=MagickMin(source_image->columns,destination_image->columns);
|
||||
for (x=0; x < (ssize_t) width; x++)
|
||||
{
|
||||
if (channel_op == AssignChannelOp)
|
||||
@@ -654,7 +655,9 @@ MagickExport Image *SeparateImage(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
separate_view=AcquireAuthenticCacheView(separate_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -715,7 +718,7 @@ MagickExport Image *SeparateImage(const Image *image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_SeparateImage)
|
||||
#pragma omp critical (MagickCore_SeparateImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,SeparateImageTag,progress++,image->rows);
|
||||
if (proceed == MagickFalse)
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
#include "MagickCore/pixel-accessor.h"
|
||||
#include "MagickCore/quantize.h"
|
||||
#include "MagickCore/quantum.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/semaphore.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/token.h"
|
||||
@@ -203,7 +204,9 @@ MagickExport MagickBooleanType CycleColormapImage(Image *image,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -327,7 +330,9 @@ MagickExport MagickBooleanType SortColormapByIntensity(Image *image,
|
||||
Assign index values to colormap entries.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
image->colormap[i].alpha=(double) i;
|
||||
|
||||
+118
-39
@@ -61,6 +61,7 @@
|
||||
#include "MagickCore/quantize.h"
|
||||
#include "MagickCore/quantum.h"
|
||||
#include "MagickCore/quantum-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/string-private.h"
|
||||
#include "MagickCore/utility.h"
|
||||
@@ -243,7 +244,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -302,7 +305,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
GetPixelInfo(image,&zero);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -358,7 +363,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -422,7 +429,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -486,7 +495,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -550,7 +561,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -656,7 +669,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
black=pow(10.0,(reference_black-reference_white)*(gamma/density)*
|
||||
0.002/film_gamma);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
logmap[i]=ScaleMapToQuantum((MagickRealType) (MaxMap*(reference_white+
|
||||
@@ -664,7 +679,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
0.002/film_gamma))/1024.0));
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -739,7 +756,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
primary_info.y=(double) (MaxMap+1.0)/2.0;
|
||||
primary_info.z=(double) (MaxMap+1.0)/2.0;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -764,7 +783,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
G = 0.29900*R+0.58700*G+0.11400*B
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -797,7 +818,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
primary_info.y=(double) (MaxMap+1.0)/2.0;
|
||||
primary_info.z=(double) (MaxMap+1.0)/2.0;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -821,7 +844,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
G = 0.21260*R+0.71520*G+0.07220*B
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -852,7 +877,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
primary_info.y=(double) (MaxMap+1.0)/2.0;
|
||||
primary_info.z=(double) (MaxMap+1.0)/2.0;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -875,7 +902,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
Mostly removal of a gamma function, but with a linear component
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -909,7 +938,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
Z = 0.0193339*R+0.1191920*G+0.9503041*B
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -979,7 +1010,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
primary_info.y=(double) (MaxMap+1.0)/2.0;
|
||||
primary_info.z=(double) (MaxMap+1.0)/2.0;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -1010,7 +1043,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
primary_info.y=(double) (MaxMap+1.0)/2.0;
|
||||
primary_info.z=(double) (MaxMap+1.0)/2.0;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -1041,7 +1076,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
primary_info.y=(double) (MaxMap+1.0)/2.0;
|
||||
primary_info.z=(double) (MaxMap+1.0)/2.0;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -1063,7 +1100,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
Linear conversion tables.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -1093,7 +1132,9 @@ static MagickBooleanType sRGBTransformImage(Image *image,
|
||||
*/
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1708,7 +1749,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1767,7 +1810,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
GetPixelInfo(image,&zero);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1823,7 +1868,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1889,7 +1936,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1955,7 +2004,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2021,7 +2072,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
}
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2136,7 +2189,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
return(MagickFalse);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2218,7 +2273,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
through QuantumRange.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2253,7 +2310,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
through QuantumRange.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2286,7 +2345,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
through QuantumRange.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2316,7 +2377,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
B = 0.0*R+0.0*G+1.0*B
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2350,7 +2413,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
B = 0.0556434*X-0.2040259*Y+1.057225*Z
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2378,7 +2443,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
YCC is scaled by 1.3584. C1 zero is 156 and C2 is at 137.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2411,7 +2478,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
through QuantumRange.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2446,7 +2515,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
through QuantumRange.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2479,7 +2550,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
through QuantumRange.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2505,7 +2578,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
Linear conversion tables.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static)
|
||||
#pragma omp parallel for schedule(static) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -2535,7 +2610,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
*/
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2639,7 +2716,9 @@ static MagickBooleanType TransformsRGBImage(Image *image,
|
||||
Convert PseudoClass image.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
|
||||
+29
-15
@@ -177,7 +177,9 @@ MagickExport Image *CompareImages(Image *image,const Image *reconstruct_image,
|
||||
reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception);
|
||||
highlight_view=AcquireAuthenticCacheView(highlight_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -325,7 +327,9 @@ static MagickBooleanType GetAbsoluteDistortion(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -394,7 +398,7 @@ static MagickBooleanType GetAbsoluteDistortion(const Image *image,
|
||||
q+=GetPixelChannels(reconstruct_image);
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_GetAbsoluteError)
|
||||
#pragma omp critical (MagickCore_GetAbsoluteError)
|
||||
#endif
|
||||
for (i=0; i <= MaxPixelChannels; i++)
|
||||
distortion[i]+=channel_distortion[i];
|
||||
@@ -449,7 +453,9 @@ static MagickBooleanType GetFuzzDistortion(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -515,7 +521,7 @@ static MagickBooleanType GetFuzzDistortion(const Image *image,
|
||||
q+=GetPixelChannels(reconstruct_image);
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_GetMeanSquaredError)
|
||||
#pragma omp critical (MagickCore_GetMeanSquaredError)
|
||||
#endif
|
||||
for (i=0; i <= MaxPixelChannels; i++)
|
||||
distortion[i]+=channel_distortion[i];
|
||||
@@ -549,7 +555,9 @@ static MagickBooleanType GetMeanAbsoluteDistortion(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -614,7 +622,7 @@ static MagickBooleanType GetMeanAbsoluteDistortion(const Image *image,
|
||||
q+=GetPixelChannels(reconstruct_image);
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_GetMeanAbsoluteError)
|
||||
#pragma omp critical (MagickCore_GetMeanAbsoluteError)
|
||||
#endif
|
||||
for (i=0; i <= MaxPixelChannels; i++)
|
||||
distortion[i]+=channel_distortion[i];
|
||||
@@ -743,7 +751,9 @@ static MagickBooleanType GetMeanSquaredDistortion(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -809,7 +819,7 @@ static MagickBooleanType GetMeanSquaredDistortion(const Image *image,
|
||||
q+=GetPixelChannels(reconstruct_image);
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_GetMeanSquaredError)
|
||||
#pragma omp critical (MagickCore_GetMeanSquaredError)
|
||||
#endif
|
||||
for (i=0; i <= MaxPixelChannels; i++)
|
||||
distortion[i]+=channel_distortion[i];
|
||||
@@ -977,7 +987,9 @@ static MagickBooleanType GetPeakAbsoluteDistortion(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
reconstruct_view=AcquireVirtualCacheView(reconstruct_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1044,7 +1056,7 @@ static MagickBooleanType GetPeakAbsoluteDistortion(const Image *image,
|
||||
q+=GetPixelChannels(reconstruct_image);
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_GetPeakAbsoluteError)
|
||||
#pragma omp critical (MagickCore_GetPeakAbsoluteError)
|
||||
#endif
|
||||
for (i=0; i <= MaxPixelChannels; i++)
|
||||
if (channel_distortion[i] > distortion[i])
|
||||
@@ -1586,7 +1598,9 @@ MagickExport Image *SimilarityImage(Image *image,const Image *reference,
|
||||
progress=0;
|
||||
similarity_view=AcquireAuthenticCacheView(similarity_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) (image->rows-reference->rows+1); y++)
|
||||
{
|
||||
@@ -1615,7 +1629,7 @@ MagickExport Image *SimilarityImage(Image *image,const Image *reference,
|
||||
|
||||
similarity=GetSimilarityMetric(image,reference,metric,x,y,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_SimilarityImage)
|
||||
#pragma omp critical (MagickCore_SimilarityImage)
|
||||
#endif
|
||||
if (similarity < *similarity_metric)
|
||||
{
|
||||
@@ -1654,9 +1668,9 @@ MagickExport Image *SimilarityImage(Image *image,const Image *reference,
|
||||
if (image->progress_monitor != (MagickProgressMonitor) NULL)
|
||||
{
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_SimilarityImage)
|
||||
#pragma omp critical (MagickCore_SimilarityImage)
|
||||
#endif
|
||||
if (IfMagickFalse( SetImageProgress(image,SimilarityImageTag,
|
||||
if (IfMagickFalse(SetImageProgress(image,SimilarityImageTag,
|
||||
progress++,image->rows) ))
|
||||
status=MagickFalse;
|
||||
}
|
||||
|
||||
+16
-6
@@ -334,7 +334,9 @@ static MagickBooleanType CompositeOverImage(Image *image,
|
||||
composite_view=AcquireVirtualCacheView(composite_image,exception);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -518,7 +520,7 @@ static MagickBooleanType CompositeOverImage(Image *image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_CompositeImage)
|
||||
#pragma omp critical (MagickCore_CompositeImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,CompositeImageTag,progress++,
|
||||
image->rows);
|
||||
@@ -607,7 +609,9 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
|
||||
composite_view=AcquireVirtualCacheView(composite_image,exception);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((composite_image->rows*composite_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) composite_image->rows; y++)
|
||||
{
|
||||
@@ -1166,7 +1170,9 @@ MagickExport MagickBooleanType CompositeImage(Image *image,
|
||||
composite_view=AcquireVirtualCacheView(composite_image,exception);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2364,7 +2370,9 @@ MagickExport MagickBooleanType TextureImage(Image *image,const Image *texture,
|
||||
Tile texture onto the image background.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y+=(ssize_t) texture_image->rows)
|
||||
{
|
||||
@@ -2413,7 +2421,9 @@ 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 schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
+14
-5
@@ -55,6 +55,7 @@
|
||||
#include "MagickCore/pixel-accessor.h"
|
||||
#include "MagickCore/quantum.h"
|
||||
#include "MagickCore/quantum-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/thread-private.h"
|
||||
#include "MagickCore/transform.h"
|
||||
|
||||
@@ -231,7 +232,7 @@ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info,
|
||||
}
|
||||
if ((IsGrayColorspace(image->colorspace) != MagickFalse) &&
|
||||
(IsPixelInfoGray(&image->matte_color) == MagickFalse))
|
||||
SetImageColorspace(frame_image,sRGBColorspace,exception);
|
||||
(void) SetImageColorspace(frame_image,sRGBColorspace,exception);
|
||||
if ((frame_image->border_color.matte != MagickFalse) &&
|
||||
(frame_image->matte == MagickFalse))
|
||||
(void) SetImageAlpha(frame_image,OpaqueAlpha,exception);
|
||||
@@ -383,7 +384,9 @@ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info,
|
||||
Draw sides of ornamental border.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -687,7 +690,9 @@ MagickExport MagickBooleanType RaiseImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((raise_info->height*raise_info->width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) raise_info->height; y++)
|
||||
{
|
||||
@@ -792,7 +797,9 @@ MagickExport MagickBooleanType RaiseImage(Image *image,
|
||||
}
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=(ssize_t) raise_info->height; y < (ssize_t) (image->rows-raise_info->height); y++)
|
||||
{
|
||||
@@ -874,7 +881,9 @@ MagickExport MagickBooleanType RaiseImage(Image *image,
|
||||
}
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=(ssize_t) (image->rows-raise_info->height); y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
#include "MagickCore/resample.h"
|
||||
#include "MagickCore/resample-private.h"
|
||||
#include "MagickCore/registry.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/semaphore.h"
|
||||
#include "MagickCore/shear.h"
|
||||
#include "MagickCore/string_.h"
|
||||
@@ -2312,7 +2313,9 @@ MagickExport Image *DistortImage(const Image *image,DistortImageMethod method,
|
||||
UndefinedVirtualPixelMethod,MagickFalse,exception);
|
||||
distort_view=AcquireAuthenticCacheView(distort_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((distort_image->rows*distort_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (j=0; j < (ssize_t) distort_image->rows; j++)
|
||||
{
|
||||
@@ -2732,7 +2735,7 @@ if ( d.x == 0.5 && d.y == 0.5 ) {
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_DistortImage)
|
||||
#pragma omp critical (MagickCore_DistortImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,DistortImageTag,progress++,
|
||||
image->rows);
|
||||
@@ -3036,7 +3039,9 @@ MagickExport Image *SparseColorImage(const Image *image,
|
||||
progress=0;
|
||||
sparse_view=AcquireAuthenticCacheView(sparse_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((sparse_image->rows*sparse_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (j=0; j < (ssize_t) sparse_image->rows; j++)
|
||||
{
|
||||
@@ -3223,7 +3228,7 @@ MagickExport Image *SparseColorImage(const Image *image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_SparseColorImage)
|
||||
#pragma omp critical (MagickCore_SparseColorImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,SparseColorTag,progress++,image->rows);
|
||||
if (proceed == MagickFalse)
|
||||
|
||||
+34
-8
@@ -74,6 +74,7 @@
|
||||
#include "MagickCore/property.h"
|
||||
#include "MagickCore/resample.h"
|
||||
#include "MagickCore/resample-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/string-private.h"
|
||||
#include "MagickCore/thread-private.h"
|
||||
@@ -1102,6 +1103,10 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image,
|
||||
SegmentInfo
|
||||
edge;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
start,
|
||||
stop,
|
||||
@@ -1158,10 +1163,14 @@ MagickExport MagickBooleanType DrawAffineImage(Image *image,
|
||||
GetPixelInfo(image,&zero);
|
||||
start=(ssize_t) ceil(edge.y1-0.5);
|
||||
stop=(ssize_t) ceil(edge.y2-0.5);
|
||||
height=(size_t) (floor(edge.y2+0.5)-ceil(edge.y1-0.5));
|
||||
width=(size_t) (floor(edge.x2+0.5)-ceil(edge.x1-0.5));
|
||||
source_view=AcquireVirtualCacheView(source,exception);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=start; y <= stop; y++)
|
||||
{
|
||||
@@ -3225,6 +3234,10 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image,
|
||||
RectangleInfo
|
||||
bounding_box;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -3244,9 +3257,13 @@ MagickExport MagickBooleanType DrawGradientImage(Image *image,
|
||||
bounding_box=gradient->bounding_box;
|
||||
status=MagickTrue;
|
||||
GetPixelInfo(image,&zero);
|
||||
height=bounding_box.height-bounding_box.y;
|
||||
width=bounding_box.width-bounding_box.x;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=bounding_box.y; y < (ssize_t) bounding_box.height; y++)
|
||||
{
|
||||
@@ -3552,7 +3569,7 @@ static PolygonInfo **DestroyPolygonThreadSet(PolygonInfo **polygon_info)
|
||||
i;
|
||||
|
||||
assert(polygon_info != (PolygonInfo **) NULL);
|
||||
for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (polygon_info[i] != (PolygonInfo *) NULL)
|
||||
polygon_info[i]=DestroyPolygonInfo(polygon_info[i]);
|
||||
polygon_info=(PolygonInfo **) RelinquishMagickMemory(polygon_info);
|
||||
@@ -3574,13 +3591,12 @@ static PolygonInfo **AcquirePolygonThreadSet(const DrawInfo *draw_info,
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
polygon_info=(PolygonInfo **) AcquireQuantumMemory(number_threads,
|
||||
sizeof(*polygon_info));
|
||||
if (polygon_info == (PolygonInfo **) NULL)
|
||||
return((PolygonInfo **) NULL);
|
||||
(void) ResetMagickMemory(polygon_info,0,GetOpenMPMaximumThreads()*
|
||||
sizeof(*polygon_info));
|
||||
(void) ResetMagickMemory(polygon_info,0,number_threads*sizeof(*polygon_info));
|
||||
path_info=ConvertPrimitiveToPath(draw_info,primitive_info);
|
||||
if (path_info == (PathInfo *) NULL)
|
||||
return(DestroyPolygonThreadSet(polygon_info));
|
||||
@@ -3791,6 +3807,10 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image,
|
||||
SegmentInfo
|
||||
bounds;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
start,
|
||||
stop,
|
||||
@@ -3845,6 +3865,8 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image,
|
||||
image->rows ? (double) image->rows-1.0 : bounds.y2;
|
||||
status=MagickTrue;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
height=(size_t) (floor(bounds.y2+0.5)-ceil(bounds.y1-0.5));
|
||||
width=(size_t) (floor(bounds.x2+0.5)-ceil(bounds.x1-0.5));
|
||||
if (primitive_info->coordinates == 1)
|
||||
{
|
||||
/*
|
||||
@@ -3853,7 +3875,9 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image,
|
||||
start=(ssize_t) ceil(bounds.y1-0.5);
|
||||
stop=(ssize_t) floor(bounds.y2+0.5);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=start; y <= stop; y++)
|
||||
{
|
||||
@@ -3915,7 +3939,9 @@ static MagickBooleanType DrawPolygonPrimitive(Image *image,
|
||||
start=(ssize_t) ceil(bounds.y1-0.5);
|
||||
stop=(ssize_t) floor(bounds.y2+0.5);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=start; y <= stop; y++)
|
||||
{
|
||||
|
||||
+35
-12
@@ -294,7 +294,9 @@ MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius,
|
||||
edge_view=AcquireVirtualCacheView(edge_image,exception);
|
||||
blur_view=AcquireAuthenticCacheView(blur_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((blur_image->rows*blur_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) blur_image->rows; y++)
|
||||
{
|
||||
@@ -620,7 +622,9 @@ MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius,
|
||||
edge_view=AcquireVirtualCacheView(edge_image,exception);
|
||||
sharp_view=AcquireAuthenticCacheView(sharp_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((sharp_image->rows*sharp_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) sharp_image->rows; y++)
|
||||
{
|
||||
@@ -949,7 +953,9 @@ MagickExport Image *BlurImage(const Image *image,const double radius,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
blur_view=AcquireAuthenticCacheView(blur_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1078,7 +1084,9 @@ MagickExport Image *BlurImage(const Image *image,const double radius,
|
||||
image_view=AcquireVirtualCacheView(blur_image,exception);
|
||||
blur_view=AcquireAuthenticCacheView(blur_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((blur_image->rows*blur_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (x=0; x < (ssize_t) blur_image->columns; x++)
|
||||
{
|
||||
@@ -1288,7 +1296,9 @@ static void Hull(const ssize_t x_offset,const ssize_t y_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) \
|
||||
if ((rows*columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) rows; y++)
|
||||
{
|
||||
@@ -1324,7 +1334,9 @@ static void Hull(const ssize_t x_offset,const ssize_t y_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) \
|
||||
if ((rows*columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) rows; y++)
|
||||
{
|
||||
@@ -1949,7 +1961,9 @@ MagickExport Image *MotionBlurImage(const Image *image,const double radius,
|
||||
motion_view=AcquireVirtualCacheView(image,exception);
|
||||
blur_view=AcquireAuthenticCacheView(blur_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2726,7 +2740,9 @@ MagickExport Image *RadialBlurImage(const Image *image,const double angle,
|
||||
radial_view=AcquireVirtualCacheView(image,exception);
|
||||
blur_view=AcquireAuthenticCacheView(blur_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3020,7 +3036,9 @@ MagickExport Image *SelectiveBlurImage(const Image *image,const double radius,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
blur_view=AcquireAuthenticCacheView(blur_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3273,7 +3291,9 @@ MagickExport Image *ShadeImage(const Image *image,const MagickBooleanType gray,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
shade_view=AcquireAuthenticCacheView(shade_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3601,7 +3621,8 @@ MagickExport Image *SpreadImage(const Image *image,const double radius,
|
||||
spread_view=AcquireAuthenticCacheView(spread_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status) \
|
||||
if (key == ~0UL) num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
if (((image->rows*image->columns) > 8192) && (key == ~0UL)) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3740,7 +3761,9 @@ MagickExport Image *UnsharpMaskImage(const Image *image,const double radius,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
unsharp_view=AcquireAuthenticCacheView(unsharp_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
+104
-36
@@ -69,6 +69,7 @@
|
||||
#include "MagickCore/quantum-private.h"
|
||||
#include "MagickCore/resample.h"
|
||||
#include "MagickCore/resample-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/statistic.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/string-private.h"
|
||||
@@ -342,7 +343,9 @@ MagickExport MagickBooleanType ClutImage(Image *image,const Image *clut_image,
|
||||
adjust=(ssize_t) (clut_image->interpolate == IntegerInterpolatePixel ? 0 : 1);
|
||||
clut_view=AcquireVirtualCacheView(clut_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4)
|
||||
#pragma omp parallel for schedule(static,4) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -354,7 +357,9 @@ MagickExport MagickBooleanType ClutImage(Image *image,const Image *clut_image,
|
||||
clut_view=DestroyCacheView(clut_view);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -384,11 +389,16 @@ MagickExport MagickBooleanType ClutImage(Image *image,const Image *clut_image,
|
||||
continue;
|
||||
}
|
||||
GetPixelInfoPixel(image,q,&pixel);
|
||||
pixel.red=clut_map[ScaleQuantumToMap(pixel.red)].red;
|
||||
pixel.green=clut_map[ScaleQuantumToMap(pixel.green)].green;
|
||||
pixel.blue=clut_map[ScaleQuantumToMap(pixel.blue)].blue;
|
||||
pixel.black=clut_map[ScaleQuantumToMap(pixel.black)].black;
|
||||
pixel.alpha=clut_map[ScaleQuantumToMap(pixel.alpha)].alpha;
|
||||
pixel.red=clut_map[ScaleQuantumToMap(
|
||||
ClampToQuantum(pixel.red))].red;
|
||||
pixel.green=clut_map[ScaleQuantumToMap(
|
||||
ClampToQuantum(pixel.green))].green;
|
||||
pixel.blue=clut_map[ScaleQuantumToMap(
|
||||
ClampToQuantum(pixel.blue))].blue;
|
||||
pixel.black=clut_map[ScaleQuantumToMap(
|
||||
ClampToQuantum(pixel.black))].black;
|
||||
pixel.alpha=clut_map[ScaleQuantumToMap(
|
||||
ClampToQuantum(pixel.alpha))].alpha;
|
||||
SetPixelInfoPixel(image,&pixel,q);
|
||||
q+=GetPixelChannels(image);
|
||||
}
|
||||
@@ -698,7 +708,9 @@ MagickExport MagickBooleanType ColorDecisionListImage(Image *image,
|
||||
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
|
||||
image->filename);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4)
|
||||
#pragma omp parallel for schedule(static,4) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -718,7 +730,9 @@ MagickExport MagickBooleanType ColorDecisionListImage(Image *image,
|
||||
Apply transfer function to colormap.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
@@ -745,7 +759,9 @@ MagickExport MagickBooleanType ColorDecisionListImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -900,7 +916,9 @@ MagickExport MagickBooleanType ContrastImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1086,7 +1104,9 @@ MagickExport MagickBooleanType ContrastStretchImage(Image *image,
|
||||
*/
|
||||
number_channels=GetPixelChannels(image);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) number_channels; i++)
|
||||
{
|
||||
@@ -1123,7 +1143,9 @@ MagickExport MagickBooleanType ContrastStretchImage(Image *image,
|
||||
sizeof(*stretch_map));
|
||||
number_channels=GetPixelChannels(image);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) number_channels; i++)
|
||||
{
|
||||
@@ -1154,7 +1176,9 @@ MagickExport MagickBooleanType ContrastStretchImage(Image *image,
|
||||
Stretch-contrast colormap.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (j=0; j < (ssize_t) image->colors; j++)
|
||||
{
|
||||
@@ -1195,7 +1219,9 @@ MagickExport MagickBooleanType ContrastStretchImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1347,7 +1373,9 @@ MagickExport Image *EnhanceImage(const Image *image,ExceptionInfo *exception)
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
enhance_view=AcquireAuthenticCacheView(enhance_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1578,7 +1606,9 @@ MagickExport MagickBooleanType EqualizeImage(Image *image,
|
||||
*/
|
||||
number_channels=GetPixelChannels(image);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) number_channels; i++)
|
||||
{
|
||||
@@ -1599,7 +1629,9 @@ MagickExport MagickBooleanType EqualizeImage(Image *image,
|
||||
sizeof(*equalize_map));
|
||||
number_channels=GetPixelChannels(image);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) number_channels; i++)
|
||||
{
|
||||
@@ -1628,7 +1660,9 @@ MagickExport MagickBooleanType EqualizeImage(Image *image,
|
||||
Equalize colormap.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (j=0; j < (ssize_t) image->colors; j++)
|
||||
{
|
||||
@@ -1672,7 +1706,9 @@ MagickExport MagickBooleanType EqualizeImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1810,7 +1846,9 @@ MagickExport MagickBooleanType GammaImage(Image *image,const double gamma,
|
||||
(void) ResetMagickMemory(gamma_map,0,(MaxMap+1)*sizeof(*gamma_map));
|
||||
if (gamma != 0.0)
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT) && (MaxMap > 256)
|
||||
#pragma omp parallel for
|
||||
#pragma omp parallel for \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
gamma_map[i]=ScaleMapToQuantum((MagickRealType) (MaxMap*pow((double) i/
|
||||
@@ -1821,7 +1859,9 @@ MagickExport MagickBooleanType GammaImage(Image *image,const double gamma,
|
||||
Gamma-correct colormap.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
@@ -1846,7 +1886,9 @@ MagickExport MagickBooleanType GammaImage(Image *image,const double gamma,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2015,7 +2057,9 @@ MagickExport MagickBooleanType HaldClutImage(Image *image,
|
||||
hald_view=AcquireVirtualCacheView(hald_image,exception);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2195,7 +2239,9 @@ MagickExport MagickBooleanType LevelImage(Image *image,const double black_point,
|
||||
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
|
||||
if (image->storage_class == PseudoClass)
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
@@ -2222,7 +2268,9 @@ MagickExport MagickBooleanType LevelImage(Image *image,const double black_point,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2361,7 +2409,9 @@ MagickExport MagickBooleanType LevelizeImage(Image *image,
|
||||
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
|
||||
if (image->storage_class == PseudoClass)
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
@@ -2388,7 +2438,9 @@ MagickExport MagickBooleanType LevelizeImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2872,7 +2924,9 @@ MagickExport MagickBooleanType ModulateImage(Image *image,const char *modulate,
|
||||
Modulate colormap.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
switch (colorspace)
|
||||
@@ -2908,7 +2962,9 @@ MagickExport MagickBooleanType ModulateImage(Image *image,const char *modulate,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3040,7 +3096,9 @@ MagickExport MagickBooleanType NegateImage(Image *image,
|
||||
Negate colormap.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
@@ -3068,7 +3126,9 @@ MagickExport MagickBooleanType NegateImage(Image *image,
|
||||
if (grayscale != MagickFalse)
|
||||
{
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3141,7 +3201,9 @@ MagickExport MagickBooleanType NegateImage(Image *image,
|
||||
Negate image.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3320,7 +3382,9 @@ MagickExport MagickBooleanType SigmoidalContrastImage(Image *image,
|
||||
image->filename);
|
||||
(void) ResetMagickMemory(sigmoidal_map,0,(MaxMap+1)*sizeof(*sigmoidal_map));
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if (MaxMap > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i <= (ssize_t) MaxMap; i++)
|
||||
{
|
||||
@@ -3383,7 +3447,9 @@ MagickExport MagickBooleanType SigmoidalContrastImage(Image *image,
|
||||
Sigmoidal-contrast enhance colormap.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
@@ -3408,7 +3474,9 @@ MagickExport MagickBooleanType SigmoidalContrastImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
+19
-6
@@ -80,6 +80,7 @@
|
||||
#include "MagickCore/quantize.h"
|
||||
#include "MagickCore/quantum-private.h"
|
||||
#include "MagickCore/random_.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/segment.h"
|
||||
#include "MagickCore/semaphore.h"
|
||||
#include "MagickCore/signature-private.h"
|
||||
@@ -222,7 +223,9 @@ MagickExport ChannelFeatures *GetImageFeatures(const Image *image,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -592,7 +595,9 @@ MagickExport ChannelFeatures *GetImageFeatures(const Image *image,
|
||||
Compute texture features.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((number_grays*number_grays) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < 4; i++)
|
||||
{
|
||||
@@ -776,7 +781,9 @@ MagickExport ChannelFeatures *GetImageFeatures(const Image *image,
|
||||
Compute more texture features.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((number_grays*number_grays) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < 4; i++)
|
||||
{
|
||||
@@ -851,7 +858,9 @@ MagickExport ChannelFeatures *GetImageFeatures(const Image *image,
|
||||
Compute more texture features.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((number_grays*number_grays) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < 4; i++)
|
||||
{
|
||||
@@ -971,7 +980,9 @@ MagickExport ChannelFeatures *GetImageFeatures(const Image *image,
|
||||
(void) ResetMagickMemory(&variance,0,sizeof(variance));
|
||||
(void) ResetMagickMemory(&sum_squares,0,sizeof(sum_squares));
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((number_grays*number_grays) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < 4; i++)
|
||||
{
|
||||
@@ -1122,7 +1133,9 @@ MagickExport ChannelFeatures *GetImageFeatures(const Image *image,
|
||||
Compute more texture features.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((number_grays*number_grays) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < 4; i++)
|
||||
{
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "MagickCore/pixel-accessor.h"
|
||||
#include "MagickCore/property.h"
|
||||
#include "MagickCore/quantum-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/thread-private.h"
|
||||
#if defined(MAGICKCORE_FFTW_DELEGATE)
|
||||
#if defined(MAGICKCORE_HAVE_COMPLEX_H)
|
||||
|
||||
+39
-15
@@ -312,7 +312,8 @@ MagickExport Image *AddNoiseImage(const Image *image,const NoiseType noise_type,
|
||||
key=GetRandomSecretKey(random_info[0]);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (key == ~0UL) num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
if (((image->rows*image->columns) > 8192) && (key == ~0UL)) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -478,7 +479,9 @@ MagickExport Image *BlueShiftImage(const Image *image,const double factor,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
shift_view=AcquireAuthenticCacheView(shift_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -740,7 +743,9 @@ MagickExport Image *ColorizeImage(const Image *image,const char *blend,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
colorize_view=AcquireAuthenticCacheView(colorize_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -946,7 +951,9 @@ MagickExport Image *ColorMatrixImage(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
color_view=AcquireAuthenticCacheView(color_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2935,7 +2942,7 @@ static FxInfo **DestroyFxThreadSet(FxInfo **fx_info)
|
||||
i;
|
||||
|
||||
assert(fx_info != (FxInfo **) NULL);
|
||||
for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (fx_info[i] != (FxInfo *) NULL)
|
||||
fx_info[i]=DestroyFxInfo(fx_info[i]);
|
||||
fx_info=(FxInfo **) RelinquishMagickMemory(fx_info);
|
||||
@@ -2960,7 +2967,7 @@ static FxInfo **AcquireFxThreadSet(const Image *image,const char *expression,
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
fx_info=(FxInfo **) AcquireQuantumMemory(number_threads,sizeof(*fx_info));
|
||||
if (fx_info == (FxInfo **) NULL)
|
||||
return((FxInfo **) NULL);
|
||||
@@ -3040,7 +3047,9 @@ MagickExport Image *FxImage(const Image *image,const char *expression,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
fx_view=AcquireAuthenticCacheView(fx_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) fx_image->rows; y++)
|
||||
{
|
||||
@@ -3238,7 +3247,9 @@ MagickExport Image *ImplodeImage(const Image *image,const double amount,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
implode_view=AcquireAuthenticCacheView(implode_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3482,7 +3493,9 @@ MagickExport Image *MorphImages(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(morph_image,exception);
|
||||
morph_view=AcquireAuthenticCacheView(morph_images,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((morph_image->rows*morph_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) morph_images->rows; y++)
|
||||
{
|
||||
@@ -4137,7 +4150,9 @@ MagickExport Image *SepiaToneImage(const Image *image,const double threshold,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
sepia_view=AcquireAuthenticCacheView(sepia_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -4428,7 +4443,8 @@ MagickExport Image *SketchImage(const Image *image,const double radius,
|
||||
random_view=AcquireAuthenticCacheView(random_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if (key == ~0UL) num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
if (((image->rows*image->columns) > 8192) && (key == ~0UL)) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) random_image->rows; y++)
|
||||
{
|
||||
@@ -4601,7 +4617,9 @@ MagickExport MagickBooleanType SolarizeImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -5085,7 +5103,9 @@ MagickExport Image *SwirlImage(const Image *image,double degrees,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
swirl_view=AcquireAuthenticCacheView(swirl_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -5318,7 +5338,9 @@ MagickExport Image *TintImage(const Image *image,const char *blend,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
tint_view=AcquireAuthenticCacheView(tint_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -5621,7 +5643,9 @@ MagickExport Image *WaveImage(const Image *image,const double amplitude,
|
||||
(void) SetCacheViewVirtualPixelMethod(image_view,
|
||||
BackgroundVirtualPixelMethod);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) wave_image->rows; y++)
|
||||
{
|
||||
|
||||
+51
-52
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% %
|
||||
% %
|
||||
@@ -68,9 +68,6 @@ struct _ImageView
|
||||
CacheView
|
||||
*view;
|
||||
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
ExceptionInfo
|
||||
*exception;
|
||||
|
||||
@@ -117,7 +114,6 @@ MagickExport ImageView *CloneImageView(const ImageView *image_view)
|
||||
clone_view->description=ConstantString(image_view->description);
|
||||
clone_view->extent=image_view->extent;
|
||||
clone_view->view=CloneCacheView(image_view->view);
|
||||
clone_view->number_threads=image_view->number_threads;
|
||||
clone_view->exception=AcquireExceptionInfo();
|
||||
InheritException(clone_view->exception,image_view->exception);
|
||||
clone_view->debug=image_view->debug;
|
||||
@@ -225,6 +221,10 @@ MagickExport MagickBooleanType DuplexTransferImageViewIterator(
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -240,8 +240,12 @@ MagickExport MagickBooleanType DuplexTransferImageViewIterator(
|
||||
return(MagickFalse);
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=source->extent.height-source->extent.y;
|
||||
width=source->extent.width-source->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(source->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
|
||||
{
|
||||
@@ -293,7 +297,7 @@ MagickExport MagickBooleanType DuplexTransferImageViewIterator(
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_DuplexTransferImageViewIterator)
|
||||
#pragma omp critical (MagickCore_DuplexTransferImageViewIterator)
|
||||
#endif
|
||||
proceed=SetImageProgress(source_image,source->description,progress++,
|
||||
source->extent.height);
|
||||
@@ -535,6 +539,10 @@ MagickExport MagickBooleanType GetImageViewIterator(ImageView *source,
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -545,8 +553,12 @@ MagickExport MagickBooleanType GetImageViewIterator(ImageView *source,
|
||||
source_image=source->image;
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=source->extent.height-source->extent.y;
|
||||
width=source->extent.width-source->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(source->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((width*height) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
|
||||
{
|
||||
@@ -573,7 +585,7 @@ MagickExport MagickBooleanType GetImageViewIterator(ImageView *source,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_GetImageViewIterator)
|
||||
#pragma omp critical (MagickCore_GetImageViewIterator)
|
||||
#endif
|
||||
proceed=SetImageProgress(source_image,source->description,progress++,
|
||||
source->extent.height);
|
||||
@@ -721,7 +733,6 @@ MagickExport ImageView *NewImageView(Image *image,ExceptionInfo *exception)
|
||||
image_view->extent.height=image->rows;
|
||||
image_view->extent.x=0;
|
||||
image_view->extent.y=0;
|
||||
image_view->number_threads=GetOpenMPMaximumThreads();
|
||||
image_view->exception=AcquireExceptionInfo();
|
||||
image_view->debug=IsEventLogging();
|
||||
image_view->signature=MagickSignature;
|
||||
@@ -778,7 +789,6 @@ MagickExport ImageView *NewImageViewRegion(Image *image,const ssize_t x,
|
||||
image_view->extent.height=height;
|
||||
image_view->extent.x=x;
|
||||
image_view->extent.y=y;
|
||||
image_view->number_threads=GetOpenMPMaximumThreads();
|
||||
image_view->exception=AcquireExceptionInfo();
|
||||
image_view->debug=IsEventLogging();
|
||||
image_view->signature=MagickSignature;
|
||||
@@ -874,6 +884,10 @@ MagickExport MagickBooleanType SetImageViewIterator(ImageView *destination,
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -888,8 +902,12 @@ MagickExport MagickBooleanType SetImageViewIterator(ImageView *destination,
|
||||
return(MagickFalse);
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=destination->extent.height-destination->extent.y;
|
||||
width=destination->extent.width-destination->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(destination->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=destination->extent.y; y < (ssize_t) destination->extent.height; y++)
|
||||
{
|
||||
@@ -922,7 +940,7 @@ MagickExport MagickBooleanType SetImageViewIterator(ImageView *destination,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_SetImageViewIterator)
|
||||
#pragma omp critical (MagickCore_SetImageViewIterator)
|
||||
#endif
|
||||
proceed=SetImageProgress(destination_image,destination->description,
|
||||
progress++,destination->extent.height);
|
||||
@@ -938,41 +956,6 @@ MagickExport MagickBooleanType SetImageViewIterator(ImageView *destination,
|
||||
% %
|
||||
% %
|
||||
% %
|
||||
% S e t I m a g e V i e w T h r e a d s %
|
||||
% %
|
||||
% %
|
||||
% %
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%
|
||||
% SetImageViewThreads() sets the number of threads in a thread team.
|
||||
%
|
||||
% The format of the SetImageViewDescription method is:
|
||||
%
|
||||
% void SetImageViewThreads(ImageView *image_view,
|
||||
% const size_t number_threads)
|
||||
%
|
||||
% A description of each parameter follows:
|
||||
%
|
||||
% o image_view: the image view.
|
||||
%
|
||||
% o number_threads: the number of threads in a thread team.
|
||||
%
|
||||
*/
|
||||
MagickExport void SetImageViewThreads(ImageView *image_view,
|
||||
const size_t number_threads)
|
||||
{
|
||||
assert(image_view != (ImageView *) NULL);
|
||||
assert(image_view->signature == MagickSignature);
|
||||
image_view->number_threads=number_threads;
|
||||
if (number_threads > GetOpenMPMaximumThreads())
|
||||
image_view->number_threads=GetOpenMPMaximumThreads();
|
||||
}
|
||||
|
||||
/*
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% %
|
||||
% %
|
||||
% %
|
||||
% T r a n s f e r I m a g e V i e w I t e r a t o r %
|
||||
% %
|
||||
% %
|
||||
@@ -1029,6 +1012,10 @@ MagickExport MagickBooleanType TransferImageViewIterator(ImageView *source,
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -1044,8 +1031,12 @@ MagickExport MagickBooleanType TransferImageViewIterator(ImageView *source,
|
||||
return(MagickFalse);
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=source->extent.height-source->extent.y;
|
||||
width=source->extent.width-source->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(source->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
|
||||
{
|
||||
@@ -1089,7 +1080,7 @@ MagickExport MagickBooleanType TransferImageViewIterator(ImageView *source,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_TransferImageViewIterator)
|
||||
#pragma omp critical (MagickCore_TransferImageViewIterator)
|
||||
#endif
|
||||
proceed=SetImageProgress(source_image,source->description,progress++,
|
||||
source->extent.height);
|
||||
@@ -1155,6 +1146,10 @@ MagickExport MagickBooleanType UpdateImageViewIterator(ImageView *source,
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -1168,8 +1163,12 @@ MagickExport MagickBooleanType UpdateImageViewIterator(ImageView *source,
|
||||
return(MagickFalse);
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=source->extent.height-source->extent.y;
|
||||
width=source->extent.width-source->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(source->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
|
||||
{
|
||||
@@ -1199,7 +1198,7 @@ MagickExport MagickBooleanType UpdateImageViewIterator(ImageView *source,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_UpdateImageViewIterator)
|
||||
#pragma omp critical (MagickCore_UpdateImageViewIterator)
|
||||
#endif
|
||||
proceed=SetImageProgress(source_image,source->description,progress++,
|
||||
source->extent.height);
|
||||
|
||||
+25
-8
@@ -83,6 +83,7 @@
|
||||
#include "MagickCore/property.h"
|
||||
#include "MagickCore/quantize.h"
|
||||
#include "MagickCore/random_.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/segment.h"
|
||||
#include "MagickCore/semaphore.h"
|
||||
#include "MagickCore/signature-private.h"
|
||||
@@ -534,7 +535,9 @@ MagickExport Image *AppendImages(const Image *images,
|
||||
y_offset-=geometry.y;
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1641,7 +1644,9 @@ MagickExport MagickBooleanType IsHighDynamicRangeImage(const Image *image,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1895,7 +1900,9 @@ MagickExport Image *NewMagickImage(const ImageInfo *image_info,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2166,7 +2173,9 @@ MagickExport MagickBooleanType SetImageAlphaChannel(Image *image,
|
||||
break;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2244,7 +2253,9 @@ MagickExport MagickBooleanType SetImageAlphaChannel(Image *image,
|
||||
break;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2431,7 +2442,9 @@ MagickExport MagickBooleanType SetImageColor(Image *image,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3084,7 +3097,9 @@ MagickExport MagickBooleanType SetImageAlpha(Image *image,const Quantum alpha,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3738,7 +3753,9 @@ MagickExport MagickBooleanType SyncImage(Image *image,ExceptionInfo *exception)
|
||||
status=MagickTrue;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(range_exception,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(range_exception,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
+11
-5
@@ -71,6 +71,7 @@
|
||||
#include "MagickCore/pixel-accessor.h"
|
||||
#include "MagickCore/prepress.h"
|
||||
#include "MagickCore/quantize.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/registry.h"
|
||||
#include "MagickCore/semaphore.h"
|
||||
#include "MagickCore/splay-tree.h"
|
||||
@@ -2586,7 +2587,9 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
|
||||
x;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (x=0; x < (ssize_t) image->columns; x++)
|
||||
{
|
||||
@@ -2745,7 +2748,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_MorphologyImage)
|
||||
#pragma omp critical (MagickCore_MorphologyImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,MorphologyTag,progress++,image->rows);
|
||||
if (proceed == MagickFalse)
|
||||
@@ -2762,7 +2765,9 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
|
||||
** Normal handling of horizontal or rectangular kernels (row by row)
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3288,7 +3293,7 @@ static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_MorphologyImage)
|
||||
#pragma omp critical (MagickCore_MorphologyImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,MorphologyTag,progress++,image->rows);
|
||||
if (proceed == MagickFalse)
|
||||
@@ -4581,8 +4586,9 @@ MagickExport void ScaleGeometryKernelInfo (KernelInfo *kernel,
|
||||
const char *geometry)
|
||||
{
|
||||
//GeometryFlags
|
||||
int
|
||||
MagickStatusType
|
||||
flags;
|
||||
|
||||
GeometryInfo
|
||||
args;
|
||||
|
||||
|
||||
+15
-6
@@ -55,6 +55,7 @@
|
||||
#include "MagickCore/monitor-private.h"
|
||||
#include "MagickCore/paint.h"
|
||||
#include "MagickCore/pixel-accessor.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/statistic.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/thread-private.h"
|
||||
@@ -499,7 +500,7 @@ static size_t **DestroyHistogramThreadSet(size_t **histogram)
|
||||
i;
|
||||
|
||||
assert(histogram != (size_t **) NULL);
|
||||
for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (histogram[i] != (size_t *) NULL)
|
||||
histogram[i]=(size_t *) RelinquishMagickMemory(histogram[i]);
|
||||
histogram=(size_t **) RelinquishMagickMemory(histogram);
|
||||
@@ -515,7 +516,7 @@ static size_t **AcquireHistogramThreadSet(const size_t count)
|
||||
**histogram,
|
||||
number_threads;
|
||||
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
histogram=(size_t **) AcquireQuantumMemory(number_threads,sizeof(*histogram));
|
||||
if (histogram == (size_t **) NULL)
|
||||
return((size_t **) NULL);
|
||||
@@ -590,7 +591,9 @@ MagickExport Image *OilPaintImage(const Image *image,const double radius,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
paint_view=AcquireAuthenticCacheView(paint_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -790,7 +793,9 @@ MagickExport MagickBooleanType OpaquePaintImage(Image *image,
|
||||
GetPixelInfo(image,&zero);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -916,7 +921,9 @@ MagickExport MagickBooleanType TransparentPaintImage(Image *image,
|
||||
GetPixelInfo(image,&zero);
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1042,7 +1049,9 @@ MagickExport MagickBooleanType TransparentPaintImageChroma(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "MagickCore/memory_.h"
|
||||
#include "MagickCore/pixel-accessor.h"
|
||||
#include "MagickCore/prepress.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/registry.h"
|
||||
#include "MagickCore/semaphore.h"
|
||||
#include "MagickCore/splay-tree.h"
|
||||
@@ -110,7 +111,9 @@ MagickExport double GetImageTotalInkDensity(Image *image,
|
||||
total_ink_density=0.0;
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -135,7 +138,7 @@ MagickExport double GetImageTotalInkDensity(Image *image,
|
||||
GetPixelBlue(image,p)+GetPixelBlack(image,p);
|
||||
if (density > total_ink_density)
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_GetImageTotalInkDensity)
|
||||
#pragma omp critical (MagickCore_GetImageTotalInkDensity)
|
||||
#endif
|
||||
{
|
||||
if (density > total_ink_density)
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
#include "MagickCore/property.h"
|
||||
#include "MagickCore/quantum.h"
|
||||
#include "MagickCore/quantum-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/splay-tree.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/thread-private.h"
|
||||
@@ -357,7 +358,7 @@ static unsigned short **DestroyPixelThreadSet(unsigned short **pixels)
|
||||
i;
|
||||
|
||||
assert(pixels != (unsigned short **) NULL);
|
||||
for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (pixels[i] != (unsigned short *) NULL)
|
||||
pixels[i]=(unsigned short *) RelinquishMagickMemory(pixels[i]);
|
||||
pixels=(unsigned short **) RelinquishMagickMemory(pixels);
|
||||
@@ -376,7 +377,7 @@ static unsigned short **AcquirePixelThreadSet(const size_t columns,
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=GetMagickResourceLimit(ThreadResource);
|
||||
pixels=(unsigned short **) AcquireQuantumMemory(number_threads,
|
||||
sizeof(*pixels));
|
||||
if (pixels == (unsigned short **) NULL)
|
||||
@@ -398,7 +399,7 @@ static cmsHTRANSFORM *DestroyTransformThreadSet(cmsHTRANSFORM *transform)
|
||||
i;
|
||||
|
||||
assert(transform != (cmsHTRANSFORM *) NULL);
|
||||
for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (transform[i] != (cmsHTRANSFORM) NULL)
|
||||
cmsDeleteTransform(transform[i]);
|
||||
transform=(cmsHTRANSFORM *) RelinquishMagickMemory(transform);
|
||||
@@ -419,7 +420,7 @@ static cmsHTRANSFORM *AcquireTransformThreadSet(Image *image,
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=GetMagickResourceLimit(ThreadResource);
|
||||
transform=(cmsHTRANSFORM *) AcquireQuantumMemory(number_threads,
|
||||
sizeof(*transform));
|
||||
if (transform == (cmsHTRANSFORM *) NULL)
|
||||
@@ -6040,7 +6041,9 @@ MagickExport MagickBooleanType ProfileImage(Image *image,const char *name,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -6115,7 +6118,7 @@ MagickExport MagickBooleanType ProfileImage(Image *image,const char *name,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_ProfileImage)
|
||||
#pragma omp critical (MagickCore_ProfileImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,ProfileImageTag,progress++,
|
||||
image->rows);
|
||||
|
||||
+19
-8
@@ -197,6 +197,7 @@
|
||||
#include "MagickCore/quantize.h"
|
||||
#include "MagickCore/quantum.h"
|
||||
#include "MagickCore/quantum-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/thread-private.h"
|
||||
|
||||
@@ -541,7 +542,9 @@ static MagickBooleanType AssignImageColors(Image *image,CubeInfo *cube_info,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1417,7 +1420,7 @@ static RealPixelInfo **DestroyPixelThreadSet(RealPixelInfo **pixels)
|
||||
i;
|
||||
|
||||
assert(pixels != (RealPixelInfo **) NULL);
|
||||
for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (pixels[i] != (RealPixelInfo *) NULL)
|
||||
pixels[i]=(RealPixelInfo *) RelinquishMagickMemory(pixels[i]);
|
||||
pixels=(RealPixelInfo **) RelinquishMagickMemory(pixels);
|
||||
@@ -1435,7 +1438,7 @@ static RealPixelInfo **AcquirePixelThreadSet(const size_t count)
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
pixels=(RealPixelInfo **) AcquireQuantumMemory(number_threads,
|
||||
sizeof(*pixels));
|
||||
if (pixels == (RealPixelInfo **) NULL)
|
||||
@@ -2377,7 +2380,9 @@ MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels,
|
||||
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
|
||||
if (image->storage_class == PseudoClass)
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (image->colors > 256) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (i=0; i < (ssize_t) image->colors; i++)
|
||||
{
|
||||
@@ -2404,7 +2409,9 @@ MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3300,7 +3307,9 @@ static MagickBooleanType SetGrayscaleImage(Image *image,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -3328,7 +3337,7 @@ static MagickBooleanType SetGrayscaleImage(Image *image,
|
||||
if (colormap_index[intensity] < 0)
|
||||
{
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_SetGrayscaleImage)
|
||||
#pragma omp critical (MagickCore_SetGrayscaleImage)
|
||||
#endif
|
||||
if (colormap_index[intensity] < 0)
|
||||
{
|
||||
@@ -3377,7 +3386,9 @@ static MagickBooleanType SetGrayscaleImage(Image *image,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
@@ -168,7 +168,7 @@ static MagickBooleanType AcquireQuantumPixels(QuantumInfo *quantum_info,
|
||||
|
||||
assert(quantum_info != (QuantumInfo *) NULL);
|
||||
assert(quantum_info->signature == MagickSignature);
|
||||
quantum_info->number_threads=GetOpenMPMaximumThreads();
|
||||
quantum_info->number_threads=GetMagickResourceLimit(ThreadResource);
|
||||
quantum_info->pixels=(unsigned char **) AcquireQuantumMemory(
|
||||
quantum_info->number_threads,sizeof(*quantum_info->pixels));
|
||||
if (quantum_info->pixels == (unsigned char **) NULL)
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
#include "MagickCore/resample.h"
|
||||
#include "MagickCore/resize.h"
|
||||
#include "MagickCore/resize-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/token.h"
|
||||
#include "MagickCore/transform.h"
|
||||
#include "MagickCore/signature-private.h"
|
||||
|
||||
+20
-10
@@ -66,6 +66,7 @@
|
||||
#include "MagickCore/resample-private.h"
|
||||
#include "MagickCore/resize.h"
|
||||
#include "MagickCore/resize-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/string-private.h"
|
||||
#include "MagickCore/thread-private.h"
|
||||
@@ -950,7 +951,8 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image,
|
||||
/* Define coefficents for Gaussian */
|
||||
resize_filter->coefficient[0]=value; /* note sigma too */
|
||||
resize_filter->coefficient[1]=1.0/(2.0*value*value); /* sigma scaling */
|
||||
resize_filter->coefficient[2]=1.0/(Magick2PI*value*value);
|
||||
resize_filter->coefficient[2]=(MagickRealType)
|
||||
(1.0/(Magick2PI*value*value));
|
||||
/* normalization - not actually needed or used! */
|
||||
if ( value > 0.5 )
|
||||
resize_filter->support *= value/0.5; /* increase support */
|
||||
@@ -1591,7 +1593,9 @@ MagickExport Image *InterpolativeResizeImage(const Image *image,
|
||||
scale.x=(double) image->columns/resize_image->columns;
|
||||
scale.y=(double) image->rows/resize_image->rows;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((resize_image->rows*resize_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) resize_image->rows; y++)
|
||||
{
|
||||
@@ -1650,7 +1654,7 @@ MagickExport Image *InterpolativeResizeImage(const Image *image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_InterpolativeResizeImage)
|
||||
#pragma omp critical (MagickCore_InterpolativeResizeImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,InterpolativeResizeImageTag,progress++,
|
||||
image->rows);
|
||||
@@ -2096,7 +2100,7 @@ static ContributionInfo **DestroyContributionThreadSet(
|
||||
i;
|
||||
|
||||
assert(contribution != (ContributionInfo **) NULL);
|
||||
for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (contribution[i] != (ContributionInfo *) NULL)
|
||||
contribution[i]=(ContributionInfo *) RelinquishAlignedMemory(
|
||||
contribution[i]);
|
||||
@@ -2115,7 +2119,7 @@ static ContributionInfo **AcquireContributionThreadSet(const size_t count)
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
contribution=(ContributionInfo **) AcquireQuantumMemory(number_threads,
|
||||
sizeof(*contribution));
|
||||
if (contribution == (ContributionInfo **) NULL)
|
||||
@@ -2199,7 +2203,9 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
resize_view=AcquireAuthenticCacheView(resize_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((resize_image->rows*resize_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (x=0; x < (ssize_t) resize_image->columns; x++)
|
||||
{
|
||||
@@ -2347,7 +2353,7 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_HorizontalFilter)
|
||||
#pragma omp critical (MagickCore_HorizontalFilter)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,ResizeImageTag,(*offset)++,span);
|
||||
if( IfMagickFalse(proceed) )
|
||||
@@ -2416,7 +2422,9 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
resize_view=AcquireAuthenticCacheView(resize_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) resize_image->rows; y++)
|
||||
{
|
||||
@@ -2562,7 +2570,7 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_VerticalFilter)
|
||||
#pragma omp critical (MagickCore_VerticalFilter)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,ResizeImageTag,(*offset)++,span);
|
||||
if( IfMagickFalse(proceed) )
|
||||
@@ -2770,7 +2778,9 @@ 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) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((sample_image->rows*sample_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) sample_image->rows; y++)
|
||||
{
|
||||
|
||||
@@ -1146,7 +1146,6 @@ MagickExport MagickBooleanType SetMagickResourceLimit(const ResourceType type,
|
||||
if (value != (char *) NULL)
|
||||
resource_info.thread_limit=MagickMin(limit,StringToSizeType(value,
|
||||
100.0));
|
||||
SetOpenMPMaximumThreads((int) resource_info.thread_limit);
|
||||
break;
|
||||
}
|
||||
case TimeResource:
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
#include "MagickCore/quantize.h"
|
||||
#include "MagickCore/quantum.h"
|
||||
#include "MagickCore/quantum-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/segment.h"
|
||||
#include "MagickCore/string_.h"
|
||||
|
||||
@@ -530,7 +531,9 @@ static MagickBooleanType Classify(Image *image,short **extrema,
|
||||
*/
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
+24
-8
@@ -572,7 +572,9 @@ static void RadonProjection(RadonInfo *source_cells,
|
||||
q=swap;
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4)
|
||||
#pragma omp parallel for schedule(static,4) \
|
||||
if ((p->width*p->height) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (x=0; x < (ssize_t) p->width; x++)
|
||||
{
|
||||
@@ -652,7 +654,9 @@ static MagickBooleanType RadonTransform(const Image *image,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -701,7 +705,9 @@ static MagickBooleanType RadonTransform(const Image *image,
|
||||
RadonProjection(source_cells,destination_cells,-1,projection);
|
||||
(void) ResetRadonCells(source_cells);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1023,7 +1029,9 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations,
|
||||
*/
|
||||
GetPixelCacheTileSize(image,&tile_width,&tile_height);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=(ssize_t) tile_height)
|
||||
{
|
||||
@@ -1147,7 +1155,9 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations,
|
||||
Rotate 180 degrees.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1243,7 +1253,9 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations,
|
||||
*/
|
||||
GetPixelCacheTileSize(image,&tile_width,&tile_height);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=(ssize_t) tile_height)
|
||||
{
|
||||
@@ -1445,7 +1457,9 @@ static MagickBooleanType XShearImage(Image *image,const MagickRealType degrees,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) height; y++)
|
||||
{
|
||||
@@ -1660,7 +1674,9 @@ static MagickBooleanType YShearImage(Image *image,const MagickRealType degrees,
|
||||
background=image->background_color;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (x=0; x < (ssize_t) width; x++)
|
||||
{
|
||||
|
||||
+25
-14
@@ -141,7 +141,7 @@ static PixelChannels **DestroyPixelThreadSet(PixelChannels **pixels)
|
||||
i;
|
||||
|
||||
assert(pixels != (PixelChannels **) NULL);
|
||||
for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (pixels[i] != (PixelChannels *) NULL)
|
||||
pixels[i]=(PixelChannels *) RelinquishMagickMemory(pixels[i]);
|
||||
pixels=(PixelChannels **) RelinquishMagickMemory(pixels);
|
||||
@@ -161,7 +161,7 @@ static PixelChannels **AcquirePixelThreadSet(const Image *image,
|
||||
length,
|
||||
number_threads;
|
||||
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
pixels=(PixelChannels **) AcquireQuantumMemory(number_threads,
|
||||
sizeof(*pixels));
|
||||
if (pixels == (PixelChannels **) NULL)
|
||||
@@ -506,7 +506,8 @@ MagickExport Image *EvaluateImages(const Image *images,
|
||||
{
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if (key == ~0UL) num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
if (((evaluate_image->rows*evaluate_image->columns) > 8192) && (key == ~0UL)) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) evaluate_image->rows; y++)
|
||||
{
|
||||
@@ -614,7 +615,8 @@ MagickExport Image *EvaluateImages(const Image *images,
|
||||
{
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if (key == ~0UL) num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
if (((evaluate_image->rows*evaluate_image->columns) > 8192) && (key == ~0UL)) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) evaluate_image->rows; y++)
|
||||
{
|
||||
@@ -820,7 +822,8 @@ MagickExport MagickBooleanType EvaluateImage(Image *image,
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if (key == ~0UL) num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
if (((image->rows*image->columns) > 8192) && (key == ~0UL)) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -878,7 +881,7 @@ MagickExport MagickBooleanType EvaluateImage(Image *image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_EvaluateImage)
|
||||
#pragma omp critical (MagickCore_EvaluateImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,EvaluateImageTag,progress++,image->rows);
|
||||
if (proceed == MagickFalse)
|
||||
@@ -1052,7 +1055,9 @@ MagickExport MagickBooleanType FunctionImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1107,7 +1112,7 @@ MagickExport MagickBooleanType FunctionImage(Image *image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_FunctionImage)
|
||||
#pragma omp critical (MagickCore_FunctionImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,FunctionImageTag,progress++,image->rows);
|
||||
if (proceed == MagickFalse)
|
||||
@@ -1315,7 +1320,9 @@ MagickExport MagickBooleanType GetImageKurtosis(const Image *image,
|
||||
sum_fourth_power=0.0;
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1443,7 +1450,9 @@ MagickExport MagickBooleanType GetImageRange(const Image *image,double *minima,
|
||||
*minima=MagickHuge;
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1813,7 +1822,7 @@ static PixelList **DestroyPixelListThreadSet(PixelList **pixel_list)
|
||||
i;
|
||||
|
||||
assert(pixel_list != (PixelList **) NULL);
|
||||
for (i=0; i < (ssize_t) GetOpenMPMaximumThreads(); i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (pixel_list[i] != (PixelList *) NULL)
|
||||
pixel_list[i]=DestroyPixelList(pixel_list[i]);
|
||||
pixel_list=(PixelList **) RelinquishMagickMemory(pixel_list);
|
||||
@@ -1852,7 +1861,7 @@ static PixelList **AcquirePixelListThreadSet(const size_t width,
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
pixel_list=(PixelList **) AcquireQuantumMemory(number_threads,
|
||||
sizeof(*pixel_list));
|
||||
if (pixel_list == (PixelList **) NULL)
|
||||
@@ -2264,7 +2273,9 @@ MagickExport Image *StatisticImage(const Image *image,const StatisticType type,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
statistic_view=AcquireAuthenticCacheView(statistic_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((statistic_image->rows*statistic_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) statistic_image->rows; y++)
|
||||
{
|
||||
@@ -2410,7 +2421,7 @@ MagickExport Image *StatisticImage(const Image *image,const StatisticType type,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_StatisticImage)
|
||||
#pragma omp critical (MagickCore_StatisticImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,StatisticImageTag,progress++,
|
||||
image->rows);
|
||||
|
||||
@@ -31,9 +31,6 @@ extern "C" {
|
||||
#define MagickCachePrefetch(address,mode,locality)
|
||||
#endif
|
||||
|
||||
#define omp_throttle(factor) num_threads(omp_get_max_threads() >> \
|
||||
(factor) == 0 ? 1 : omp_get_max_threads() >> (factor))
|
||||
|
||||
#if defined(MAGICKCORE_THREAD_SUPPORT)
|
||||
typedef pthread_mutex_t MagickMutexType;
|
||||
#elif defined(MAGICKCORE_WINDOWS_SUPPORT)
|
||||
@@ -97,20 +94,11 @@ static inline MagickBooleanType IsMagickThreadEqual(const MagickThreadType id)
|
||||
*/
|
||||
static inline size_t GetOpenMPMaximumThreads(void)
|
||||
{
|
||||
static size_t
|
||||
maximum_threads = 1;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
{
|
||||
ssize_t
|
||||
threads;
|
||||
|
||||
threads=omp_get_max_threads();
|
||||
if (threads > (ssize_t) maximum_threads)
|
||||
maximum_threads=threads;
|
||||
}
|
||||
return(omp_get_max_threads());
|
||||
#else
|
||||
return(1);
|
||||
#endif
|
||||
return(maximum_threads);
|
||||
}
|
||||
|
||||
static inline int GetOpenMPThreadId(void)
|
||||
|
||||
+25
-12
@@ -205,7 +205,9 @@ MagickExport Image *AdaptiveThresholdImage(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
threshold_view=AcquireAuthenticCacheView(threshold_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -304,7 +306,7 @@ MagickExport Image *AdaptiveThresholdImage(const Image *image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_AdaptiveThresholdImage)
|
||||
#pragma omp critical (MagickCore_AdaptiveThresholdImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,AdaptiveThresholdImageTag,progress++,
|
||||
image->rows);
|
||||
@@ -391,7 +393,9 @@ MagickExport MagickBooleanType BilevelImage(Image *image,const double threshold,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -443,7 +447,7 @@ MagickExport MagickBooleanType BilevelImage(Image *image,const double threshold,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_BilevelImage)
|
||||
#pragma omp critical (MagickCore_BilevelImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,ThresholdImageTag,progress++,
|
||||
image->rows);
|
||||
@@ -557,7 +561,9 @@ MagickExport MagickBooleanType BlackThresholdImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -699,7 +705,9 @@ MagickExport MagickBooleanType ClampImage(Image *image,ExceptionInfo *exception)
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -751,7 +759,7 @@ MagickExport MagickBooleanType ClampImage(Image *image,ExceptionInfo *exception)
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_ClampImage)
|
||||
#pragma omp critical (MagickCore_ClampImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,ClampImageTag,progress++,
|
||||
image->rows);
|
||||
@@ -1322,7 +1330,9 @@ MagickExport MagickBooleanType OrderedPosterizeImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1390,7 +1400,7 @@ MagickExport MagickBooleanType OrderedPosterizeImage(Image *image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_OrderedPosterizeImage)
|
||||
#pragma omp critical (MagickCore_OrderedPosterizeImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,DitherImageTag,progress++,image->rows);
|
||||
if (proceed == MagickFalse)
|
||||
@@ -1502,7 +1512,8 @@ MagickExport MagickBooleanType RandomThresholdImage(Image *image,
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status) \
|
||||
if (key == ~0UL) num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
if (((image->rows*image->columns) > 8192) && (key == ~0UL)) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -1569,7 +1580,7 @@ MagickExport MagickBooleanType RandomThresholdImage(Image *image,
|
||||
proceed;
|
||||
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp critical (MagickCore_RandomThresholdImage)
|
||||
#pragma omp critical (MagickCore_RandomThresholdImage)
|
||||
#endif
|
||||
proceed=SetImageProgress(image,ThresholdImageTag,progress++,
|
||||
image->rows);
|
||||
@@ -1684,7 +1695,9 @@ MagickExport MagickBooleanType WhiteThresholdImage(Image *image,
|
||||
progress=0;
|
||||
image_view=AcquireAuthenticCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,8) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
+33
-11
@@ -160,7 +160,9 @@ 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) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((extent.y*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) extent.y; y++)
|
||||
{
|
||||
@@ -230,7 +232,9 @@ MagickExport Image *ChopImage(const Image *image,const RectangleInfo *chop_info,
|
||||
Extract chop image.
|
||||
*/
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) (image->rows-(extent.y+extent.height)); y++)
|
||||
{
|
||||
@@ -585,7 +589,9 @@ 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) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((crop_image->rows*crop_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) crop_image->rows; y++)
|
||||
{
|
||||
@@ -946,7 +952,9 @@ MagickExport Image *ExcerptImage(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
excerpt_view=AcquireAuthenticCacheView(excerpt_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((excerpt_image->rows*excerpt_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) excerpt_image->rows; y++)
|
||||
{
|
||||
@@ -1153,7 +1161,9 @@ 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) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((flip_image->rows*flip_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) flip_image->rows; y++)
|
||||
{
|
||||
@@ -1299,7 +1309,9 @@ 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) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((flop_image->rows*flop_image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) flop_image->rows; y++)
|
||||
{
|
||||
@@ -1428,7 +1440,9 @@ static inline MagickBooleanType CopyImageRegion(Image *destination,
|
||||
source_view=AcquireVirtualCacheView(source,exception);
|
||||
destination_view=AcquireAuthenticCacheView(destination,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(status)
|
||||
#pragma omp parallel for schedule(static) shared(status) \
|
||||
if ((rows*columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) rows; y++)
|
||||
{
|
||||
@@ -1756,7 +1770,9 @@ MagickExport Image *SpliceImage(const Image *image,
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
splice_view=AcquireAuthenticCacheView(splice_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((splice_geometry.y*splice_geometry.x) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) splice_geometry.y; y++)
|
||||
{
|
||||
@@ -1860,7 +1876,9 @@ MagickExport Image *SpliceImage(const Image *image,
|
||||
}
|
||||
}
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((splice_geometry.y*splice_geometry.x) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=(ssize_t) (splice_geometry.y+splice_geometry.height);
|
||||
y < (ssize_t) splice_image->rows; y++)
|
||||
@@ -2211,7 +2229,9 @@ MagickExport Image *TransposeImage(const Image *image,ExceptionInfo *exception)
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
transpose_view=AcquireAuthenticCacheView(transpose_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
@@ -2360,7 +2380,9 @@ MagickExport Image *TransverseImage(const Image *image,ExceptionInfo *exception)
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
transverse_view=AcquireAuthenticCacheView(transverse_image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status)
|
||||
#pragma omp parallel for schedule(static,4) shared(progress,status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
@@ -175,7 +175,7 @@ WandExport MagickBooleanType MagickCommandGenesis(ImageInfo *image_info,
|
||||
}
|
||||
return(status);
|
||||
}
|
||||
number_threads=GetOpenMPMaximumThreads();
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
serial=0.0;
|
||||
for (n=1; n <= (ssize_t) number_threads; n++)
|
||||
{
|
||||
|
||||
+57
-57
@@ -80,9 +80,6 @@ struct _WandView
|
||||
CacheView
|
||||
*view;
|
||||
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
PixelWand
|
||||
***pixel_wands;
|
||||
|
||||
@@ -143,10 +140,9 @@ WandExport WandView *CloneWandView(const WandView *wand_view)
|
||||
wand_view->exception);
|
||||
clone_view->view=CloneCacheView(wand_view->view);
|
||||
clone_view->extent=wand_view->extent;
|
||||
clone_view->number_threads=wand_view->number_threads;
|
||||
clone_view->exception=AcquireExceptionInfo();
|
||||
InheritException(clone_view->exception,wand_view->exception);
|
||||
for (i=0; i < (ssize_t) wand_view->number_threads; i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
clone_view->pixel_wands[i]=ClonePixelWands((const PixelWand **)
|
||||
wand_view->pixel_wands[i],wand_view->extent.width);
|
||||
clone_view->debug=wand_view->debug;
|
||||
@@ -180,13 +176,13 @@ WandExport WandView *CloneWandView(const WandView *wand_view)
|
||||
*/
|
||||
|
||||
static PixelWand ***DestroyPixelsThreadSet(PixelWand ***pixel_wands,
|
||||
const size_t number_wands,const size_t number_threads)
|
||||
const size_t number_wands)
|
||||
{
|
||||
register ssize_t
|
||||
i;
|
||||
|
||||
assert(pixel_wands != (PixelWand ***) NULL);
|
||||
for (i=0; i < (ssize_t) number_threads; i++)
|
||||
for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
|
||||
if (pixel_wands[i] != (PixelWand **) NULL)
|
||||
pixel_wands[i]=DestroyPixelWands(pixel_wands[i],number_wands);
|
||||
pixel_wands=(PixelWand ***) RelinquishMagickMemory(pixel_wands);
|
||||
@@ -198,7 +194,7 @@ WandExport WandView *DestroyWandView(WandView *wand_view)
|
||||
assert(wand_view != (WandView *) NULL);
|
||||
assert(wand_view->signature == WandSignature);
|
||||
wand_view->pixel_wands=DestroyPixelsThreadSet(wand_view->pixel_wands,
|
||||
wand_view->extent.width,wand_view->number_threads);
|
||||
wand_view->extent.width);
|
||||
wand_view->image=DestroyImage(wand_view->image);
|
||||
wand_view->view=DestroyCacheView(wand_view->view);
|
||||
wand_view->exception=DestroyExceptionInfo(wand_view->exception);
|
||||
@@ -273,6 +269,10 @@ WandExport MagickBooleanType DuplexTransferWandViewIterator(WandView *source,
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -288,8 +288,12 @@ WandExport MagickBooleanType DuplexTransferWandViewIterator(WandView *source,
|
||||
return(MagickFalse);
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=source->extent.height-source->extent.y;
|
||||
width=source->extent.width-source->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(source->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
|
||||
{
|
||||
@@ -524,6 +528,10 @@ WandExport MagickBooleanType GetWandViewIterator(WandView *source,
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -534,8 +542,12 @@ WandExport MagickBooleanType GetWandViewIterator(WandView *source,
|
||||
source_image=source->wand->images;
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=source->extent.height-source->extent.y;
|
||||
width=source->extent.width-source->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(source->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
|
||||
{
|
||||
@@ -704,8 +716,7 @@ WandExport MagickBooleanType IsWandView(const WandView *wand_view)
|
||||
%
|
||||
*/
|
||||
|
||||
static PixelWand ***AcquirePixelsThreadSet(const size_t number_wands,
|
||||
const size_t number_threads)
|
||||
static PixelWand ***AcquirePixelsThreadSet(const size_t number_wands)
|
||||
{
|
||||
PixelWand
|
||||
***pixel_wands;
|
||||
@@ -713,6 +724,10 @@ static PixelWand ***AcquirePixelsThreadSet(const size_t number_wands,
|
||||
register ssize_t
|
||||
i;
|
||||
|
||||
size_t
|
||||
number_threads;
|
||||
|
||||
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
|
||||
pixel_wands=(PixelWand ***) AcquireQuantumMemory(number_threads,
|
||||
sizeof(*pixel_wands));
|
||||
if (pixel_wands == (PixelWand ***) NULL)
|
||||
@@ -722,7 +737,7 @@ static PixelWand ***AcquirePixelsThreadSet(const size_t number_wands,
|
||||
{
|
||||
pixel_wands[i]=NewPixelWands(number_wands);
|
||||
if (pixel_wands[i] == (PixelWand **) NULL)
|
||||
return(DestroyPixelsThreadSet(pixel_wands,number_wands,number_threads));
|
||||
return(DestroyPixelsThreadSet(pixel_wands,number_wands));
|
||||
}
|
||||
return(pixel_wands);
|
||||
}
|
||||
@@ -751,9 +766,7 @@ WandExport WandView *NewWandView(MagickWand *wand)
|
||||
wand_view->view=AcquireVirtualCacheView(wand_view->wand->images,exception);
|
||||
wand_view->extent.width=wand->images->columns;
|
||||
wand_view->extent.height=wand->images->rows;
|
||||
wand_view->number_threads=GetOpenMPMaximumThreads();
|
||||
wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->extent.width,
|
||||
wand_view->number_threads);
|
||||
wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->extent.width);
|
||||
wand_view->exception=exception;
|
||||
if (wand_view->pixel_wands == (PixelWand ***) NULL)
|
||||
ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
|
||||
@@ -817,10 +830,8 @@ WandExport WandView *NewWandViewExtent(MagickWand *wand,const ssize_t x,
|
||||
wand_view->extent.height=height;
|
||||
wand_view->extent.x=x;
|
||||
wand_view->extent.y=y;
|
||||
wand_view->number_threads=GetOpenMPMaximumThreads();
|
||||
wand_view->exception=exception;
|
||||
wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->extent.width,
|
||||
wand_view->number_threads);
|
||||
wand_view->pixel_wands=AcquirePixelsThreadSet(wand_view->extent.width);
|
||||
if (wand_view->pixel_wands == (PixelWand ***) NULL)
|
||||
ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
|
||||
GetExceptionMessage(errno));
|
||||
@@ -917,6 +928,10 @@ WandExport MagickBooleanType SetWandViewIterator(WandView *destination,
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -931,8 +946,12 @@ WandExport MagickBooleanType SetWandViewIterator(WandView *destination,
|
||||
return(MagickFalse);
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=destination->extent.height-destination->extent.y;
|
||||
width=destination->extent.width-destination->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(destination->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=destination->extent.y; y < (ssize_t) destination->extent.height; y++)
|
||||
{
|
||||
@@ -990,41 +1009,6 @@ WandExport MagickBooleanType SetWandViewIterator(WandView *destination,
|
||||
% %
|
||||
% %
|
||||
% %
|
||||
% S e t W a n d V i e w T h r e a d s %
|
||||
% %
|
||||
% %
|
||||
% %
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%
|
||||
% SetWandViewThreads() sets the number of threads in a thread team.
|
||||
%
|
||||
% The format of the SetWandViewDescription method is:
|
||||
%
|
||||
% void SetWandViewThreads(WandView *image_view,
|
||||
% const size_t number_threads)
|
||||
%
|
||||
% A description of each parameter follows:
|
||||
%
|
||||
% o image_view: the image view.
|
||||
%
|
||||
% o number_threads: the number of threads in a thread team.
|
||||
%
|
||||
*/
|
||||
MagickExport void SetWandViewThreads(WandView *image_view,
|
||||
const size_t number_threads)
|
||||
{
|
||||
assert(image_view != (WandView *) NULL);
|
||||
assert(image_view->signature == MagickSignature);
|
||||
image_view->number_threads=number_threads;
|
||||
if (number_threads > GetOpenMPMaximumThreads())
|
||||
image_view->number_threads=GetOpenMPMaximumThreads();
|
||||
}
|
||||
|
||||
/*
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% %
|
||||
% %
|
||||
% %
|
||||
% T r a n s f e r W a n d V i e w I t e r a t o r %
|
||||
% %
|
||||
% %
|
||||
@@ -1081,6 +1065,10 @@ WandExport MagickBooleanType TransferWandViewIterator(WandView *source,
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -1096,8 +1084,12 @@ WandExport MagickBooleanType TransferWandViewIterator(WandView *source,
|
||||
return(MagickFalse);
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=source->extent.height-source->extent.y;
|
||||
width=source->extent.width-source->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(source->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
|
||||
{
|
||||
@@ -1230,6 +1222,10 @@ WandExport MagickBooleanType UpdateWandViewIterator(WandView *source,
|
||||
MagickOffsetType
|
||||
progress;
|
||||
|
||||
size_t
|
||||
height,
|
||||
width;
|
||||
|
||||
ssize_t
|
||||
y;
|
||||
|
||||
@@ -1243,8 +1239,12 @@ WandExport MagickBooleanType UpdateWandViewIterator(WandView *source,
|
||||
return(MagickFalse);
|
||||
status=MagickTrue;
|
||||
progress=0;
|
||||
height=source->extent.height-source->extent.y;
|
||||
width=source->extent.width-source->extent.x;
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) num_threads(source->number_threads)
|
||||
#pragma omp parallel for schedule(static) shared(progress,status) \
|
||||
if ((height*width) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=source->extent.y; y < (ssize_t) source->extent.height; y++)
|
||||
{
|
||||
|
||||
+4
-1
@@ -56,6 +56,7 @@
|
||||
#include "MagickCore/monitor-private.h"
|
||||
#include "MagickCore/pixel-accessor.h"
|
||||
#include "MagickCore/quantum-private.h"
|
||||
#include "MagickCore/resource_.h"
|
||||
#include "MagickCore/static.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/string-private.h"
|
||||
@@ -124,7 +125,9 @@ static Image *ReadHALDImage(const ImageInfo *image_info,
|
||||
image->columns=(size_t) (level*cube_size);
|
||||
image->rows=(size_t) (level*cube_size);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,8) shared(status)
|
||||
#pragma omp parallel for schedule(static,8) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y+=(ssize_t) level)
|
||||
{
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<delegate decode="https" command=""curl" -s -k -o "%o" "https:%M""/>
|
||||
<delegate decode="ilbm" command=""ilbmtoppm" "%i" > "%o""/>
|
||||
<delegate decode="man" command=""groff" -man -Tps "%i" > "%o""/>
|
||||
<delegate decode="mpeg:decode" command=""ffmpeg" -v -1 -vframes %S -i "%i" -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z""/>
|
||||
<delegate decode="mpeg:decode" command=""ffmpeg" -v -1 -i "%i" -vframes %S -vcodec pam -an -f rawvideo -y "%u.pam" 2> "%Z""/>
|
||||
<delegate encode="mpeg:encode" stealth="True" command=""ffmpeg" -v -1 -mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 300 -i "%M%%d.jpg" "%u.%m" 2> "%Z""/>
|
||||
<delegate decode="sid" command=""mrsidgeodecode" -if sid -i "%i" -of tif -o "%o" > "%u""/>
|
||||
<delegate decode="pcl:color" stealth="True" command=""pcl6" -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=ppmraw" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "%s""/>
|
||||
@@ -89,7 +89,7 @@
|
||||
<delegate decode="pdf" encode="ps" mode="bi" command=""gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pswrite" "-sOutputFile=%o" "-f%i""/>
|
||||
<delegate decode="tiff" encode="launch" mode="encode" command=""gimp" "%i""/>
|
||||
<delegate decode="pnm" encode="ilbm" mode="encode" command=""ppmtoilbm" -24if "%i" > "%o""/>
|
||||
<delegate decode="pov" command=""povray" "+i%i" -D0 "+o%o" +fn%q +w%w +h%h +a -q9 -kfi%s -kff%n\n"convert" -concatenate "%o*.png" "%o""/>
|
||||
<delegate decode="pov" command=""povray" "+i%i" -D0 "+o%o" +fn%q +w%w +h%h +a -q9 "-kfi%s" "-kff%n";"convert" -concatenate "%o*.png" "%o""/>
|
||||
<delegate decode="ps" encode="eps" mode="bi" command=""gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=epswrite" "-sOutputFile=%o" "-f%i""/>
|
||||
<delegate decode="ps" encode="pdf" mode="bi" command=""gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pdfwrite" "-sOutputFile=%o" "-f%i""/>
|
||||
<delegate decode="ps" encode="print" mode="encode" command="lpr "%i""/>
|
||||
|
||||
+3
-1
@@ -145,7 +145,9 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,
|
||||
status=MagickTrue;
|
||||
image_view=AcquireVirtualCacheView(image,exception);
|
||||
#if defined(MAGICKCORE_OPENMP_SUPPORT)
|
||||
#pragma omp parallel for schedule(static,4) shared(status)
|
||||
#pragma omp parallel for schedule(static,4) shared(status) \
|
||||
if ((image->rows*image->columns) > 8192) \
|
||||
num_threads(GetMagickResourceLimit(ThreadResource))
|
||||
#endif
|
||||
for (y=0; y < (ssize_t) image->rows; y++)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user