Partilhar via


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_VERSIONMacros 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 do 0x6000.
    • NTDDI_WIN10_NI resulta em uma versão de destino do 0x5000.
    • NTDDI_WIN10_CO resulta em uma versão de destino do 0x4000.
    • NTDDI_WIN10_FE resulta em uma versão de destino do 0x3000.
    • NTDDI_WIN10_VB resulta em uma versão de destino do 0x2000.
    • NTDDI_WIN10_19H1 resulta em uma versão de destino do 0x1000.
    • Se NTDDI_VERSION não estiver definido, a versão de destino mais recente será selecionada (como se DML_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.

Confira também