Lines Matching refs:clEnv
193 static inline void RelinquishMagickCLDevices(MagickCLEnv clEnv) in RelinquishMagickCLDevices() argument
198 if (clEnv->devices != (MagickCLDevice *) NULL) in RelinquishMagickCLDevices()
200 for (i = 0; i < clEnv->number_devices; i++) in RelinquishMagickCLDevices()
201 clEnv->devices[i]=RelinquishMagickCLDevice(clEnv->devices[i]); in RelinquishMagickCLDevices()
202 clEnv->devices=(MagickCLDevice *) RelinquishMagickMemory(clEnv->devices); in RelinquishMagickCLDevices()
204 clEnv->number_devices=0; in RelinquishMagickCLDevices()
370 static void SelectOpenCLDevice(MagickCLEnv clEnv,cl_device_type type) in SelectOpenCLDevice() argument
379 for (i = 0; i < clEnv->number_devices; i++) in SelectOpenCLDevice()
380 clEnv->devices[i]->enabled=MagickFalse; in SelectOpenCLDevice()
382 for (i = 0; i < clEnv->number_devices; i++) in SelectOpenCLDevice()
384 device=clEnv->devices[i]; in SelectOpenCLDevice()
389 for (j = i+1; j < clEnv->number_devices; j++) in SelectOpenCLDevice()
394 other_device=clEnv->devices[j]; in SelectOpenCLDevice()
583 clEnv; in AcquireMagickCLEnv() local
585 clEnv=(MagickCLEnv) AcquireMagickMemory(sizeof(*clEnv)); in AcquireMagickCLEnv()
586 if (clEnv != (MagickCLEnv) NULL) in AcquireMagickCLEnv()
588 (void) ResetMagickMemory(clEnv,0,sizeof(*clEnv)); in AcquireMagickCLEnv()
589 ActivateSemaphoreInfo(&clEnv->lock); in AcquireMagickCLEnv()
590 clEnv->cpu_score=MAGICKCORE_OPENCL_UNDEFINED_SCORE; in AcquireMagickCLEnv()
591 clEnv->enabled=MagickTrue; in AcquireMagickCLEnv()
594 clEnv->enabled=MagickFalse; in AcquireMagickCLEnv()
596 return clEnv; in AcquireMagickCLEnv()
716 static void LoadOpenCLDeviceBenchmark(MagickCLEnv clEnv,const char *xml) in LoadOpenCLDeviceBenchmark() argument
788 clEnv->cpu_score=device_benchmark->score; in LoadOpenCLDeviceBenchmark()
797 for (i = 0; i < clEnv->number_devices; i++) in LoadOpenCLDeviceBenchmark()
799 device=clEnv->devices[i]; in LoadOpenCLDeviceBenchmark()
888 static MagickBooleanType LoadOpenCLBenchmarks(MagickCLEnv clEnv, in LoadOpenCLBenchmarks() argument
915 for (i = 0; i < clEnv->number_devices; i++) in LoadOpenCLBenchmarks()
916 clEnv->devices[i]->score=1.0; in LoadOpenCLBenchmarks()
918 SelectOpenCLDevice(clEnv,CL_DEVICE_TYPE_GPU); in LoadOpenCLBenchmarks()
926 LoadOpenCLDeviceBenchmark(clEnv,(const char *) GetStringInfoDatum( in LoadOpenCLBenchmarks()
934 static void AutoSelectOpenCLDevices(MagickCLEnv clEnv,ExceptionInfo *exception) in AutoSelectOpenCLDevices() argument
952 SelectOpenCLDevice(clEnv,CL_DEVICE_TYPE_GPU); in AutoSelectOpenCLDevices()
954 SelectOpenCLDevice(clEnv,CL_DEVICE_TYPE_CPU); in AutoSelectOpenCLDevices()
957 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
958 clEnv->devices[i]->enabled=MagickFalse; in AutoSelectOpenCLDevices()
959 clEnv->enabled=MagickFalse; in AutoSelectOpenCLDevices()
963 if (LoadOpenCLBenchmarks(clEnv,exception) == MagickFalse) in AutoSelectOpenCLDevices()
967 if (clEnv->cpu_score == MAGICKCORE_OPENCL_UNDEFINED_SCORE) in AutoSelectOpenCLDevices()
971 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
973 if (clEnv->devices[i]->score == MAGICKCORE_OPENCL_UNDEFINED_SCORE) in AutoSelectOpenCLDevices()
982 BenchmarkOpenCLDevices(clEnv); in AutoSelectOpenCLDevices()
984 best_score=clEnv->cpu_score; in AutoSelectOpenCLDevices()
985 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
986 best_score=MagickMin(clEnv->devices[i]->score,best_score); in AutoSelectOpenCLDevices()
988 for (i = 0; i < clEnv->number_devices; i++) in AutoSelectOpenCLDevices()
990 if (clEnv->devices[i]->score != best_score) in AutoSelectOpenCLDevices()
991 clEnv->devices[i]->enabled=MagickFalse; in AutoSelectOpenCLDevices()
1090 static void RunDeviceBenckmark(MagickCLEnv clEnv,MagickCLEnv testEnv, in RunDeviceBenckmark() argument
1096 default_CLEnv=clEnv; in RunDeviceBenckmark()
1100 static void CacheOpenCLBenchmarks(MagickCLEnv clEnv) in CacheOpenCLBenchmarks() argument
1124 clEnv->cpu_score); in CacheOpenCLBenchmarks()
1125 for (i = 0; i < clEnv->number_devices; i++) in CacheOpenCLBenchmarks()
1130 device=clEnv->devices[i]; in CacheOpenCLBenchmarks()
1134 if (IsSameOpenCLDevice(clEnv->devices[j],device)) in CacheOpenCLBenchmarks()
1156 static void BenchmarkOpenCLDevices(MagickCLEnv clEnv) in BenchmarkOpenCLDevices() argument
1176 for (i = 0; i < clEnv->number_devices; i++) in BenchmarkOpenCLDevices()
1177 clEnv->devices[i]->score=MAGICKCORE_OPENCL_UNDEFINED_SCORE; in BenchmarkOpenCLDevices()
1179 for (i = 0; i < clEnv->number_devices; i++) in BenchmarkOpenCLDevices()
1181 device=clEnv->devices[i]; in BenchmarkOpenCLDevices()
1183 RunDeviceBenckmark(clEnv,testEnv,device); in BenchmarkOpenCLDevices()
1186 for (j = i+1; j < clEnv->number_devices; j++) in BenchmarkOpenCLDevices()
1191 other_device=clEnv->devices[j]; in BenchmarkOpenCLDevices()
1199 clEnv->cpu_score=RunOpenCLBenchmark(MagickTrue); in BenchmarkOpenCLDevices()
1200 default_CLEnv=clEnv; in BenchmarkOpenCLDevices()
1203 CacheOpenCLBenchmarks(clEnv); in BenchmarkOpenCLDevices()
1462 clEnv; in DumpOpenCLProfileData() local
1468 clEnv=GetCurrentOpenCLEnv(); in DumpOpenCLProfileData()
1469 if (clEnv == (MagickCLEnv) NULL) in DumpOpenCLProfileData()
1472 for (i = 0; i < clEnv->number_devices; i++) in DumpOpenCLProfileData()
1473 if (clEnv->devices[i]->profile_kernels != MagickFalse) in DumpOpenCLProfileData()
1475 if (i == clEnv->number_devices) in DumpOpenCLProfileData()
1483 for (i = 0; i < clEnv->number_devices; i++) in DumpOpenCLProfileData()
1488 device=clEnv->devices[i]; in DumpOpenCLProfileData()
1824 clEnv; in GetOpenCLDevices() local
1826 clEnv=GetCurrentOpenCLEnv(); in GetOpenCLDevices()
1827 if (clEnv == (MagickCLEnv) NULL) in GetOpenCLDevices()
1833 InitializeOpenCL(clEnv,exception); in GetOpenCLDevices()
1835 *length=clEnv->number_devices; in GetOpenCLDevices()
1836 return(clEnv->devices); in GetOpenCLDevices()
1924 clEnv; in GetOpenCLEnabled() local
1926 clEnv=GetCurrentOpenCLEnv(); in GetOpenCLEnabled()
1927 if (clEnv == (MagickCLEnv) NULL) in GetOpenCLEnabled()
1929 return(clEnv->enabled); in GetOpenCLEnabled()
2004 static MagickBooleanType HasOpenCLDevices(MagickCLEnv clEnv, in HasOpenCLDevices() argument
2021 for (i = 0; i < clEnv->number_devices; i++) in HasOpenCLDevices()
2023 if ((clEnv->devices[i]->enabled != MagickFalse)) in HasOpenCLDevices()
2026 if (i == clEnv->number_devices) in HasOpenCLDevices()
2031 for (i = 0; i < clEnv->number_devices; i++) in HasOpenCLDevices()
2033 if ((clEnv->devices[i]->enabled != MagickFalse) && in HasOpenCLDevices()
2034 (clEnv->devices[i]->program == (cl_program) NULL)) in HasOpenCLDevices()
2058 for (i = 0; i < clEnv->number_devices; i++) in HasOpenCLDevices()
2066 device=clEnv->devices[i]; in HasOpenCLDevices()
2113 static cl_uint GetOpenCLDeviceCount(MagickCLEnv clEnv,cl_platform_id platform) in GetOpenCLDeviceCount() argument
2121 if (clEnv->library->clGetPlatformInfo(platform,CL_PLATFORM_VERSION, in GetOpenCLDeviceCount()
2126 if (clEnv->library->clGetDeviceIDs(platform, in GetOpenCLDeviceCount()
2132 static void LoadOpenCLDevices(MagickCLEnv clEnv) in LoadOpenCLDevices() argument
2172 number_devices=GetOpenCLDeviceCount(clEnv,platforms[i]); in LoadOpenCLDevices()
2176 clEnv->number_devices+=number_devices; in LoadOpenCLDevices()
2178 if (clEnv->number_devices == 0) in LoadOpenCLDevices()
2183 clEnv->devices=(MagickCLDevice *) AcquireQuantumMemory(clEnv->number_devices, in LoadOpenCLDevices()
2185 if (clEnv->devices == (MagickCLDevice *) NULL) in LoadOpenCLDevices()
2187 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2191 (void) ResetMagickMemory(clEnv->devices,0,clEnv->number_devices* in LoadOpenCLDevices()
2193 devices=(cl_device_id *) AcquireQuantumMemory(clEnv->number_devices, in LoadOpenCLDevices()
2198 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2201 clEnv->number_contexts=(size_t) number_platforms; in LoadOpenCLDevices()
2202 clEnv->contexts=(cl_context *) AcquireQuantumMemory(clEnv->number_contexts, in LoadOpenCLDevices()
2204 if (clEnv->contexts == (cl_context *) NULL) in LoadOpenCLDevices()
2208 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2217 status=clEnv->library->clGetDeviceIDs(platforms[i],CL_DEVICE_TYPE_CPU | in LoadOpenCLDevices()
2218 CL_DEVICE_TYPE_GPU,clEnv->number_devices,devices,&number_devices); in LoadOpenCLDevices()
2225 clEnv->contexts[i]=openCL_library->clCreateContext(properties,number_devices, in LoadOpenCLDevices()
2239 device->context=clEnv->contexts[i]; in LoadOpenCLDevices()
2273 clEnv->devices[next]=device; in LoadOpenCLDevices()
2276 if (next != clEnv->number_devices) in LoadOpenCLDevices()
2277 RelinquishMagickCLDevices(clEnv); in LoadOpenCLDevices()
2282 MagickPrivate MagickBooleanType InitializeOpenCL(MagickCLEnv clEnv, in InitializeOpenCL() argument
2285 LockSemaphoreInfo(clEnv->lock); in InitializeOpenCL()
2286 if (clEnv->initialized != MagickFalse) in InitializeOpenCL()
2288 UnlockSemaphoreInfo(clEnv->lock); in InitializeOpenCL()
2289 return(HasOpenCLDevices(clEnv,exception)); in InitializeOpenCL()
2293 clEnv->library=openCL_library; in InitializeOpenCL()
2294 LoadOpenCLDevices(clEnv); in InitializeOpenCL()
2295 if (clEnv->number_devices > 0) in InitializeOpenCL()
2296 AutoSelectOpenCLDevices(clEnv,exception); in InitializeOpenCL()
2298 clEnv->initialized=MagickTrue; in InitializeOpenCL()
2299 UnlockSemaphoreInfo(clEnv->lock); in InitializeOpenCL()
2300 return(HasOpenCLDevices(clEnv,exception)); in InitializeOpenCL()
2855 static MagickCLEnv RelinquishMagickCLEnv(MagickCLEnv clEnv) in RelinquishMagickCLEnv() argument
2857 if (clEnv == (MagickCLEnv) NULL) in RelinquishMagickCLEnv()
2860 RelinquishSemaphoreInfo(&clEnv->lock); in RelinquishMagickCLEnv()
2861 RelinquishMagickCLDevices(clEnv); in RelinquishMagickCLEnv()
2862 if (clEnv->contexts != (cl_context *) NULL) in RelinquishMagickCLEnv()
2867 for (i=0; i < clEnv->number_contexts; i++) in RelinquishMagickCLEnv()
2868 (void) openCL_library->clReleaseContext(clEnv->contexts[i]); in RelinquishMagickCLEnv()
2869 clEnv->contexts=(cl_context *) RelinquishMagickMemory(clEnv->contexts); in RelinquishMagickCLEnv()
2871 return((MagickCLEnv) RelinquishMagickMemory(clEnv)); in RelinquishMagickCLEnv()
2896 MagickPrivate MagickCLDevice RequestOpenCLDevice(MagickCLEnv clEnv) in RequestOpenCLDevice() argument
2908 if (clEnv == (MagickCLEnv) NULL) in RequestOpenCLDevice()
2911 if (clEnv->number_devices == 1) in RequestOpenCLDevice()
2913 if (clEnv->devices[0]->enabled) in RequestOpenCLDevice()
2914 return(clEnv->devices[0]); in RequestOpenCLDevice()
2922 for (i = 0; i < clEnv->number_devices; i++) in RequestOpenCLDevice()
2924 if (clEnv->devices[i]->enabled == MagickFalse) in RequestOpenCLDevice()
2927 score=clEnv->devices[i]->score+(clEnv->devices[i]->score* in RequestOpenCLDevice()
2928 clEnv->devices[i]->requested); in RequestOpenCLDevice()
2931 device=clEnv->devices[i]; in RequestOpenCLDevice()
3035 clEnv; in SetOpenCLEnabled() local
3037 clEnv=GetCurrentOpenCLEnv(); in SetOpenCLEnabled()
3038 if (clEnv == (MagickCLEnv) NULL) in SetOpenCLEnabled()
3040 clEnv->enabled=value; in SetOpenCLEnabled()
3041 return(clEnv->enabled); in SetOpenCLEnabled()