Lines Matching refs:clEnv

196 static inline void RelinquishMagickCLDevices(MagickCLEnv clEnv)  in RelinquishMagickCLDevices()  argument
201 if (clEnv->devices != (MagickCLDevice *) NULL) in RelinquishMagickCLDevices()
203 for (i = 0; i < clEnv->number_devices; i++) in RelinquishMagickCLDevices()
204 clEnv->devices[i]=RelinquishMagickCLDevice(clEnv->devices[i]); in RelinquishMagickCLDevices()
205 clEnv->devices=(MagickCLDevice *) RelinquishMagickMemory(clEnv->devices); in RelinquishMagickCLDevices()
207 clEnv->number_devices=0; in RelinquishMagickCLDevices()
382 static void SelectOpenCLDevice(MagickCLEnv clEnv,cl_device_type type) in SelectOpenCLDevice() argument
393 for (i = 0; i < clEnv->number_devices; i++) in SelectOpenCLDevice()
394 clEnv->devices[i]->enabled=MagickFalse; in SelectOpenCLDevice()
396 for (i = 0; i < clEnv->number_devices; i++) in SelectOpenCLDevice()
398 device=clEnv->devices[i]; in SelectOpenCLDevice()
405 for (j = i+1; j < clEnv->number_devices; j++) in SelectOpenCLDevice()
410 other_device=clEnv->devices[j]; in SelectOpenCLDevice()
617 clEnv; in AcquireMagickCLEnv() local
619 clEnv=(MagickCLEnv) AcquireMagickMemory(sizeof(*clEnv)); in AcquireMagickCLEnv()
620 if (clEnv != (MagickCLEnv) NULL) in AcquireMagickCLEnv()
622 (void) memset(clEnv,0,sizeof(*clEnv)); in AcquireMagickCLEnv()
623 ActivateSemaphoreInfo(&clEnv->lock); in AcquireMagickCLEnv()
624 clEnv->cpu_score=MAGICKCORE_OPENCL_UNDEFINED_SCORE; in AcquireMagickCLEnv()
625 clEnv->enabled=MagickFalse; in AcquireMagickCLEnv()
632 clEnv->enabled=MagickTrue; in AcquireMagickCLEnv()
635 return clEnv; in AcquireMagickCLEnv()
757 static void LoadOpenCLDeviceBenchmark(MagickCLEnv clEnv,const char *xml) in LoadOpenCLDeviceBenchmark() argument
825 clEnv->cpu_score=device_benchmark->score; in LoadOpenCLDeviceBenchmark()
834 for (i = 0; i < clEnv->number_devices; i++) in LoadOpenCLDeviceBenchmark()
836 device=clEnv->devices[i]; in LoadOpenCLDeviceBenchmark()
933 static MagickBooleanType LoadOpenCLBenchmarks(MagickCLEnv clEnv) in LoadOpenCLBenchmarks() argument
955 for (i = 0; i < clEnv->number_devices; i++) in LoadOpenCLBenchmarks()
956 clEnv->devices[i]->score=1.0; in LoadOpenCLBenchmarks()
958 SelectOpenCLDevice(clEnv,CL_DEVICE_TYPE_GPU); in LoadOpenCLBenchmarks()
963 LoadOpenCLDeviceBenchmark(clEnv,(const char *) GetStringInfoDatum(option)); in LoadOpenCLBenchmarks()
969 static void AutoSelectOpenCLDevices(MagickCLEnv clEnv) in AutoSelectOpenCLDevices() argument
987 SelectOpenCLDevice(clEnv,CL_DEVICE_TYPE_GPU); in AutoSelectOpenCLDevices()
989 SelectOpenCLDevice(clEnv,CL_DEVICE_TYPE_CPU); in AutoSelectOpenCLDevices()
992 if (LoadOpenCLBenchmarks(clEnv) == MagickFalse) in AutoSelectOpenCLDevices()
996 if (clEnv->cpu_score == MAGICKCORE_OPENCL_UNDEFINED_SCORE) in AutoSelectOpenCLDevices()
1000 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
1002 if (clEnv->devices[i]->score == MAGICKCORE_OPENCL_UNDEFINED_SCORE) in AutoSelectOpenCLDevices()
1011 BenchmarkOpenCLDevices(clEnv); in AutoSelectOpenCLDevices()
1013 best_score=clEnv->cpu_score; in AutoSelectOpenCLDevices()
1014 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
1015 best_score=MagickMin(clEnv->devices[i]->score,best_score); in AutoSelectOpenCLDevices()
1017 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
1019 if (clEnv->devices[i]->score != best_score) in AutoSelectOpenCLDevices()
1020 clEnv->devices[i]->enabled=MagickFalse; in AutoSelectOpenCLDevices()
1119 static void RunDeviceBenckmark(MagickCLEnv clEnv,MagickCLEnv testEnv, in RunDeviceBenckmark() argument
1125 default_CLEnv=clEnv; in RunDeviceBenckmark()
1129 static void CacheOpenCLBenchmarks(MagickCLEnv clEnv) in CacheOpenCLBenchmarks() argument
1153 clEnv->cpu_score); in CacheOpenCLBenchmarks()
1154 for (i = 0; i < clEnv->number_devices; i++) in CacheOpenCLBenchmarks()
1159 device=clEnv->devices[i]; in CacheOpenCLBenchmarks()
1163 if (IsSameOpenCLDevice(clEnv->devices[j],device)) in CacheOpenCLBenchmarks()
1186 static void BenchmarkOpenCLDevices(MagickCLEnv clEnv) in BenchmarkOpenCLDevices() argument
1208 for (i = 0; i < clEnv->number_devices; i++) in BenchmarkOpenCLDevices()
1209 clEnv->devices[i]->score=MAGICKCORE_OPENCL_UNDEFINED_SCORE; in BenchmarkOpenCLDevices()
1211 for (i = 0; i < clEnv->number_devices; i++) in BenchmarkOpenCLDevices()
1213 device=clEnv->devices[i]; in BenchmarkOpenCLDevices()
1215 RunDeviceBenckmark(clEnv,testEnv,device); in BenchmarkOpenCLDevices()
1218 for (j = i+1; j < clEnv->number_devices; j++) in BenchmarkOpenCLDevices()
1223 other_device=clEnv->devices[j]; in BenchmarkOpenCLDevices()
1231 clEnv->cpu_score=RunOpenCLBenchmark(MagickTrue); in BenchmarkOpenCLDevices()
1232 default_CLEnv=clEnv; in BenchmarkOpenCLDevices()
1235 CacheOpenCLBenchmarks(clEnv); in BenchmarkOpenCLDevices()
1949 clEnv; in GetOpenCLDevices() local
1951 clEnv=GetCurrentOpenCLEnv(); in GetOpenCLDevices()
1952 if (clEnv == (MagickCLEnv) NULL) in GetOpenCLDevices()
1958 InitializeOpenCL(clEnv,exception); in GetOpenCLDevices()
1960 *length=clEnv->number_devices; in GetOpenCLDevices()
1961 return(clEnv->devices); in GetOpenCLDevices()
2049 clEnv; in GetOpenCLEnabled() local
2051 clEnv=GetCurrentOpenCLEnv(); in GetOpenCLEnabled()
2052 if (clEnv == (MagickCLEnv) NULL) in GetOpenCLEnabled()
2054 return(clEnv->enabled); in GetOpenCLEnabled()
2129 static MagickBooleanType HasOpenCLDevices(MagickCLEnv clEnv, in HasOpenCLDevices() argument
2146 for (i = 0; i < clEnv->number_devices; i++) in HasOpenCLDevices()
2148 if ((clEnv->devices[i]->enabled != MagickFalse)) in HasOpenCLDevices()
2151 if (i == clEnv->number_devices) in HasOpenCLDevices()
2156 for (i = 0; i < clEnv->number_devices; i++) in HasOpenCLDevices()
2158 if ((clEnv->devices[i]->enabled != MagickFalse) && in HasOpenCLDevices()
2159 (clEnv->devices[i]->program == (cl_program) NULL)) in HasOpenCLDevices()
2183 for (i = 0; i < clEnv->number_devices; i++) in HasOpenCLDevices()
2191 device=clEnv->devices[i]; in HasOpenCLDevices()
2238 static cl_uint GetOpenCLDeviceCount(MagickCLEnv clEnv,cl_platform_id platform) in GetOpenCLDeviceCount() argument
2246 if (clEnv->library->clGetPlatformInfo(platform,CL_PLATFORM_VERSION, in GetOpenCLDeviceCount()
2251 if (clEnv->library->clGetDeviceIDs(platform, in GetOpenCLDeviceCount()
2287 static void LoadOpenCLDevices(MagickCLEnv clEnv) in LoadOpenCLDevices() argument
2332 number_devices=GetOpenCLDeviceCount(clEnv,platforms[i]); in LoadOpenCLDevices()
2333 clEnv->number_devices+=number_devices; in LoadOpenCLDevices()
2339 if (clEnv->number_devices == 0) in LoadOpenCLDevices()
2344 clEnv->devices=(MagickCLDevice *) AcquireQuantumMemory(clEnv->number_devices, in LoadOpenCLDevices()
2346 if (clEnv->devices == (MagickCLDevice *) NULL) in LoadOpenCLDevices()
2348 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2352 (void) memset(clEnv->devices,0,clEnv->number_devices*sizeof(MagickCLDevice)); in LoadOpenCLDevices()
2353 devices=(cl_device_id *) AcquireQuantumMemory(clEnv->number_devices, in LoadOpenCLDevices()
2358 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2361 (void) memset(devices,0,clEnv->number_devices*sizeof(cl_device_id)); in LoadOpenCLDevices()
2362 clEnv->number_contexts=(size_t) number_platforms; in LoadOpenCLDevices()
2363 clEnv->contexts=(cl_context *) AcquireQuantumMemory(clEnv->number_contexts, in LoadOpenCLDevices()
2365 if (clEnv->contexts == (cl_context *) NULL) in LoadOpenCLDevices()
2369 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2372 (void) memset(clEnv->contexts,0,clEnv->number_contexts*sizeof(cl_context)); in LoadOpenCLDevices()
2379 status=clEnv->library->clGetDeviceIDs(platforms[i],CL_DEVICE_TYPE_CPU | in LoadOpenCLDevices()
2380 CL_DEVICE_TYPE_GPU,(cl_uint) clEnv->number_devices,devices,&number_devices); in LoadOpenCLDevices()
2387 clEnv->contexts[i]=openCL_library->clCreateContext(properties,number_devices, in LoadOpenCLDevices()
2401 device->context=clEnv->contexts[i]; in LoadOpenCLDevices()
2426 clEnv->devices[next]=device; in LoadOpenCLDevices()
2431 if (next != clEnv->number_devices) in LoadOpenCLDevices()
2432 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2437 MagickPrivate MagickBooleanType InitializeOpenCL(MagickCLEnv clEnv, in InitializeOpenCL() argument
2443 LockSemaphoreInfo(clEnv->lock); in InitializeOpenCL()
2444 if (clEnv->initialized != MagickFalse) in InitializeOpenCL()
2446 UnlockSemaphoreInfo(clEnv->lock); in InitializeOpenCL()
2447 return(HasOpenCLDevices(clEnv,exception)); in InitializeOpenCL()
2451 clEnv->library=openCL_library; in InitializeOpenCL()
2452 LoadOpenCLDevices(clEnv); in InitializeOpenCL()
2453 if (clEnv->number_devices > 0) in InitializeOpenCL()
2454 AutoSelectOpenCLDevices(clEnv); in InitializeOpenCL()
2456 clEnv->initialized=MagickTrue; in InitializeOpenCL()
2458 for (i=0; i < (ssize_t) clEnv->number_devices; i++) in InitializeOpenCL()
2460 if (strncmp(clEnv->devices[i]->platform_name,"NVIDIA",6) == 0) in InitializeOpenCL()
2461 clEnv->devices[i]->enabled=MagickFalse; in InitializeOpenCL()
2463 UnlockSemaphoreInfo(clEnv->lock); in InitializeOpenCL()
2464 return(HasOpenCLDevices(clEnv,exception)); in InitializeOpenCL()
3033 static MagickCLEnv RelinquishMagickCLEnv(MagickCLEnv clEnv) in RelinquishMagickCLEnv() argument
3035 if (clEnv == (MagickCLEnv) NULL) in RelinquishMagickCLEnv()
3038 RelinquishSemaphoreInfo(&clEnv->lock); in RelinquishMagickCLEnv()
3039 RelinquishMagickCLDevices(clEnv); in RelinquishMagickCLEnv()
3040 if (clEnv->contexts != (cl_context *) NULL) in RelinquishMagickCLEnv()
3045 for (i=0; i < clEnv->number_contexts; i++) in RelinquishMagickCLEnv()
3046 if (clEnv->contexts[i] != (cl_context) NULL) in RelinquishMagickCLEnv()
3047 (void) openCL_library->clReleaseContext(clEnv->contexts[i]); in RelinquishMagickCLEnv()
3048 clEnv->contexts=(cl_context *) RelinquishMagickMemory(clEnv->contexts); in RelinquishMagickCLEnv()
3050 return((MagickCLEnv) RelinquishMagickMemory(clEnv)); in RelinquishMagickCLEnv()
3075 MagickPrivate MagickCLDevice RequestOpenCLDevice(MagickCLEnv clEnv) in RequestOpenCLDevice() argument
3087 if (clEnv == (MagickCLEnv) NULL) in RequestOpenCLDevice()
3090 if (clEnv->number_devices == 1) in RequestOpenCLDevice()
3092 if (clEnv->devices[0]->enabled) in RequestOpenCLDevice()
3093 return(clEnv->devices[0]); in RequestOpenCLDevice()
3101 for (i = 0; i < clEnv->number_devices; i++) in RequestOpenCLDevice()
3103 if (clEnv->devices[i]->enabled == MagickFalse) in RequestOpenCLDevice()
3106 score=clEnv->devices[i]->score+(clEnv->devices[i]->score* in RequestOpenCLDevice()
3107 clEnv->devices[i]->requested); in RequestOpenCLDevice()
3110 device=clEnv->devices[i]; in RequestOpenCLDevice()
3214 clEnv; in SetOpenCLEnabled() local
3216 clEnv=GetCurrentOpenCLEnv(); in SetOpenCLEnabled()
3217 if (clEnv == (MagickCLEnv) NULL) in SetOpenCLEnabled()
3219 clEnv->enabled=value; in SetOpenCLEnabled()
3220 return(clEnv->enabled); in SetOpenCLEnabled()