Histórico de versões do DirectML
DirectML é distribuído como um componente do sistema do Windows e está disponível como parte do sistema operacional Windows (SO) no Windows 10, versão 1903 (10.0; Build 18362) e mais recente.
A partir do DirectML versão 1.4.0, o DirectML também está disponível como um pacote redistribuível autônomo (consulte Microsoft.AI.DirectML), o que é útil para aplicativos que desejam usar uma versão fixa do DirectML ou quando são executados em versões mais antigas do Windows 10.
O DirectML segue as convenções do controle de versão semântica. Ou seja, os números de versão seguem a forma major.minor.patch
. A primeira versão do DirectML tem uma versão 1.0.0.
Tabela de versões
Versão do DirectML | Nível de recurso compatível (confira Histórico do nível de recurso do DirectML) | DML_TARGET_VERSION | Primeiro disponível em (SO) | Disponível pela primeira vez em (Redistribuível) |
---|---|---|---|---|
1.13.0 | DML_FEATURE_LEVEL_6_2 | 0x6200 |
N/D | DirectML-1.13.0 |
1.12.0 | DML_FEATURE_LEVEL_6_1 | 0x6100 |
N/D | DirectML-1.12.0 |
1.11.0 | DML_FEATURE_LEVEL_6_0 | 0x6000 |
N/D | DirectML-1.11.0 |
1.10.0 | DML_FEATURE_LEVEL_5_2 | 0x5200 |
N/D | DirectML-1.10.0 |
1.9.0 | DML_FEATURE_LEVEL_5_1 | 0x5100 |
N/D | DirectML-1.9.0 |
1.8.0 | DML_FEATURE_LEVEL_5_0 | 0x5000 |
Windows 11 (Build 10.0.22621; 22H2) | DirectML-1.8.0 |
1.7.0 | DML_FEATURE_LEVEL_4_1 | 0x4100 |
N/D | DirectML-1.7.0 |
1.6.0 | DML_FEATURE_LEVEL_4_0 | 0x4000 |
Windows 11 (Build 10.0.22000; 21H2) | DirectML-1.6.0 |
1.5.0 | DML_FEATURE_LEVEL_3_1 | 0x3100 |
N/D | DirectML-1.5.0 |
1.4.01 | DML_FEATURE_LEVEL_3_0 | 0x3000 |
N/D | DirectML-1.4.0 |
1.1.0 | DML_FEATURE_LEVEL_2_0 | 0x2000 |
Windows 10, versão 2004 (10.0; Build 19041) (Atualização do Windows 10 de maio de 2020). Também conhecido como "20H1". | N/D |
1.0.0 | DML_FEATURE_LEVEL_1_0 | 0x1000 |
Windows 10, versão 1903 (10.0; Build 18362) (Atualização do Windows de 10 de maio de 2019). Também conhecido como "19H1". | N/D |
1 As versões intermediárias 1.2.0 e 1.3.0 do DirectML não foram disponibilizadas amplamente.
Selecionar uma versão de destino do DirectML
Por conveniência, determinados recursos no arquivo de cabeçalho DirectML.h
são declarados condicionalmente com base no valor da macro DML_TARGET_VERSION
. Ao definir a macro DML_TARGET_VERSION
para determinados valores, você pode excluir partes do DirectML.h
do seu aplicativo.
Isso pode ser útil se você estiver usando uma cópia mais recente do DirectML.h
, mas estiver direcionando para uma versão inferior do binário DirectML, pois garante que qualquer tentativa de usar recursos além do nível de destino escolhido não será compilada. Esse mecanismo é semelhante à macro (consulte NTDDI_VERSION
Macros para declarações condicionais).
Estes são os valores válidos para a macro DML_TARGET_VERSION
.
DML_TARGET_VERSION | Efeito |
---|---|
0x6200 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.13.0 são excluídos do DirectML.h . |
0x6100 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.12.0 são excluídos do DirectML.h . |
0x6000 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.11.0 são excluídos do DirectML.h . |
0x5200 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.10.0 são excluídos do DirectML.h . |
0x5100 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.9.0 são excluídos do DirectML.h . |
0x5000 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.8.0 são excluídos do DirectML.h . |
0x4100 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.7.0 são excluídos do DirectML.h . |
0x4000 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.6.0 são excluídos do DirectML.h . |
0x3100 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.5.0 são excluídos do DirectML.h . |
0x3000 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.4.0 são excluídos do DirectML.h . |
0x2000 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.1.0 são excluídos do DirectML.h . |
0x1000 |
Todos os recursos que exigem uma versão do DirectML mais recente que 1.0.0 são excluídos do DirectML.h . |
Não definido | A versão de destino é selecionada automaticamente para você. Confira os detalhes abaixo. |
Se DML_TARGET_VERSION
não estiver definido, ele será selecionado automaticamente pelo seguinte.
- Se a macro
DML_TARGET_VERSION_USE_LATEST
estiver definida, a versão de destino mais recente será selecionada. - Caso contrário, a versão de destino será selecionada com base no valor da macro
NTDDI_VERSION
.NTDDI_WIN10_ZN
resulta em uma versão de destino do0x6000
.NTDDI_WIN10_NI
resulta em uma versão de destino do0x5000
.NTDDI_WIN10_CO
resulta em uma versão de destino do0x4000
.NTDDI_WIN10_FE
resulta em uma versão de destino do0x3000
.NTDDI_WIN10_VB
resulta em uma versão de destino do0x2000
.NTDDI_WIN10_19H1
resulta em uma versão de destino do0x1000
.- Se
NTDDI_VERSION
não estiver definido, a versão de destino mais recente será selecionada (como seDML_TARGET_VERSION_USE_LATEST
fosse especificada).
Exemplo
Considere um aplicativo usando a versão 10.0.19041.0 (Windows 10, versão 2004) do Windows Software Development Kit (SDK). Na tabela acima, a versão do DirectML à qual isso corresponde é 1.1.0 e a DML_TARGET_VERSION
correspondente é 0x2000
.
Se você não definir as macros DML_TARGET_VERSION
nem as NTDDI_VERSION
, a versão de destino selecionada será a 0x2000
padrão, e tudo o que estiver em DirectML.h
estará disponível para uso.
Se você quiser que seu aplicativo seja executado no Windows 10, versão 1903 (10.0; Build 18362), use o #define DML_TARGET_VERSION 0x1000
, que excluirá todo o conteúdo de DirectML.h
que não for compatível com o DirectML versão 1.0.0. Isso garante que qualquer tentativa de usar a funcionalidade que exija uma versão maior falhará na compilação.
Versão do DirectML versus nível de recurso
A versão do DirectML (por exemplo, 1.0.0 ou 1.4.0) descreve uma versão específica do DirectML, incluindo seu arquivo de cabeçalho DirectML.h
associado e o arquivo .lib
.
O nível de recurso (por exemplo, DML_FEATURE_LEVEL_1_0
ou DML_FEATURE_LEVEL_2_0
) descreve a capacidade da implementação subjacente da API, que pode variar da versão DirectML.h
usada.
Por exemplo, um aplicativo criado em um SDK mais recente, porém executado em uma versão mais antiga do Windows, pode (no runtime) observar um nível de recurso com suporte mais baixo, mesmo que ele seja compilado com o SDK mais recente.