Delen via


DirectML-versiegeschiedenis

Belangrijk

DirectML is in onderhoudsengineering. DirectML wordt nog steeds ondersteund, maar de ontwikkeling van nieuwe functies is verplaatst naar Windows ML voor ONNX Runtime-implementaties op basis van Windows. Windows ML biedt dezelfde ONNX Runtime-API's terwijl u dynamisch de beste uitvoeringsprovider selecteert op basis van uw hardware. Zie Wat is Windows ML voor meer informatie.

DirectML wordt gedistribueerd als systeemonderdeel van Windows en is beschikbaar als onderdeel van het Windows-besturingssysteem (OS) in Windows 10, versie 1903 (10.0; Build 18362) en hoger.

Vanaf DirectML versie 1.4.0 is DirectML ook beschikbaar als een zelfstandig herdistribueerbaar pakket (zie Microsoft.AI.DirectML), wat handig is voor toepassingen die een vaste versie van DirectML willen gebruiken of wanneer ze worden uitgevoerd in oudere versies van Windows 10.

DirectML volgt de semantische versiebeheerconventies. Dat wil zeggen, versienummers volgen het formaat major.minor.patch. De eerste release van DirectML heeft een versie van 1.0.0.

Versietabel

DirectML-versie Ondersteund functieniveau (zie Geschiedenis van DirectML-functieniveau) DML_TARGET_VERSION Eerst beschikbaar in (besturingssysteem) Eerst beschikbaar in (Redistributable)
1.15.4 DML_FEATURE_LEVEL_6_4 0x6400 Niet van toepassing. DirectML-1.15.4
1.15.3 DML_FEATURE_LEVEL_6_4 0x6400 Niet van toepassing. DirectML-1.15.3
1.15.2 DML_FEATURE_LEVEL_6_4 0x6400 Niet van toepassing. DirectML-1.15.2
1.15.1 DML_FEATURE_LEVEL_6_4 0x6400 Niet van toepassing. DirectML-1.15.1
1.15.0 DML_FEATURE_LEVEL_6_4 en DML_FEATURE_LEVEL_6_3 0x6400 of 0x6300 Niet van toepassing. DirectML-1.15.0
1.13.1 DML_FEATURE_LEVEL_6_2 0x6200 Niet van toepassing. DirectML-1.13.1
1.13.0 DML_FEATURE_LEVEL_6_2 0x6200 Niet van toepassing. DirectML-1.13.0
1.12.0 DML_FEATURE_LEVEL_6_1 0x6100 Niet van toepassing. DirectML-1.12.0
1.11.0 DML_FEATURE_LEVEL_6_0 0x6000 Niet van toepassing. DirectML-1.11.0
1.10.0 DML_FEATURE_LEVEL_5_2 0x5200 Niet van toepassing. DirectML-1.10.0
1.9.0 DML_FEATURE_LEVEL_5_1 0x5100 Niet van toepassing. 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 Niet van toepassing. Directe ML-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 Niet van toepassing. DirectML-1.5.0
1.4.01 DML_FEATURE_LEVEL_3_0 0x3000 Niet van toepassing. DirectML-1.4.0
1.1.0 DML_FEATURE_LEVEL_2_0 0x2000 Windows 10, versie 2004 (10.0; Build 19041) (Windows 10 mei 2020 Update). Ook wel '20H1' genoemd. Niet van toepassing.
1.0.0 DML_FEATURE_LEVEL_1_0 0x1000 Windows 10, versie 1903 (10.0; Build 18362) (Update van Windows 10 mei 2019). Oftewel '19H1'. Niet van toepassing.

1 De tussenliggende releases 1.2.0 en 1.3.0 van DirectML werden niet algemeen beschikbaar gesteld.

Een DirectML-doelversie selecteren

Voor het gemak worden bepaalde functies in het DirectML.h koptekstbestand voorwaardelijk gedeclareerd op basis van de waarde van de DML_TARGET_VERSION macro. Door de DML_TARGET_VERSION macro in te stellen op bepaalde waarden, kunt u delen van DirectML.h van uw toepassing uitsluiten.

Als u een nieuwere kopie van DirectML.h gebruikt, maar zich richt op een lagere versie van de DirectML-binaire, kan dat handig zijn, omdat het ervoor zorgt dat elke poging om functies buiten het gekozen doelniveau te gebruiken niet gecompileerd kunnen worden. Dit mechanisme is vergelijkbaar met de NTDDI_VERSION macro (zie Macro's voor voorwaardelijke declaraties).

Dit zijn de geldige waarden voor de DML_TARGET_VERSION macro.

DML_TARGET_VERSION Gevolg
0x6400 Alle functies waarvoor een versie van DirectML hoger is dan 1.15.0 zijn uitgesloten van DirectML.h.
0x6300 Alle functies waarvoor een versie van DirectML hoger is dan 1.15.0 of die DML_FEATURE_LEVEL_6_4 functies zijn, worden uitgesloten van DirectML.h.
0x6200 Alle functies waarvoor een versie van DirectML hoger is dan 1.13.0 zijn uitgesloten van DirectML.h.
0x6100 Alle functies waarvoor een versie van DirectML hoger dan 1.12.0 is vereist, worden uitgesloten van DirectML.h.
0x6000 Alle functies waarvoor een versie van DirectML hoger is dan 1.11.0 zijn uitgesloten van DirectML.h.
0x5200 Alle functies waarvoor een versie van DirectML hoger is dan 1.10.0 zijn uitgesloten van DirectML.h.
0x5100 Alle functies waarvoor een versie van DirectML hoger dan 1.9.0 is vereist, worden uitgesloten van DirectML.h.
0x5000 Alle functies waarvoor een versie van DirectML hoger dan 1.8.0 is vereist, zijn uitgesloten van DirectML.h.
0x4100 Alle functies waarvoor een versie van DirectML hoger dan 1.7.0 is vereist, worden uitgesloten van DirectML.h.
0x4000 Alle functies waarvoor een versie van DirectML hoger is dan 1.6.0 zijn uitgesloten van DirectML.h.
0x3100 Alle functies waarvoor een versie van DirectML hoger dan 1.5.0 is vereist, worden uitgesloten van DirectML.h.
0x3000 Alle functies waarvoor een versie van DirectML hoger dan 1.4.0 is vereist, worden uitgesloten van DirectML.h.
0x2000 Alle functies waarvoor een versie van DirectML hoger dan 1.1.0 is vereist, worden uitgesloten van DirectML.h.
0x1000 Alle functies waarvoor een versie van DirectML hoger dan 1.0.0 is vereist, worden uitgesloten van DirectML.h.
Niet ingesteld De doelversie wordt automatisch voor u geselecteerd. Kijk hieronder voor de details.

Als DML_TARGET_VERSION niet is ingesteld, wordt het automatisch geselecteerd volgens de volgende procedure.

  • Als de DML_TARGET_VERSION_USE_LATEST macro is gedefinieerd, wordt de meest recente doelversie geselecteerd.
  • Anders wordt de doelversie geselecteerd op basis van de waarde van de NTDDI_VERSION macro.
    • NTDDI_WIN10_ZN resulteert in een doelversie van 0x6000.
    • NTDDI_WIN10_NI resulteert in een doelversie van 0x5000.
    • NTDDI_WIN10_CO resulteert in een doelversie van 0x4000.
    • NTDDI_WIN10_FE resulteert in een doelversie van 0x3000.
    • NTDDI_WIN10_VB resulteert in een doelversie van 0x2000.
    • NTDDI_WIN10_19H1 resulteert in een doelversie van 0x1000.
    • Als NTDDI_VERSION niet is gedefinieerd, wordt de meest recente doelversie geselecteerd (alsof DML_TARGET_VERSION_USE_LATEST was opgegeven).

Voorbeeld

Overweeg een toepassing met versie 10.0.19041.0 (Windows 10, versie 2004) van de Windows Software Development Kit (SDK). In de bovenstaande tabel is de versie van DirectML waarmee dit overeenkomt 1.1.0 en de bijbehorende DML_TARGET_VERSION is 0x2000.

Als u noch de DML_TARGET_VERSION noch de NTDDI_VERSION macro's instelt, wordt de geselecteerde doelversie standaard 0x2000, en is alles in DirectML.h beschikbaar voor gebruik.

Als u wilt dat uw toepassing kan worden uitgevoerd op Windows 10, versie 1903 (10.0; Build 18362), dan kunt u #define DML_TARGET_VERSION 0x1000, waardoor alle inhoud in DirectML.h wordt uitgesloten die niet wordt ondersteund door DirectML versie 1.0.0. Dit zorgt ervoor dat elke poging om functionaliteit te gebruiken waarvoor een grotere versie vereist, niet kan worden gecompileerd.

DirectML-versie versus functieniveau

De DirectML-versie (bijvoorbeeld 1.0.0 of 1.4.0) beschrijft een bepaalde versie van DirectML, inclusief het bijbehorende DirectML.h headerbestand en .lib -bestand.

Het functieniveau (bijvoorbeeld DML_FEATURE_LEVEL_1_0, of DML_FEATURE_LEVEL_2_0) beschrijft de mogelijkheid van de onderliggende implementatie van de API, die kan variƫren van de gebruikte versie DirectML.h .

Een toepassing die bouwt op basis van een nieuwere SDK, maar wordt uitgevoerd op een oudere versie van Windows, kan (tijdens runtime) een lager ondersteund functieniveau zien, zelfs als deze is gecompileerd op basis van de nieuwste SDK.

Zie ook