doc: doesn't -> does not
This commit is contained in:
@@ -312,7 +312,7 @@ So we came up with another solution using zero-padding. The idea is to round the
|
||||
channels up to make them multiples of the block size and pad the resulting tail
|
||||
with zeros (in the example above, `24 = div_up(17, 8) * 8`). Then primitives
|
||||
like convolutions might work with a rounded-up number of channels instead of
|
||||
the original ones and compute the correct result (adding zeros doesn't change
|
||||
the original ones and compute the correct result (adding zeros does not change
|
||||
the result).
|
||||
|
||||
That enables supporting an arbitrary number of channels with almost no changes
|
||||
|
||||
@@ -143,7 +143,7 @@ represented by the u8 data type, the non-symmetric quantization is assumed.
|
||||
Namely, the formula is:
|
||||
- \f$data_{f32}[:] = \frac{1}{scale}(data_{u8}[:] - shift)\f$.
|
||||
|
||||
But similarly to the other primitives, the LSTM primitive doesn't handle
|
||||
But similarly to the other primitives, the LSTM primitive does not handle
|
||||
potential overflows automatically. It is up to the user to specify the
|
||||
appropriate quantization parameters (see
|
||||
dnnl::primitive_attr::set_rnn_data_qparams() and
|
||||
@@ -264,7 +264,7 @@ the implementations are given below:
|
||||
|
||||
2. **s8/s8 GEMM** (dnnl_gemm_s8s8s32()) does nothing to handle the overflow
|
||||
issue. It is up to the user to prepare the data so that the
|
||||
overflow/saturation doesn't occur. For instance, the user can specify
|
||||
overflow/saturation does not occur. For instance, the user can specify
|
||||
s7 `[-64, 63]` instead of s8 for the second input.
|
||||
|
||||
@warning
|
||||
|
||||
@@ -12,7 +12,7 @@ primitive implementations, etc. It can significantly reduce primitive creation
|
||||
overhead, especially when an application or a framework creates primitives
|
||||
for every instance of inference or iteration of training process.
|
||||
|
||||
The primitive cache is global hence a user doesn't have to maintain any
|
||||
The primitive cache is global hence a user does not have to maintain any
|
||||
persistent oneDNN resources to benefit from the primitive cache.
|
||||
|
||||
## Managing Memory Consumption
|
||||
|
||||
@@ -283,7 +283,7 @@ In Intel MKL-DNN v1.0, constructing a memory object using special value
|
||||
`MKLDNN_MEMORY_ALLOCATE` for a handle results in the buffer being allocated by
|
||||
the library. This makes the behavior of the C API memory object constructor
|
||||
aligned with its C++ API `mkldnn::memory` counterpart. Note that the C++ API
|
||||
memory object class still has an extra constructor that doesn't take a handle
|
||||
memory object class still has an extra constructor that does not take a handle
|
||||
at all, and asks the library to allocate the buffer (that is, the same behavior
|
||||
as calling with the handle equal to `MKLDNN_MEMORY_ALLOCATE`).
|
||||
|
||||
@@ -346,7 +346,7 @@ These changes bring new data types and functions, such as:
|
||||
// create a memory
|
||||
// native_handle can:
|
||||
// - point to the user allocated memory, i.e. valid handle. In this case the
|
||||
// library doesn't own allocated memory.
|
||||
// library does not own allocated memory.
|
||||
// - be MKLDNN_NATIVE_HANDLE_ALLOCATE to ask the library to allocate and
|
||||
// attach memory. In this case the library owns allocated memory.
|
||||
// - be MKLDNN_NATIVE_HANDLE_NONE to create mkldnn_memory w/o attached memory.
|
||||
|
||||
@@ -16,9 +16,9 @@ standard @ref dev_guide_conventions):
|
||||
|
||||
where \f$c = C_1 + .. + C_{i-1} {}_{} + c'\f$.
|
||||
|
||||
The concat primitive doesn't have a notion of forward or backward propagations.
|
||||
The backward propagation for the concatenation operation is simply an identity
|
||||
operation.
|
||||
The concat primitive does not have a notion of forward or backward
|
||||
propagations. The backward propagation for the concatenation operation is
|
||||
simply an identity operation.
|
||||
|
||||
## Execution Arguments
|
||||
When executed, the inputs and outputs should be mapped to an execution argument index as specified by the following table.
|
||||
@@ -55,7 +55,7 @@ meaning associated with any logical dimensions.
|
||||
|
||||
### Post-ops and Attributes
|
||||
|
||||
The concat primitive doesn't support any post-ops or attributes.
|
||||
The concat primitive does not support any post-ops or attributes.
|
||||
|
||||
## Implementation Limitations
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@ if the scales are not known at the primitive descriptor creation stage.
|
||||
In this case, the user must provide the scales as an additional input memory
|
||||
object with argument `DNNL_ARG_ATTR_OUTPUT_SCALES` during the execution stage.
|
||||
|
||||
@note The library doesn't prevent using post-ops in training, but note that
|
||||
@note The library does not prevent using post-ops in training, but note that
|
||||
not all post-ops are feasible for training usage. For instance, using ReLU
|
||||
with non-zero negative slope parameter as a post-op would not produce an
|
||||
additional output `workspace` that is required to compute backward propagation
|
||||
|
||||
@@ -126,7 +126,7 @@ meaning associated with any logical dimensions.
|
||||
|
||||
### Post-ops and Attributes
|
||||
|
||||
The eltwise primitive doesn't support any post-ops or attributes.
|
||||
The eltwise primitive does not support any post-ops or attributes.
|
||||
|
||||
@anchor dg_eltwise_impl_limits
|
||||
## Implementation Limitations
|
||||
@@ -151,7 +151,7 @@ The eltwise primitive doesn't support any post-ops or attributes.
|
||||
|
||||
- Moreover, such operations can be fused as a
|
||||
[post-op](@ref dev_guide_attributes) with the previous operation if that
|
||||
operation doesn't require its \dst to compute the backward
|
||||
operation does not require its \dst to compute the backward
|
||||
propagation (e.g., if the convolution operation satisfies these
|
||||
conditions).
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ argument index as specified by the following table.
|
||||
|
||||
### Post-ops and Attributes
|
||||
|
||||
The logsoftmax primitive doesn't support any post-ops or attributes.
|
||||
The logsoftmax primitive does not support any post-ops or attributes.
|
||||
|
||||
### Data Type Support
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ of any preceding compute-intensive primitive.
|
||||
|
||||
### Post-ops and Attributes
|
||||
|
||||
The LRN primitive doesn't support any post-ops or attributes.
|
||||
The LRN primitive does not support any post-ops or attributes.
|
||||
|
||||
|
||||
@anchor dg_lrn_impl_limits
|
||||
|
||||
@@ -134,7 +134,7 @@ argument with index set to
|
||||
|
||||
1. Check @ref dev_guide_data_types.
|
||||
|
||||
2. The CPU engine doesn't support `u8` data type for weights.
|
||||
2. The CPU engine does not support `u8` data type for weights.
|
||||
|
||||
## Performance Tips
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ Average pooling supports two algorithms:
|
||||
#### Difference Between Forward Training and Forward Inference
|
||||
|
||||
- Max pooling requires a `workspace` for the #dnnl_forward_training propagation
|
||||
kind, and doesn't require it for #dnnl_forward_inference (see details below).
|
||||
kind, and does not require it for #dnnl_forward_inference (see details below).
|
||||
|
||||
### Backward
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ source and destination memory objects:
|
||||
|
||||
### Post-ops and Attributes
|
||||
|
||||
The resampling primitive doesn't support any post-ops or attributes.
|
||||
The resampling primitive does not support any post-ops or attributes.
|
||||
|
||||
## Implementation Limitations
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ of any preceding compute-intensive primitive.
|
||||
|
||||
### Post-ops and Attributes
|
||||
|
||||
The shuffle primitive doesn't support any post-ops or attributes.
|
||||
The shuffle primitive does not support any post-ops or attributes.
|
||||
|
||||
|
||||
@anchor dg_shuffle_impl_limits
|
||||
|
||||
@@ -67,7 +67,7 @@ argument index as specified by the following table.
|
||||
|
||||
### Post-ops and Attributes
|
||||
|
||||
The softmax primitive doesn't support any post-ops or attributes.
|
||||
The softmax primitive does not support any post-ops or attributes.
|
||||
|
||||
### Data Type Support
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ The sum primitive sums \f$N\f$ tensors (the variable names follow the standard
|
||||
\src_i(\overline{x})
|
||||
\f]
|
||||
|
||||
The sum primitive doesn't have a notion of forward or backward propagations.
|
||||
The sum primitive does not have a notion of forward or backward propagations.
|
||||
The backward propagation for the sum operation is simply an identity operation.
|
||||
|
||||
## Execution Arguments
|
||||
@@ -40,7 +40,7 @@ argument index as specified by the following table.
|
||||
|
||||
### Post-ops and Attributes
|
||||
|
||||
The sum primitive doesn't support any post-ops or attributes.
|
||||
The sum primitive does not support any post-ops or attributes.
|
||||
|
||||
### Data Types Support
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ dnnl_primitive_attr_set_SOMETHING_ELSE(attr, other_params);
|
||||
dnnl_primitive_desc_t op_pd; // operation primitive descriptor
|
||||
dnnl_primitive_desc_create(&op_pd, &op_d, attr, engine, hint_fwd_pd);
|
||||
|
||||
// changing attr object here doesn't have any effect on op_pd
|
||||
// changing attr object here does not have any effect on op_pd
|
||||
|
||||
// once attr is no more used we can immediately destroy it
|
||||
dnnl_primitive_attr_destroy(attr);
|
||||
@@ -96,7 +96,7 @@ create a primitive descriptor with the attributes they set, it might happen
|
||||
that there is no primitive implementation that supports such a configuration.
|
||||
In this case, the library will return #dnnl_unimplemented in the case of the C
|
||||
API or throw a corresponding @ref dnnl::error exception in the case of the C++
|
||||
API. Unfortunately, the library doesn't currently provide any hints about what
|
||||
API. Unfortunately, the library does not currently provide any hints about what
|
||||
exactly is going wrong in this case. The corresponding section of the
|
||||
documentation simply documents the primitives' capabilities.
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ primitive::primitive_desc op_pd(params, attr); // create a pd with the attr
|
||||
@warning
|
||||
Different primitives may have different post-ops support. Moreover, the
|
||||
support might also depend on the actual implementation of a primitive. For
|
||||
instance, the library generally doesn't support post-ops for reference
|
||||
instance, the library generally does not support post-ops for reference
|
||||
primitives (which are typically very slow, so there is no point in doing
|
||||
the actual fusion). Robust code should handle errors accordingly. See the
|
||||
[section on attributes error handling](@ref dev_guide_attributes_error_handling).
|
||||
|
||||
@@ -45,7 +45,7 @@ For the rest of this guide, we will assume that \f$0_{x\_int8} = 0\f$.
|
||||
Depending on the architecture, the behavior of int8 computations might slightly
|
||||
vary. For more details, refer to @ref dev_guide_int8_computations.
|
||||
|
||||
This guide doesn't cover how the appropriate scaling factor can be found.
|
||||
This guide does not cover how the appropriate scaling factor can be found.
|
||||
Refer to the materials in the [Introduction](@ref dgaq_intro).
|
||||
|
||||
### Example: Convolution Quantization Workflow
|
||||
@@ -80,7 +80,7 @@ where
|
||||
- \f$downconvert\_f32\_to\_s8()\f$ converts an `f32` value to `s8` with
|
||||
potential saturation if the values are out of the range of the INT8 data type.
|
||||
|
||||
Note that in order to perform the operation, one doesn't need to know the
|
||||
Note that in order to perform the operation, one does not need to know the
|
||||
exact scaling factors for all the tensors; it is enough to know only the
|
||||
\f$output\_scale\f$. The library utilizes this fact: a user needs to provide
|
||||
only this one extra parameter to the convolution primitive (see the [Output
|
||||
@@ -140,7 +140,7 @@ where
|
||||
## API
|
||||
|
||||
The library API to support for INT8 was designed for the model described above.
|
||||
However, it doesn't require users to follow exactly this model. As long as
|
||||
However, it does not require users to follow exactly this model. As long as
|
||||
users can fit their model into the given functionality everything should work
|
||||
fine. Having this in mind we tried to design a minimal and simple yet powerful
|
||||
enough quantization API.
|
||||
|
||||
@@ -136,7 +136,7 @@ dnnl::primitive::primitive_desc op_pd(op_d, attr, engine);
|
||||
// Query the scratchpad memory descriptor
|
||||
dnnl::memory::desc scratchpad_md = op_pd.scratchpad_desc();
|
||||
|
||||
// Note, that a primitive doesn't consume memory in this configuration:
|
||||
// Note, that a primitive does not consume memory in this configuration:
|
||||
assert(op_pd.query_s64(dnnl::query::memory_consumption_s64) == 0);
|
||||
|
||||
// Create a primitive
|
||||
|
||||
Reference in New Issue
Block a user