DirectML

Overview of the DirectML technology.

To develop DirectML, you need these headers:

For programming guidance for this technology, see:

Enumerations

 
DML_AXIS_DIRECTION

Defines constants that specify the direction of an operation along the given axis for the operator (for example, summation, selecting the top-k elements, selecting the minimum element).
DML_BINDING_TYPE

Defines constants that specify the nature of the resource(s) referred to by a binding description (a DML_BINDING_DESC structure).
DML_CONVOLUTION_DIRECTION

Defines constants that specify a direction for the DirectML convolution operator (as described by the DML_CONVOLUTION_OPERATOR_DESC structure).
DML_CONVOLUTION_MODE

Defines constants that specify a mode for the DirectML convolution operator (as described by the DML_CONVOLUTION_OPERATOR_DESC structure).
DML_CREATE_DEVICE_FLAGS

Supplies additional device creation options to DMLCreateDevice. Values can be bitwise OR'd together.
DML_DEPTH_SPACE_ORDER

Defines constants controlling the transform applied in the DirectML operators DML_OPERATOR_DEPTH_TO_SPACE1 and DML_OPERATOR_SPACE_TO_DEPTH1.
DML_EXECUTION_FLAGS

Supplies options to DirectML to control execution of operators. These flags can be bitwise OR'd together to specify multiple flags at once.
DML_FEATURE

Defines a set of optional features and capabilities that can be queried from the DirectML device.
DML_FEATURE_LEVEL

Defines constants that specify a DirectML feature level. A feature level defines a broad umbrella of functionality supported by DirectML.
DML_GRAPH_EDGE_TYPE

Defines constants that specify a type of graph edge. See DML_GRAPH_EDGE_DESC for the usage of this enumeration.
DML_GRAPH_NODE_TYPE

Defines constants that specify a type of graph node. See DML_GRAPH_NODE_DESC for the usage of this enumeration.
DML_INTERPOLATION_MODE

Defines constants that specify a mode for the DirectML upsample 2-D operator (as described by the DML_UPSAMPLE_2D_OPERATOR_DESC structure).
DML_IS_INFINITY_MODE

Defines constants that specify the sign of an infinity.
DML_MATRIX_TRANSFORM

Defines constants that specify a matrix transform to be applied to a DirectML tensor.
DML_OPERATOR_TYPE

Defines the type of an operator description.
DML_PADDING_MODE

Defines constants that specify a mode for the DirectML pad operator (as described by the DML_PADDING_OPERATOR_DESC structure).
DML_RANDOM_GENERATOR_TYPE

Defines constants that specify types of random random-number generator.
DML_RECURRENT_NETWORK_DIRECTION

Defines constants that specify a direction for a recurrent DirectML operator.
DML_REDUCE_FUNCTION

Defines constants that specify the specific reduction algorithm to use for the DirectML reduce operator (as described by the DML_REDUCE_OPERATOR_DESC structure).
DML_ROUNDING_MODE

Defines constants that specify a rounding mode.
DML_TENSOR_DATA_TYPE

Specifies the data type of the values in a tensor. DirectML operators may not support all data types; see the documentation for each specific operator to find which data types it supports.
DML_TENSOR_FLAGS

Specifies additional options in a tensor description. Values can be bitwise OR'd together.
DML_TENSOR_TYPE

Identifies a type of tensor description.

Functions

 
BindInputs

Binds a set of resources as input tensors.
BindOutputs

Binds a set of resources as output tensors.
BindPersistentResource

Binds a buffer as a persistent resource. You can determine the required size of this buffer range by calling IDMLDispatchable::GetBindingProperties.
BindTemporaryResource

Binds a buffer to use as temporary scratch memory. You can determine the required size of this buffer range by calling IDMLDispatchable::GetBindingProperties.
CheckFeatureSupport

Gets information about the optional features and capabilities that are supported by the DirectML device.
CompileGraph

Compiles a graph of DirectML operators into an object that can be dispatched to the GPU.
CompileOperator

Compiles an operator into an object that can be dispatched to the GPU.
CreateBindingTable

Creates a binding table, which is an object that can be used to bind resources (such as tensors) to the pipeline.
CreateCommandRecorder

Creates a DirectML command recorder.
CreateOperator

Creates a DirectML operator.
CreateOperatorInitializer

Creates an object that can be used to initialize compiled operators.
DMLCreateDevice

Creates a DirectML device for a given Direct3D 12 device. (DMLCreateDevice)
DMLCreateDevice1

Creates a DirectML device for a given Direct3D 12 device. (DMLCreateDevice1)
Evict

Evicts one or more pageable objects from GPU memory. Also see IDMLDevice::MakeResident.
GetBindingProperties

Retrieves the binding properties for a dispatchable object (an operator initializer, or a compiled operator).
GetDevice

Retrieves the DirectML device that was used to create this object.
GetDeviceRemovedReason

Retrieves the reason that the DirectML device was removed.
GetParentDevice

Retrieves the Direct3D 12 device that was used to create this DirectML device.
GetPrivateData

Gets application-defined data from a DirectML device object.
MakeResident

Causes one or more pageable objects to become resident in GPU memory. Also see IDMLDevice::Evict.
RecordDispatch

Records execution of a dispatchable object (an operator initializer, or a compiled operator) onto a command list.
Reset

Resets the binding table to wrap a new range of descriptors, potentially for a different operator or initializer. This allows dynamic reuse of the binding table.
Reset

Resets the initializer to handle initialization of a new set of operators.
SetMuteDebugOutput

Determine whether to mute DirectML from sending messages to the ID3D12InfoQueue.
SetName

Associates a name with the DirectML device object. This name is for use in debug diagnostics and tools.
SetPrivateData

Sets application-defined data to a DirectML device object, and associates that data with an application-defined GUID.
SetPrivateDataInterface

Associates an IUnknown-derived interface with the DirectML device object, and associates that interface with an application-defined GUID.

Interfaces

 
IDMLBindingTable

Wraps a range of an application-managed descriptor heap, and is used by DirectML to create bindings for resources. To create this object, call IDMLDevice::CreateBindingTable.
IDMLCommandRecorder

Records dispatches of DirectML work into a Direct3D 12 command list.
IDMLCompiledOperator

Represents a compiled, efficient form of an operator suitable for execution on the GPU. To create this object, call IDMLDevice::CompileOperator.
IDMLDebugDevice

Controls the DirectML debug layers.
IDMLDevice

Represents a DirectML device, which is used to create operators, binding tables, command recorders, and other objects. (IDMLDevice)
IDMLDevice1

Represents a DirectML device, which is used to create operators, binding tables, command recorders, and other objects. (IDMLDevice1)
IDMLDeviceChild

An interface implemented by all objects created from the DirectML device.
IDMLDispatchable

Implemented by objects that can be recorded into a command list for dispatch on the GPU, using IDMLCommandRecorder::RecordDispatch.
IDMLObject

An interface from which IDMLDevice and IDMLDeviceChild inherit directly (and all other interfaces, indirectly).
IDMLOperator

Represents a DirectML operator.
IDMLOperatorInitializer

Represents a specialized object whose purpose is to initialize compiled operators. To create an instance of this object, call IDMLDevice::CreateOperatorInitializer.
IDMLPageable

Implemented by objects that can be evicted from GPU memory, and hence that can be supplied to IDMLDevice::Evict and IDMLDevice::MakeResident.

Structures

 
DML_ACTIVATION_CELU_OPERATOR_DESC

Performs the continuously differentiable exponential linear unit (CELU) activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_ELU_OPERATOR_DESC

Performs an exponential linear unit (ELU) activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_HARD_SIGMOID_OPERATOR_DESC

Performs a hard sigmoid function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_HARDMAX_OPERATOR_DESC

Performs a hardmax function on each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_IDENTITY_OPERATOR_DESC

Performs the identity activation, effectively copying every element of InputTensor to the corresponding element of OutputTensor.
DML_ACTIVATION_LEAKY_RELU_OPERATOR_DESC

Performs a leaky rectified linear unit (ReLU) activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_LINEAR_OPERATOR_DESC

Performs the linear activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_LOG_SOFTMAX_OPERATOR_DESC

Performs a (natural) log-of-softmax activation function on each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_PARAMETERIZED_RELU_OPERATOR_DESC

Performs a parameterized rectified linear unit (ReLU) activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_PARAMETRIC_SOFTPLUS_OPERATOR_DESC

Performs a parametric softplus activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor. (DML_ACTIVATION_PARAMETRIC_SOFTPLUS_OPERATOR_DESC)
DML_ACTIVATION_RELU_GRAD_OPERATOR_DESC

Computes backpropagation gradients for a rectified linear unit (ReLU).
DML_ACTIVATION_RELU_OPERATOR_DESC

Performs a rectified linear unit (ReLU) activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_SCALED_ELU_OPERATOR_DESC

Performs a scaled exponential linear unit (ELU) activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_SCALED_TANH_OPERATOR_DESC

Performs a scaled hyperbolic tangent activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_SHRINK_OPERATOR_DESC

Performs the shrink activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_SIGMOID_OPERATOR_DESC

Performs the sigmoid function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_SOFTMAX_OPERATOR_DESC

Performs a softmax activation function on InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_SOFTPLUS_OPERATOR_DESC

Performs a parametric softplus activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor. (DML_ACTIVATION_SOFTPLUS_OPERATOR_DESC)
DML_ACTIVATION_SOFTSIGN_OPERATOR_DESC

Performs the softsign function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_TANH_OPERATOR_DESC

Performs a hyperbolic tangent activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ACTIVATION_THRESHOLDED_RELU_OPERATOR_DESC

Performs a thresholded rectified linear unit (ReLU) activation function on every element in InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ADAM_OPTIMIZER_OPERATOR_DESC

Computes updated weights (parameters) using the supplied gradients, based on the Adam (ADAptive Moment estimation) algorithm. This operator is an optimizer, and is typically used in the weight update step of a training loop to perform gradient descent.
DML_ARGMAX_OPERATOR_DESC

Outputs the indices of the maximum-valued elements within one or more dimensions of the input tensor.
DML_ARGMIN_OPERATOR_DESC

Outputs the indices of the minimum-valued elements within one or more dimensions of the input tensor.
DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC

Computes backpropagation gradients for average pooling (see DML_AVERAGE_POOLING_OPERATOR_DESC).
DML_AVERAGE_POOLING_OPERATOR_DESC

Averages values across the elements within the sliding window over the input tensor.
DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC

Computes backpropagation gradients for batch normalization.
DML_BATCH_NORMALIZATION_OPERATOR_DESC

The DML_BATCH_NORMALIZATION_OPERATOR_DESC structure (directml.h) performs a batch normalization on the input.
DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC

Computes backpropagation gradients for batch normalization training.
DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC

The DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC structure (directml.h) performs a batch normalization on the input.
DML_BINDING_DESC

Contains the description of a binding so that you can add it to the binding table via a call to one of the IDMLBindingTable methods.
DML_BINDING_PROPERTIES

Contains information about the binding requirements of a particular compiled operator, or operator initializer. This struct is retrieved from IDMLDispatchable::GetBindingProperties.
DML_BINDING_TABLE_DESC

Specifies parameters to IDMLDevice::CreateBindingTable and IDMLBindingTable::Reset.
DML_BUFFER_ARRAY_BINDING

Specifies a resource binding that is an array of individual buffer bindings.
DML_BUFFER_BINDING

Specifies a resource binding described by a range of bytes in a Direct3D 12 buffer, represented by an offset and size into an ID3D12Resource.
DML_BUFFER_TENSOR_DESC

Describes a tensor that will be stored in a Direct3D 12 buffer resource.
DML_CAST_OPERATOR_DESC

Casts each element in the input to the data type of the output tensor, and stores the result in the corresponding element of the output.
DML_CONVOLUTION_INTEGER_OPERATOR_DESC

Performs a convolution of the FilterTensor with the InputTensor. This operator performs forward convolution on integer data.
DML_CONVOLUTION_OPERATOR_DESC

Performs a convolution of the FilterTensor with the InputTensor. This operator supports a number of standard convolution configurations.
DML_CUMULATIVE_PRODUCT_OPERATOR_DESC

Multiplies the elements of a tensor along an axis, writing the running tally of the product into the output tensor.
DML_CUMULATIVE_SUMMATION_OPERATOR_DESC

Sums the elements of a tensor along an axis, writing the running tally of the summation into the output tensor.
DML_DEPTH_TO_SPACE_OPERATOR_DESC

Rearranges (permutes) data from depth into blocks of spatial data. The operator outputs a copy of the input tensor where values from the depth dimension are moved in spatial blocks to the height and width dimensions. (DML_DEPTH_TO_SPACE_OPERATOR_DESC)
DML_DEPTH_TO_SPACE1_OPERATOR_DESC

Rearranges (permutes) data from depth into blocks of spatial data. The operator outputs a copy of the input tensor where values from the depth dimension are moved in spatial blocks to the height and width dimensions. (DML_DEPTH_TO_SPACE1_OPERATOR_DESC)
DML_DIAGONAL_MATRIX_OPERATOR_DESC

Generates an identity-like matrix with ones (or other explicit value) on the major diagonal, and zeros everywhere else.
DML_DYNAMIC_QUANTIZE_LINEAR_OPERATOR_DESC

Calculates the quantization scale and zero point values necessary to quantize the InputTensor, then applies that quantization, writing the result to OutputTensor.
DML_ELEMENT_WISE_ABS_OPERATOR_DESC

Computes the absolute value for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_ACOS_OPERATOR_DESC

Computes the arccosine for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_ACOSH_OPERATOR_DESC

Computes the hyperbolic arccosine for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_ADD_OPERATOR_DESC

Adds every element in ATensor to its corresponding element in BTensor, placing the result into the corresponding element of OutputTensor. (DML_ELEMENT_WISE_ADD_OPERATOR_DESC)
DML_ELEMENT_WISE_ADD1_OPERATOR_DESC

Adds every element in ATensor to its corresponding element in BTensor and places the result into the corresponding element of OutputTensor, with the option for fused activation.
DML_ELEMENT_WISE_ASIN_OPERATOR_DESC

Computes the arcsine for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_ASINH_OPERATOR_DESC

Computes the hyperbolic arcsine for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_ATAN_OPERATOR_DESC

Computes the arctangent for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_ATAN_YX_OPERATOR_DESC

Computes the 2-argument arctangent for each element of ATensor and BTensor, where ATensor is the Y-axis and BTensor is the X-axis, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_ATANH_OPERATOR_DESC

Computes the hyperbolic arctangent for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_BIT_AND_OPERATOR_DESC

Computes the bitwise AND between each corresponding element of the input tensors, and writes the result into the output tensor.
DML_ELEMENT_WISE_BIT_COUNT_OPERATOR_DESC

Computes the bitwise population count (the number of bits set to 1) for each element of the input tensor, and writes the result into the output tensor.
DML_ELEMENT_WISE_BIT_NOT_OPERATOR_DESC

Computes the bitwise NOT for each element of the input tensor, and writes the result into the output tensor.
DML_ELEMENT_WISE_BIT_OR_OPERATOR_DESC

Computes the bitwise OR between each corresponding element of the input tensors, and writes the result into the output tensor.
DML_ELEMENT_WISE_BIT_SHIFT_LEFT_OPERATOR_DESC

Performs a logical left shift of each element of ATensor by a number of bits given by the corresponding element of BTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_BIT_SHIFT_RIGHT_OPERATOR_DESC

Performs a logical right shift of each element of ATensor by a number of bits given by the corresponding element of BTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_BIT_XOR_OPERATOR_DESC

Computes the bitwise XOR (eXclusive OR) between each corresponding element of the input tensors, and writes the result into the output tensor.
DML_ELEMENT_WISE_CEIL_OPERATOR_DESC

Computes the ceiling for each element of InputTensor, placing the result into the corresponding element of OutputTensor. The ceiling of x is the smallest integer that is greater than or equal to x.
DML_ELEMENT_WISE_CLIP_GRAD_OPERATOR_DESC

Computes backpropagation gradients for element-wise clip.
DML_ELEMENT_WISE_CLIP_GRAD1_OPERATOR_DESC

Computes backpropagation gradients for element-wise clip.
DML_ELEMENT_WISE_CLIP_OPERATOR_DESC

Performs the following operation for each element of InputTensor, placing the result into the corresponding element of OutputTensor. This operator clamps (or limits) every element in the input within the closed interval [Min, Max].
DML_ELEMENT_WISE_CLIP1_OPERATOR_DESC

Performs a clamping (or limiting) operation for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_CONSTANT_POW_OPERATOR_DESC

Raises each element of InputTensor to the power of Exponent, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_COS_OPERATOR_DESC

Computes the trigonometric cosine of each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_COSH_OPERATOR_DESC

Computes the hyperbolic cosine of each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC

Performs the following linear dequantization function on every element in InputTensor with respect to its corresponding element in ScaleTensor and ZeroPointTensor, placing the results in the corresponding element of OutputTensor.
DML_ELEMENT_WISE_DIFFERENCE_SQUARE_OPERATOR_DESC

Subtracts each element of BTensor from the corresponding element of ATensor, multiplies the result by itself, and places the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_DIVIDE_OPERATOR_DESC

Computes the quotient of each element of ATensor over the corresponding element of BTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_ERF_OPERATOR_DESC

Performs the Gaussian error function (erf) on each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_EXP_OPERATOR_DESC

Applies the natural exponentiation function to each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_FLOOR_OPERATOR_DESC

Computes the floor for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_IDENTITY_OPERATOR_DESC

Computes the identity for each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_IF_OPERATOR_DESC

Selects elements either from ATensor or BTensor, depending on the value of the corresponding element in ConditionTensor. Non-zero elements of ConditionTensor select from ATensor, while zero-valued elements select from BTensor.
DML_ELEMENT_WISE_IS_INFINITY_OPERATOR_DESC

Checks each element of InputTensor for IEEE-754 -inf, inf, or both, depending on the given InfinityMode, and places the result (1 for true, 0 for false) into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_IS_NAN_OPERATOR_DESC

For each element of the input tensor, returns 1 if the input is NaN (as defined by IEEE-754), and 0 otherwise. The result is placed into the corresponding element of the output tensor.
DML_ELEMENT_WISE_LOG_OPERATOR_DESC

Computes the base-e (natural) logarithm of each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_LOGICAL_AND_OPERATOR_DESC

Performs a logical AND on each pair of corresponding elements of the input tensors, placing the result (1 for true, 0 for false) into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_LOGICAL_EQUALS_OPERATOR_DESC

Performs a logical equals on each pair of corresponding elements of the input tensors, placing the result (1 for true, 0 for false) into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OPERATOR_DESC

Performs a logical greater than on each pair of corresponding elements of the input tensors, placing the result (1 for true, 0 for false) into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL_OPERATOR_DESC

Performs a logical greater than or equal to on each pair of corresponding elements of the input tensors, placing the result (1 for true, 0 for false) into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OPERATOR_DESC

Performs a logical less than on each pair of corresponding elements of the input tensors, placing the result (1 for true, 0 for false) into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL_OPERATOR_DESC

Performs a logical less than or equal to on each pair of corresponding elements of the input tensors, placing the result (1 for true, 0 for false) into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_LOGICAL_NOT_OPERATOR_DESC

Performs a logical NOT on each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_LOGICAL_OR_OPERATOR_DESC

Performs a logical OR on each pair of corresponding elements of the input tensors, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_LOGICAL_XOR_OPERATOR_DESC

Performs a logical XOR (exclusive or) on each pair of corresponding elements of the input tensors, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_MAX_OPERATOR_DESC

Takes the greater of two corresponding elements from the input tensors, and places the result into the corresponding element of the output tensor.
DML_ELEMENT_WISE_MEAN_OPERATOR_DESC

Averages each pair of corresponding elements of the input tensors, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_MIN_OPERATOR_DESC

Takes the lesser of two corresponding elements from the input tensors, and places the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_MODULUS_FLOOR_OPERATOR_DESC

Computes the modulus, with the same results as the Python modulus, for each pair of corresponding elements from the input tensors, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_MODULUS_TRUNCATE_OPERATOR_DESC

Computes the C modulus operator for each pair of corresponding elements of the input tensors, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_MULTIPLY_OPERATOR_DESC

Computes the product of each pair of corresponding elements of the input tensors, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_NEGATE_OPERATOR_DESC

Negates each element of InputTensor, storing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_POW_OPERATOR_DESC

Computes each element of InputTensor raised to the power of the corresponding element of ExponentTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC

Performs the following linear quantization function on every element in InputTensor with respect to its corresponding element in ScaleTensor and ZeroPointTensor, placing the results in the corresponding element of OutputTensor.
DML_ELEMENT_WISE_QUANTIZED_LINEAR_ADD_OPERATOR_DESC

Adds every element in ATensor to its corresponding element in BTensor, placing the result into the corresponding element of OutputTensor. (DML_ELEMENT_WISE_QUANTIZED_LINEAR_ADD_OPERATOR_DESC)
DML_ELEMENT_WISE_RECIP_OPERATOR_DESC

Computes the reciprocal for each element of the input tensor, placing the result into the corresponding element of the output tensor.
DML_ELEMENT_WISE_ROUND_OPERATOR_DESC

Rounds each element of InputTensor to an integer value, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_SIGN_OPERATOR_DESC

Returns a value representing the sign of each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_SIN_OPERATOR_DESC

Computes the trigonometric sine of each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_SINH_OPERATOR_DESC

Computes the hyperbolic sine of each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_SQRT_OPERATOR_DESC

Computes the square root of each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_SUBTRACT_OPERATOR_DESC

Subtracts each element of BTensor from the corresponding element of ATensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_TAN_OPERATOR_DESC

Computes the trigonometric tangent of each element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_TANH_OPERATOR_DESC

Computes the hyperbolic tangent of element of InputTensor, placing the result into the corresponding element of OutputTensor.
DML_ELEMENT_WISE_THRESHOLD_OPERATOR_DESC

Replaces all elements of InputTensor below the given threshold, Min, with Min. Results are placed into the corresponding element of OutputTensor.
DML_FEATURE_DATA_FEATURE_LEVELS

Provides detail about the feature levels supported by a DirectML device.
DML_FEATURE_DATA_TENSOR_DATA_TYPE_SUPPORT

Provides detail about whether a DirectML device supports a particular data type within tensors.
DML_FEATURE_QUERY_FEATURE_LEVELS

Used to query a DirectML device for its support for one or more feature levels.
DML_FEATURE_QUERY_TENSOR_DATA_TYPE_SUPPORT

Used to query a DirectML device for its support for a particular data type within tensors.
DML_FILL_VALUE_CONSTANT_OPERATOR_DESC

Fills a tensor with the given constant Value.
DML_FILL_VALUE_SEQUENCE_OPERATOR_DESC

Fills a tensor with a sequence.
DML_GATHER_ELEMENTS_OPERATOR_DESC

Gathers elements from the input tensor along the given axis using the indices tensor to remap into the input.
DML_GATHER_ND_OPERATOR_DESC

Gathers elements from the input tensor, using the indices tensor to remap indices to entire subblocks of the input. (DML_GATHER_ND_OPERATOR_DESC)
DML_GATHER_ND1_OPERATOR_DESC

Gathers elements from the input tensor, using the indices tensor to remap indices to entire subblocks of the input. (DML_GATHER_ND1_OPERATOR_DESC)
DML_GATHER_OPERATOR_DESC

Gathers elements from the input tensor along Axis, using IndicesTensor to remap indices.
DML_GEMM_OPERATOR_DESC

Performs a general matrix multiplication function of the form Output = FusedActivation(Alpha * TransA(A) x TransB(B) + Beta * C), where x denotes matrix multiplication, and * denotes multiplication with a scalar.
DML_GRAPH_DESC

Describes a graph of DirectML operators used to compile a combined, optimized operator.
DML_GRAPH_EDGE_DESC

A generic container for a connection within a graph of DirectML operators defined by DML_GRAPH_DESC and passed to IDMLDevice1::CompileGraph.
DML_GRAPH_NODE_DESC

A generic container for a node within a graph of DirectML operators defined by DML_GRAPH_DESC and passed to IDMLDevice1::CompileGraph.
DML_GRU_OPERATOR_DESC

Performs a (standard layers) one-layer gated recurrent unit (GRU) function on the input. This operator uses multiple gates to perform this layer. These gates are performed multiple times in a loop dictated by the sequence length dimension and the SequenceLengthsTensor.
DML_INPUT_GRAPH_EDGE_DESC

Describes a connection within a graph of DirectML operators defined by DML_GRAPH_DESC and passed to IDMLDevice1::CompileGraph. This structure is used to define a connection from a graph input to an input of an internal node.
DML_INTERMEDIATE_GRAPH_EDGE_DESC

Describes a connection within a graph of DirectML operators defined by DML_GRAPH_DESC and passed to IDMLDevice1::CompileGraph. This structure is used to define a connection between internal nodes.
DML_JOIN_OPERATOR_DESC

Concatenates an array of input tensors along a specified axis.
DML_LOCAL_RESPONSE_NORMALIZATION_GRAD_OPERATOR_DESC

Computes backpropagation gradients for local response normalization.
DML_LOCAL_RESPONSE_NORMALIZATION_OPERATOR_DESC

Performs a local response normalization (LRN) function on the input.
DML_LP_NORMALIZATION_OPERATOR_DESC

Performs an Lp-normalization function along the specified axis of the input tensor.
DML_LP_POOLING_OPERATOR_DESC

Computes the Lp-normalized value across the elements within the sliding window over the input tensor.
DML_LSTM_OPERATOR_DESC

Performs a one-layer long short term memory (LSTM) function on the input. This operator uses multiple gates to perform this layer. These gates are performed multiple times in a loop, dictated by the sequence length dimension and the SequenceLengthsTensor.
DML_MATRIX_MULTIPLY_INTEGER_OPERATOR_DESC

Performs a matrix multiplication function on integer data.
DML_MAX_POOLING_GRAD_OPERATOR_DESC

Computes backpropagation gradients for max pooling (see DML_MAX_POOLING2_OPERATOR_DESC).
DML_MAX_POOLING_OPERATOR_DESC

Computes the maximum value across the elements within the sliding window over the input tensor.
DML_MAX_POOLING1_OPERATOR_DESC

Computes the maximum value across the elements within the sliding window over the input tensor, and optionally returns the indices of the maximum values selected. (DML_MAX_POOLING1_OPERATOR_DESC)
DML_MAX_POOLING2_OPERATOR_DESC

Computes the maximum value across the elements within the sliding window over the input tensor, and optionally returns the indices of the maximum values selected. (DML_MAX_POOLING2_OPERATOR_DESC)
DML_MAX_UNPOOLING_OPERATOR_DESC

Inverts a max-pooling operation (see DML_MAX_POOLING_OPERATOR1_DESC for details) by filling the output tensor OutputTensor with the values in the input tensor InputTensor, as obtained from a max-pooling operation, according to the index values provided in the IndicesTensor. The elements in the output tensor untouched by this process are left with zero values.
DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC

Performs a mean variance normalization function on the input tensor. This operator will calculate the mean and variance of the input tensor to perform normalization. (DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC)
DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC

Performs a mean variance normalization function on the input tensor. This operator will calculate the mean and variance of the input tensor to perform normalization. (DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC)
DML_NONZERO_COORDINATES_OPERATOR_DESC

Computes the N-dimensional coordinates of all non-zero elements of the input tensor.
DML_ONE_HOT_OPERATOR_DESC

Produces a tensor filled with one-hot encoded values. This operator produces an output tensor where, for all sequences in a chosen axis, all but one element in that sequence is set to OffValue, and the remaining single element is set to OnValue.
DML_OPERATOR_DESC

A generic container for an operator description. You construct DirectML operators using the parameters specified in this struct. See IDMLDevice::CreateOperator for additional details.
DML_OPERATOR_GRAPH_NODE_DESC

Decribes a node within a graph of DirectML operators defined by DML_GRAPH_DESC and passed to IDMLDevice1::CompileGraph.
DML_OUTPUT_GRAPH_EDGE_DESC

Describes a connection within a graph of DirectML operators defined by DML_GRAPH_DESC and passed to IDMLDevice1::CompileGraph. This structure is used to define a connection from an output of an internal node to a graph output.
DML_PADDING_OPERATOR_DESC

The DML_PADDING_OPERATOR_DESC structure (directml.h) inflates the input tensor with constant or mirrored values on the edges, and writes the result to the output.
DML_PADDING1_OPERATOR_DESC

The DML_PADDING1_OPERATOR_DESC structure (directml.h) inflates the input tensor with constant or mirrored values on the edges, and writes the result to the output.
DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC

Performs a convolution of the FilterTensor with the InputTensor. This operator performs forward convolution on quantized data. This operator is mathematically equivalent to dequantizing the inputs, convolving, and then quantizing the output.
DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC

Performs a matrix multiplication function on quantized data. This operator is mathematically equivalent to dequantizing the inputs, then performing matrix multiply, and then quantizing the output.
DML_RANDOM_GENERATOR_OPERATOR_DESC

Fills an output tensor with deterministically-generated, pseudo-random, uniformly-distributed bits. This operator optionally may also output an updated internal generator state, which can be used during subsequent executions of the operator.
DML_REDUCE_OPERATOR_DESC

Outputs the reduction of elements (sum, product, minimum, and so on) within one or more dimensions of the input tensor.
DML_RESAMPLE_GRAD_OPERATOR_DESC

Computes backpropagation gradients for Resample (see DML_RESAMPLE1_OPERATOR_DESC).
DML_RESAMPLE_OPERATOR_DESC

Resamples elements from the source to the destination tensor, using the scale factors to compute the destination tensor size. You can use a linear or nearest-neighbor interpolation mode. (DML_RESAMPLE_OPERATOR_DESC)
DML_RESAMPLE1_OPERATOR_DESC

Resamples elements from the source to the destination tensor, using the scale factors to compute the destination tensor size. You can use a linear or nearest-neighbor interpolation mode. (DML_RESAMPLE1_OPERATOR_DESC)
DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC

Reverses the elements of one or more subsequences of a tensor. The set of subsequences to be reversed is chosen based on the provided axis and sequence lengths.
DML_RNN_OPERATOR_DESC

Performs a one-layer simple recurrent neural network (RNN) function on the input. This function is often referred to as the Input Gate. This operator performs this function multiple times in a loop, dictated by the sequence length dimension and the SequenceLengthsTensor.
DML_ROI_ALIGN_GRAD_OPERATOR_DESC

Computes backpropagation gradients for ROI_ALIGN and ROI_ALIGN1.
DML_ROI_ALIGN_OPERATOR_DESC

Performs an ROI align operation, as described in the Mask R-CNN paper. In summary, the operation extracts crops from the input image tensor and resizes them to a common output size specified by the last 2 dimensions of OutputTensor using the specified InterpolationMode.
DML_ROI_ALIGN1_OPERATOR_DESC

Performs an ROI align operation, as described in the Mask R-CNN paper. In summary, the operation extracts cropped windows from the input image tensor, and resizes them to a common output size specified by the last 2 dimensions of OutputTensor using the specified InterpolationMode.
DML_ROI_POOLING_OPERATOR_DESC

Performs a MaxPool function across the input tensor (according to regions of interest, or ROIs).
DML_SCALAR_UNION

A union of scalar types.
DML_SCALE_BIAS

Contains the values of scale and bias terms supplied to a DirectML operator. Scale and bias have the effect of applying the function g(x) = x * Scale + Bias.
DML_SCATTER_ND_OPERATOR_DESC

Copies the whole input tensor to the output, then overwrites selected indices with corresponding values from the updates tensor. (DML_SCATTER_ND_OPERATOR_DESC)
DML_SCATTER_OPERATOR_DESC

Copies the whole input tensor to the output, then overwrites selected indices with corresponding values from the updates tensor. (DML_SCATTER_OPERATOR_DESC)
DML_SIZE_2D

Contains values that can represent the size (as supplied to a DirectML operator) of a 2-D plane of elements within a tensor, or a 2-D scale, or any 2-D width/height value.
DML_SLICE_GRAD_OPERATOR_DESC

Computes backpropagation gradients for Slice (see DML_SLICE1_OPERATOR_DESC).
DML_SLICE_OPERATOR_DESC

Extracts a single subregion (a "slice") of an input tensor. (DML_SLICE_OPERATOR_DESC)
DML_SLICE1_OPERATOR_DESC

Extracts a single subregion (a "slice") of an input tensor. (DML_SLICE1_OPERATOR_DESC)
DML_SPACE_TO_DEPTH_OPERATOR_DESC

Rearranges blocks of spatial data into depth. The operator outputs a copy of the input tensor where values from the height and width dimensions are moved to the depth dimension. (DML_SPACE_TO_DEPTH_OPERATOR_DESC)
DML_SPACE_TO_DEPTH1_OPERATOR_DESC

Rearranges blocks of spatial data into depth. The operator outputs a copy of the input tensor where values from the height and width dimensions are moved to the depth dimension. (DML_SPACE_TO_DEPTH1_OPERATOR_DESC)
DML_SPLIT_OPERATOR_DESC

Splits an input tensor along an axis into multiple output tensors.
DML_TENSOR_DESC

A generic container for a DirectML tensor description.
DML_TILE_OPERATOR_DESC

Constructs an output tensor by tiling the input tensor. The elements in each dimension of the input tensor are repeated by a multiple in the Repeats array.
DML_TOP_K_OPERATOR_DESC

Selects the largest K elements from each sequence along an axis of the InputTensor, and returns the values and indices of those elements in the OutputValueTensor and OutputIndexTensor, respectively.
DML_TOP_K1_OPERATOR_DESC

Selects the largest or smallest K elements from each sequence along an axis of the InputTensor, and returns the values and indices of those elements in the OutputValueTensor and OutputIndexTensor, respectively.
DML_UPSAMPLE_2D_OPERATOR_DESC

Upsamples the input image, writing the result into the output tensor. The order of the dimensions should be NCHW (BatchSize, ChannelCount, Height, Width) or NCDHW (BatchSize, ChannelCount, Depth, Height, Width), but strides can be used if the data is stored in a different format.
DML_VALUE_SCALE_2D_OPERATOR_DESC

Performs an element-wise scale-and-bias function, Output = Scale * Input + Bias.