For a project we use WinML to do inference using a fully convolutional network. We query all adapters on the platform and explicitly pass an d3d12 device to the Learning session. For performance reasons we converted the weights of to half float format, and we found out that some GPU doesn't support it. There are actually 2 cases when creating the learning session :
- For some GPU (Intel HD 4600) WinML is throwing an exception saying that the device doesn't support half float format. For me this isn't clear what is required, as far as I understand WinML doesn't enforce usage of the special ALU found in Nvidia Pascal and later and AMD Polaris and later, so I suspect this support only concerns texture or buffer format. And as far as I know r16f texture format is supported on every dx11 gpu, so this is not clear what is the exact requirement here, and if there is the way to query it beforhand. Currently we try to recreate session with another available device and fallback to cpu if there is none but this isn't really a clean way to proceed.
- For some other GPU (Nvidia Kepler generation) there is an "unknow exception" that occurs. It doesn't explictly say that half float format is not supported, and I have no idea what's happening.
Any help/insight would be appreciated. Regards, Vincent