Поделиться через


История версий DirectML

DirectML распространяется как системный компонент Windows и доступен в составе операционной системы Windows в Windows 10 версии 1903 (10.0; Сборка 18362) и более поздних версий.

Начиная с Версии 1.4.0 DirectML, DirectML также доступен как автономный распространяемый пакет (см. Microsoft.AI.DirectML), который полезен для приложений, которые хотят использовать фиксированную версию DirectML, или при запуске в более ранних версиях Windows 10.

DirectML следует принципам семантического версионирования. То есть номера версий соответствуют форме major.minor.patch. Первый выпуск DirectML имеет версию 1.0.0.

Таблица версий

Версия DirectML Поддерживаемый уровень компонентов (см. журнал компонентов DirectML) DML_TARGET_VERSION Первая доступна в (ОС) Первая доступна в (распространяемая версия)
1.15.4 DML_FEATURE_LEVEL_6_4 0x6400 Не применимо DirectML-1.15.4 (DirectML-1.15.4)
1.15.3 DML_FEATURE_LEVEL_6_4 0x6400 Не применимо DirectML-1.15.3
1.15.2 DML_FEATURE_LEVEL_6_4 0x6400 Не применимо DirectML-1.15.2 (DirectML-1.15.2)
1.15.1 DML_FEATURE_LEVEL_6_4 0x6400 Не применимо DirectML-1.15.1 (DirectML-1.15.1)
1.15.0 DML_FEATURE_LEVEL_6_4 и DML_FEATURE_LEVEL_6_3 0x6400 или 0x6300 Не применимо DirectML-1.15.0 (DirectML-1.15.0)
1.13.1 DML_FEATURE_LEVEL_6_2 0x6200 Не применимо DirectML-1.13.1
1.13.0 DML_FEATURE_LEVEL_6_2 0x6200 Не применимо DirectML-1.13.0 (DirectML-1.13.0)
1.12.0 DML_FEATURE_LEVEL_6_1 0x6100 Не применимо DirectML-1.12.0 (DirectML-1.12.0)
1.11.0 DML_FEATURE_LEVEL_6_0 0x6000 Не применимо DirectML-1.11.0
1.10.0 DML_FEATURE_LEVEL_5_2 0x5200 Не применимо DirectML-1.10.0 (DirectML-1.10.0)
1.9.0 DML_FEATURE_LEVEL_5_1 0x5100 Не применимо DirectML-1.9.0
1.8.0 DML_FEATURE_LEVEL_5_0 0x5000 Windows 11 (сборка 10.0.22621; 22H2) DirectML-1.8.0
1.7.0 DML_FEATURE_LEVEL_4_1 0x4100 Не применимо DirectML-1.7.0 (DirectML-1.7.0)
1.6.0 DML_FEATURE_LEVEL_4_0 0x4000 Windows 11 (сборка 10.0.22000; 21H2) DirectML-1.6.0
1.5.0 DML_FEATURE_LEVEL_3_1 0x3100 Не применимо DirectML-1.5.0
1.4.01 DML_FEATURE_LEVEL_3_0 0x3000 Не применимо DirectML-1.4.0
1.1.0 DML_FEATURE_LEVEL_2_0 0x2000 Windows 10 версии 2004 (10.0; Сборка 19041 (обновление Windows 10 мая 2020 г.). Ака "20H1". Не применимо
1.0.0 DML_FEATURE_LEVEL_1_0 0x1000 Windows 10 версии 1903 (10.0; Сборка 18362) (обновление Windows 10 за май 2019 г.). Ака "19H1". Не применимо

1 Промежуточные выпуски DirectML 1.2.0 и 1.3.0 были недоступны.

Выбор целевой версии DirectML

Для удобства некоторые особенности в файле заголовка DirectML.h объявляются условно, в зависимости от значения макроса DML_TARGET_VERSION. Задав DML_TARGET_VERSION макрос определенным значениям, можно исключить части DirectML.h из приложения.

Это может быть полезно, если вы используете более новую копию DirectML.h, но вы нацелены на более низкую версию двоичного файла DirectML, так как это гарантирует, что любая попытка использовать функции за пределами выбранного целевого уровня не будет компилироваться. Этот механизм похож на NTDDI_VERSION макрос (см. макросы для условных объявлений).

Ниже приведены допустимые значения макроса DML_TARGET_VERSION .

DML_TARGET_VERSION Эффект
0x6400 Любые функции, требующие версии DirectML, более новой, чем 1.15.0, исключаются из DirectML.h.
0x6300 Все функции, для которых требуется версия DirectML более поздней версии 1.15.0 или которые являются DML_FEATURE_LEVEL_6_4 функциями, исключаются из DirectML.h.
0x6200 Все функции, требующие более поздней версии DirectML, чем 1.13.0 , исключаются из DirectML.h.
0x6100 Все функции, требующие версии DirectML более поздней версии 1.12.0 , исключаются из DirectML.h.
0x6000 Все функции, требующие более новой версии DirectML, чем 1.11.0 , исключаются из DirectML.h.
0x5200 Все функции, требующие версию DirectML новее версии 1.10.0, исключаются из DirectML.h.
0x5100 Все функции, требующие более новой версии DirectML, чем 1.9.0, исключаются из DirectML.h.
0x5000 Все функции, требующие более новой версии DirectML, чем 1.8.0 , исключаются из DirectML.h.
0x4100 Все функции, требующие более новой версии DirectML, чем 1.7.0 , исключаются из DirectML.h.
0x4000 Все функции, требующие версии DirectML более поздней версии 1.6.0 , исключаются из DirectML.h.
0x3100 Все функции, требующие версию DirectML новее 1.5.0, исключаются из DirectML.h.
0x3000 Все функции, которые требуют версию DirectML новее чем 1.4.0, исключаются из DirectML.h.
0x2000 Все функции, требующие версии DirectML более поздней, чем 1.1.0, исключаются из DirectML.h.
0x1000 Все функции, требующие версии DirectML более поздней версии 1.0.0, исключаются из DirectML.h.
Не задано Целевая версия выбирается автоматически. Подробные сведения см. ниже.

Если DML_TARGET_VERSION параметр не задан, он выбирается автоматически следующим образом.

  • DML_TARGET_VERSION_USE_LATEST Если макрос определен, выбрана последняя целевая версия.
  • В противном случае целевая версия выбирается на основе значения NTDDI_VERSION макроса.
    • NTDDI_WIN10_ZN приводит к целевой версии 0x6000.
    • NTDDI_WIN10_NI приводит к целевой версии 0x5000.
    • NTDDI_WIN10_CO приводит к целевой версии 0x4000.
    • NTDDI_WIN10_FE приводит к целевой версии 0x3000.
    • NTDDI_WIN10_VB приводит к целевой версии 0x2000.
    • NTDDI_WIN10_19H1 приводит к целевой версии 0x1000.
    • Если NTDDI_VERSION не определено, выбрана последняя целевая версия (как если бы было указано DML_TARGET_VERSION_USE_LATEST).

Пример

Рассмотрим приложение с помощью версии 10.0.19041.0 (Windows 10 версии 2004) пакета SDK для Windows. В приведенной выше таблице версия DirectML 1.1.0 соответствует DML_TARGET_VERSION, и соответствующий 0x2000.

Если вы не задаете ни макросы DML_TARGET_VERSION, ни NTDDI_VERSION, то выбранная целевая версия по умолчанию установится на 0x2000, и все в DirectML.h будет доступно для использования.

Если вы хотите, чтобы ваше приложение могло работать на Windows 10 версии 1903 (10.0; Сборка 18362), то вы можете #define DML_TARGET_VERSION 0x1000, чтобы исключить весь контент в DirectML.h, который не поддерживается DirectML версии 1.0.0. Это гарантирует, что любая попытка использовать функциональные возможности, требующие большей версии, не будет компилироваться.

Версия DirectML и уровень компонентов

Версия DirectML (например, 1.0.0 или 1.4.0) описывает конкретный выпуск DirectML, включая связанные с ним файл заголовков DirectML.h и файл .lib.

Уровень компонентов (например, DML_FEATURE_LEVEL_1_0или DML_FEATURE_LEVEL_2_0) описывает возможности базовой реализации API, которая может отличаться от используемой DirectML.h версии.

Например, сборка приложения с более новым пакетом SDK, но работающая в более старой версии Windows, может (во время выполнения) увидеть более низкий поддерживаемый уровень компонентов, даже если он компилируется по последнему пакету SDK.

См. также