Lines Matching refs:clEnv
200 static inline void RelinquishMagickCLDevices(MagickCLEnv clEnv) in RelinquishMagickCLDevices() argument
205 if (clEnv->devices != (MagickCLDevice *) NULL) in RelinquishMagickCLDevices()
207 for (i = 0; i < clEnv->number_devices; i++) in RelinquishMagickCLDevices()
208 clEnv->devices[i]=RelinquishMagickCLDevice(clEnv->devices[i]); in RelinquishMagickCLDevices()
209 clEnv->devices=(MagickCLDevice *) RelinquishMagickMemory(clEnv->devices); in RelinquishMagickCLDevices()
211 clEnv->number_devices=0; in RelinquishMagickCLDevices()
386 static void SelectOpenCLDevice(MagickCLEnv clEnv,cl_device_type type) in SelectOpenCLDevice() argument
397 for (i = 0; i < clEnv->number_devices; i++) in SelectOpenCLDevice()
398 clEnv->devices[i]->enabled=MagickFalse; in SelectOpenCLDevice()
400 for (i = 0; i < clEnv->number_devices; i++) in SelectOpenCLDevice()
402 device=clEnv->devices[i]; in SelectOpenCLDevice()
409 for (j = i+1; j < clEnv->number_devices; j++) in SelectOpenCLDevice()
414 other_device=clEnv->devices[j]; in SelectOpenCLDevice()
621 clEnv; in AcquireMagickCLEnv() local
623 clEnv=(MagickCLEnv) AcquireMagickMemory(sizeof(*clEnv)); in AcquireMagickCLEnv()
624 if (clEnv != (MagickCLEnv) NULL) in AcquireMagickCLEnv()
626 (void) memset(clEnv,0,sizeof(*clEnv)); in AcquireMagickCLEnv()
627 ActivateSemaphoreInfo(&clEnv->lock); in AcquireMagickCLEnv()
628 clEnv->cpu_score=MAGICKCORE_OPENCL_UNDEFINED_SCORE; in AcquireMagickCLEnv()
629 clEnv->enabled=MagickFalse; in AcquireMagickCLEnv()
636 clEnv->enabled=MagickTrue; in AcquireMagickCLEnv()
639 return clEnv; in AcquireMagickCLEnv()
761 static void LoadOpenCLDeviceBenchmark(MagickCLEnv clEnv,const char *xml) in LoadOpenCLDeviceBenchmark() argument
829 clEnv->cpu_score=device_benchmark->score; in LoadOpenCLDeviceBenchmark()
838 for (i = 0; i < clEnv->number_devices; i++) in LoadOpenCLDeviceBenchmark()
840 device=clEnv->devices[i]; in LoadOpenCLDeviceBenchmark()
937 static MagickBooleanType LoadOpenCLBenchmarks(MagickCLEnv clEnv) in LoadOpenCLBenchmarks() argument
959 for (i = 0; i < clEnv->number_devices; i++) in LoadOpenCLBenchmarks()
960 clEnv->devices[i]->score=1.0; in LoadOpenCLBenchmarks()
962 SelectOpenCLDevice(clEnv,CL_DEVICE_TYPE_GPU); in LoadOpenCLBenchmarks()
967 LoadOpenCLDeviceBenchmark(clEnv,(const char *) GetStringInfoDatum(option)); in LoadOpenCLBenchmarks()
972 static void AutoSelectOpenCLDevices(MagickCLEnv clEnv) in AutoSelectOpenCLDevices() argument
990 SelectOpenCLDevice(clEnv,CL_DEVICE_TYPE_GPU); in AutoSelectOpenCLDevices()
992 SelectOpenCLDevice(clEnv,CL_DEVICE_TYPE_CPU); in AutoSelectOpenCLDevices()
995 if (LoadOpenCLBenchmarks(clEnv) == MagickFalse) in AutoSelectOpenCLDevices()
999 if (clEnv->cpu_score == MAGICKCORE_OPENCL_UNDEFINED_SCORE) in AutoSelectOpenCLDevices()
1003 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
1005 if (clEnv->devices[i]->score == MAGICKCORE_OPENCL_UNDEFINED_SCORE) in AutoSelectOpenCLDevices()
1014 BenchmarkOpenCLDevices(clEnv); in AutoSelectOpenCLDevices()
1016 best_score=clEnv->cpu_score; in AutoSelectOpenCLDevices()
1017 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
1018 best_score=MagickMin(clEnv->devices[i]->score,best_score); in AutoSelectOpenCLDevices()
1020 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
1022 if (clEnv->devices[i]->score != best_score) in AutoSelectOpenCLDevices()
1023 clEnv->devices[i]->enabled=MagickFalse; in AutoSelectOpenCLDevices()
1122 static void RunDeviceBenckmark(MagickCLEnv clEnv,MagickCLEnv testEnv, in RunDeviceBenckmark() argument
1128 default_CLEnv=clEnv; in RunDeviceBenckmark()
1132 static void CacheOpenCLBenchmarks(MagickCLEnv clEnv) in CacheOpenCLBenchmarks() argument
1156 clEnv->cpu_score); in CacheOpenCLBenchmarks()
1157 for (i = 0; i < clEnv->number_devices; i++) in CacheOpenCLBenchmarks()
1162 device=clEnv->devices[i]; in CacheOpenCLBenchmarks()
1166 if (IsSameOpenCLDevice(clEnv->devices[j],device)) in CacheOpenCLBenchmarks()
1189 static void BenchmarkOpenCLDevices(MagickCLEnv clEnv) in BenchmarkOpenCLDevices() argument
1211 for (i = 0; i < clEnv->number_devices; i++) in BenchmarkOpenCLDevices()
1212 clEnv->devices[i]->score=MAGICKCORE_OPENCL_UNDEFINED_SCORE; in BenchmarkOpenCLDevices()
1214 for (i = 0; i < clEnv->number_devices; i++) in BenchmarkOpenCLDevices()
1216 device=clEnv->devices[i]; in BenchmarkOpenCLDevices()
1218 RunDeviceBenckmark(clEnv,testEnv,device); in BenchmarkOpenCLDevices()
1221 for (j = i+1; j < clEnv->number_devices; j++) in BenchmarkOpenCLDevices()
1226 other_device=clEnv->devices[j]; in BenchmarkOpenCLDevices()
1234 clEnv->cpu_score=RunOpenCLBenchmark(MagickTrue); in BenchmarkOpenCLDevices()
1235 default_CLEnv=clEnv; in BenchmarkOpenCLDevices()
1238 CacheOpenCLBenchmarks(clEnv); in BenchmarkOpenCLDevices()
1952 clEnv; in GetOpenCLDevices() local
1954 clEnv=GetCurrentOpenCLEnv(); in GetOpenCLDevices()
1955 if (clEnv == (MagickCLEnv) NULL) in GetOpenCLDevices()
1961 InitializeOpenCL(clEnv,exception); in GetOpenCLDevices()
1963 *length=clEnv->number_devices; in GetOpenCLDevices()
1964 return(clEnv->devices); in GetOpenCLDevices()
2052 clEnv; in GetOpenCLEnabled() local
2054 clEnv=GetCurrentOpenCLEnv(); in GetOpenCLEnabled()
2055 if (clEnv == (MagickCLEnv) NULL) in GetOpenCLEnabled()
2057 return(clEnv->enabled); in GetOpenCLEnabled()
2132 static MagickBooleanType HasOpenCLDevices(MagickCLEnv clEnv, in HasOpenCLDevices() argument
2149 for (i = 0; i < clEnv->number_devices; i++) in HasOpenCLDevices()
2151 if ((clEnv->devices[i]->enabled != MagickFalse)) in HasOpenCLDevices()
2154 if (i == clEnv->number_devices) in HasOpenCLDevices()
2159 for (i = 0; i < clEnv->number_devices; i++) in HasOpenCLDevices()
2161 if ((clEnv->devices[i]->enabled != MagickFalse) && in HasOpenCLDevices()
2162 (clEnv->devices[i]->program == (cl_program) NULL)) in HasOpenCLDevices()
2186 for (i = 0; i < clEnv->number_devices; i++) in HasOpenCLDevices()
2194 device=clEnv->devices[i]; in HasOpenCLDevices()
2241 static cl_uint GetOpenCLDeviceCount(MagickCLEnv clEnv,cl_platform_id platform) in GetOpenCLDeviceCount() argument
2249 if (clEnv->library->clGetPlatformInfo(platform,CL_PLATFORM_VERSION, in GetOpenCLDeviceCount()
2254 if (clEnv->library->clGetDeviceIDs(platform, in GetOpenCLDeviceCount()
2290 static void LoadOpenCLDevices(MagickCLEnv clEnv) in LoadOpenCLDevices() argument
2338 number_devices=GetOpenCLDeviceCount(clEnv,platforms[i]); in LoadOpenCLDevices()
2339 clEnv->number_devices+=number_devices; in LoadOpenCLDevices()
2345 if (clEnv->number_devices == 0) in LoadOpenCLDevices()
2350 clEnv->devices=(MagickCLDevice *) AcquireQuantumMemory(clEnv->number_devices, in LoadOpenCLDevices()
2352 if (clEnv->devices == (MagickCLDevice *) NULL) in LoadOpenCLDevices()
2354 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2358 (void) memset(clEnv->devices,0,clEnv->number_devices*sizeof(MagickCLDevice)); in LoadOpenCLDevices()
2359 devices=(cl_device_id *) AcquireQuantumMemory(clEnv->number_devices, in LoadOpenCLDevices()
2364 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2367 (void) memset(devices,0,clEnv->number_devices*sizeof(cl_device_id)); in LoadOpenCLDevices()
2368 clEnv->number_contexts=(size_t) number_platforms; in LoadOpenCLDevices()
2369 clEnv->contexts=(cl_context *) AcquireQuantumMemory(clEnv->number_contexts, in LoadOpenCLDevices()
2371 if (clEnv->contexts == (cl_context *) NULL) in LoadOpenCLDevices()
2375 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2378 (void) memset(clEnv->contexts,0,clEnv->number_contexts*sizeof(cl_context)); in LoadOpenCLDevices()
2385 status=clEnv->library->clGetDeviceIDs(platforms[i],CL_DEVICE_TYPE_CPU | in LoadOpenCLDevices()
2386 CL_DEVICE_TYPE_GPU,(cl_uint) clEnv->number_devices,devices,&number_devices); in LoadOpenCLDevices()
2393 clEnv->contexts[i]=openCL_library->clCreateContext(properties,number_devices, in LoadOpenCLDevices()
2407 device->context=clEnv->contexts[i]; in LoadOpenCLDevices()
2432 clEnv->devices[next]=device; in LoadOpenCLDevices()
2437 if (next != clEnv->number_devices) in LoadOpenCLDevices()
2438 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2443 MagickPrivate MagickBooleanType InitializeOpenCL(MagickCLEnv clEnv, in InitializeOpenCL() argument
2449 LockSemaphoreInfo(clEnv->lock); in InitializeOpenCL()
2450 if (clEnv->initialized != MagickFalse) in InitializeOpenCL()
2452 UnlockSemaphoreInfo(clEnv->lock); in InitializeOpenCL()
2453 return(HasOpenCLDevices(clEnv,exception)); in InitializeOpenCL()
2457 clEnv->library=openCL_library; in InitializeOpenCL()
2458 LoadOpenCLDevices(clEnv); in InitializeOpenCL()
2459 if (clEnv->number_devices > 0) in InitializeOpenCL()
2460 AutoSelectOpenCLDevices(clEnv); in InitializeOpenCL()
2462 clEnv->initialized=MagickTrue; in InitializeOpenCL()
2464 for (i=0; i < (ssize_t) clEnv->number_devices; i++) in InitializeOpenCL()
2466 if (strncmp(clEnv->devices[i]->platform_name,"NVIDIA",6) == 0) in InitializeOpenCL()
2467 clEnv->devices[i]->enabled=MagickFalse; in InitializeOpenCL()
2469 UnlockSemaphoreInfo(clEnv->lock); in InitializeOpenCL()
2470 return(HasOpenCLDevices(clEnv,exception)); in InitializeOpenCL()
3039 static MagickCLEnv RelinquishMagickCLEnv(MagickCLEnv clEnv) in RelinquishMagickCLEnv() argument
3041 if (clEnv == (MagickCLEnv) NULL) in RelinquishMagickCLEnv()
3044 RelinquishSemaphoreInfo(&clEnv->lock); in RelinquishMagickCLEnv()
3045 RelinquishMagickCLDevices(clEnv); in RelinquishMagickCLEnv()
3046 if (clEnv->contexts != (cl_context *) NULL) in RelinquishMagickCLEnv()
3051 for (i=0; i < clEnv->number_contexts; i++) in RelinquishMagickCLEnv()
3052 if (clEnv->contexts[i] != (cl_context) NULL) in RelinquishMagickCLEnv()
3053 (void) openCL_library->clReleaseContext(clEnv->contexts[i]); in RelinquishMagickCLEnv()
3054 clEnv->contexts=(cl_context *) RelinquishMagickMemory(clEnv->contexts); in RelinquishMagickCLEnv()
3056 return((MagickCLEnv) RelinquishMagickMemory(clEnv)); in RelinquishMagickCLEnv()
3081 MagickPrivate MagickCLDevice RequestOpenCLDevice(MagickCLEnv clEnv) in RequestOpenCLDevice() argument
3093 if (clEnv == (MagickCLEnv) NULL) in RequestOpenCLDevice()
3096 if (clEnv->number_devices == 1) in RequestOpenCLDevice()
3098 if (clEnv->devices[0]->enabled) in RequestOpenCLDevice()
3099 return(clEnv->devices[0]); in RequestOpenCLDevice()
3107 for (i = 0; i < clEnv->number_devices; i++) in RequestOpenCLDevice()
3109 if (clEnv->devices[i]->enabled == MagickFalse) in RequestOpenCLDevice()
3112 score=clEnv->devices[i]->score+(clEnv->devices[i]->score* in RequestOpenCLDevice()
3113 clEnv->devices[i]->requested); in RequestOpenCLDevice()
3116 device=clEnv->devices[i]; in RequestOpenCLDevice()
3220 clEnv; in SetOpenCLEnabled() local
3222 clEnv=GetCurrentOpenCLEnv(); in SetOpenCLEnabled()
3223 if (clEnv == (MagickCLEnv) NULL) in SetOpenCLEnabled()
3225 clEnv->enabled=value; in SetOpenCLEnabled()
3226 return(clEnv->enabled); in SetOpenCLEnabled()