28 return make_unique<MetalDevice>(info, stats, profiler, headless);
38 MetalDeviceKernels::static_deinitialize();
43 auto usable_devices = MetalInfo::get_usable_devices();
45 set<string> unique_ids;
47 for (id<MTLDevice> &device : usable_devices) {
49 string device_name = MetalInfo::get_device_name(device);
51 string id = string(
"METAL_") + device_name;
54 if (unique_ids.find(
id) != unique_ids.end()) {
57 unique_ids.insert(
id);
64 info.
num = device_index;
69# if defined(WITH_OPENIMAGEDENOISE)
70# if OIDN_VERSION >= 20300
71 if (oidnIsMetalDeviceSupported(device)) {
73 if (OIDNDenoiserGPU::is_device_supported(info)) {
84 if (@available(macos 13.0, *)) {
92# if defined(MAC_OS_VERSION_14_0)
93 if (@available(macos 14.0, *)) {
98 (MetalInfo::get_apple_gpu_architecture(device) >= APPLE_M3);
102 devices.push_back(info);
108 LOG_INFO <<
"Device with id \"" << info.
id <<
"\" supports "
117 auto allDevices = MTLCopyAllDevices();
119 if (num_devices == 0) {
120 return "No Metal devices found\n";
124 for (id<MTLDevice> device
in allDevices) {
125 string device_name = MetalInfo::get_device_name(device);
DenoiserTypeMask denoisers
bool use_metalrt_by_default
bool use_hardware_raytracing
CCL_NAMESPACE_BEGIN const char * denoiserTypeToHumanReadable(DenoiserType type)
@ DENOISER_OPENIMAGEDENOISE
#define CCL_NAMESPACE_END
void device_metal_info(vector< DeviceInfo > &)
string device_metal_capabilities()
CCL_NAMESPACE_BEGIN unique_ptr< Device > device_metal_create(const DeviceInfo &, Stats &, Profiler &)
string string_remove_trademark(const string &s)
CCL_NAMESPACE_BEGIN string string_printf(const char *format,...)