From 5c69fc140dffdb2f54fbd86fe6bb88422952680f Mon Sep 17 00:00:00 2001 From: Ori Levari Date: Wed, 8 Jan 2020 15:31:21 -0800 Subject: [PATCH 1/2] filter CPU learningmodeldevices in isfloat16supported call --- winml/lib/Api.Image/DeviceHelpers.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/winml/lib/Api.Image/DeviceHelpers.cpp b/winml/lib/Api.Image/DeviceHelpers.cpp index 67824624a7b0a..9587f0e94ef10 100644 --- a/winml/lib/Api.Image/DeviceHelpers.cpp +++ b/winml/lib/Api.Image/DeviceHelpers.cpp @@ -133,6 +133,9 @@ static HRESULT IsFloat16Blocked(ID3D12Device& device, bool* isBlocked) { } bool IsFloat16Supported(const winrt::Windows::AI::MachineLearning::LearningModelDevice& device) { + if (device.AdapterId().HighPart == 0 && device.AdapterId().LowPart == 0) { + return true; + } winrt::com_ptr d3d12Device; if (FAILED(GetD3D12Device(device, d3d12Device.put()))) { return false; From 2980d4d384a85510e06f6930121470b2b2456ccf Mon Sep 17 00:00:00 2001 From: Ori Levari Date: Thu, 9 Jan 2020 17:28:34 -0800 Subject: [PATCH 2/2] use the internal implementation of LMD.IsCPUDevice --- winml/lib/Api.Image/DeviceHelpers.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/winml/lib/Api.Image/DeviceHelpers.cpp b/winml/lib/Api.Image/DeviceHelpers.cpp index 9587f0e94ef10..3174f61fad619 100644 --- a/winml/lib/Api.Image/DeviceHelpers.cpp +++ b/winml/lib/Api.Image/DeviceHelpers.cpp @@ -9,6 +9,7 @@ #include #include #include "inc/DeviceHelpers.h" +#include "LearningModelDevice.h" namespace DeviceHelpers { constexpr uint32_t c_intelVendorId = 0x8086; @@ -133,7 +134,8 @@ static HRESULT IsFloat16Blocked(ID3D12Device& device, bool* isBlocked) { } bool IsFloat16Supported(const winrt::Windows::AI::MachineLearning::LearningModelDevice& device) { - if (device.AdapterId().HighPart == 0 && device.AdapterId().LowPart == 0) { + auto modelImpl = device.as(); + if (modelImpl->IsCpuDevice()) { return true; } winrt::com_ptr d3d12Device;