100 lines
5.6 KiB
Markdown
100 lines
5.6 KiB
Markdown
![]() |

|
||
|
|
||
|
[README](/README.md#documentation) > **Terminology**
|
||
|
|
||
|
# CUTLASS Terminology
|
||
|
|
||
|
`AlignedBuffer<T, N>`: statically sized array type; union-safe, no construction guarantee for elements
|
||
|
|
||
|
`Array<T, N>`: container for holding numeric types - handles bit packing for small numeric types (e.g. int4_t, uint4_t, bin1_t)
|
||
|
`sizeof(Array<T, N>)` - gives expected value in units of bytes with minimum storage of `1 B`: (sizeof_bits<T>::value * N) / 8
|
||
|
|
||
|
**Capacity**: (scalar) physical number of elements in memory required to store a multidimensional object; expressed as the type's LongIndex type
|
||
|
- example: the capacity of a column-major matrix is `lda * N`
|
||
|
|
||
|
**Element**: data type describing one item in a multidimensional tensor, array, or matrix
|
||
|
|
||
|
**Extent**: (vector-valued quantity) the logical size of each dimension of a multidimensional index space. Consistent with the [C++ Standard Library](https://en.cppreference.com/w/cpp/types/extent).
|
||
|
- `Coord<N> extent()`
|
||
|
- `Index extent(int dim)`
|
||
|
|
||
|
**Fragment**: a register-backed array of elements used to store a thread's part of a tile
|
||
|
|
||
|
**Index**: signed integer representing quantities aligned with a logical dimension
|
||
|
|
||
|
**Layout**: functor mapping logical coordinates of a tensor to linear offset (as LongIndex); owns stride vectors, if any.
|
||
|
|
||
|
**LongIndex**: signed integer representing offsets in memory; typically wider than Index type
|
||
|
|
||
|
**Numeric Type**: a CUTLASS data type used to represent real-valued quantities; is trivially copyable.
|
||
|
|
||
|
**Operator**: an object performing a computation on matrix or tensor objects. May be further refined by scope within the execution model hierarchy.
|
||
|
|
||
|
**Pitch Linear**: linear memory allocation obtained from a user-defined 2-D size, which specifies the
|
||
|
contiguous and strided dimensions of a tile.
|
||
|
|
||
|
**Planar Complex**: representation of complex tensors as two real-valued tensors, with real elements in one part and imaginary elements in another part of identical layout, separated by an offset
|
||
|
|
||
|
**Policy**: additional details extending the interface of a template guiding internal implementation;
|
||
|
typically used to target specific design points known to be efficient
|
||
|
|
||
|
**Rank**: number of dimensions in a multidimensional index space, array, tensor, or matrix. Consistent with
|
||
|
[C++ Standard Library](https://en.cppreference.com/w/cpp/types/rank)
|
||
|
|
||
|
**Register**: in device code, registes are the most efficient storage for statically sized arrays of elements.
|
||
|
Arrays may be expected to be stored in registers if all accesses are made via constexpr indices or within
|
||
|
fully unrolled loops.
|
||
|
|
||
|
**Residue**: partial tile or matrix computation which may require special accommodation for functional correctness or performance
|
||
|
|
||
|
**Size**: (scalar) number of logical elements in a tensor; equal to the product of each member of `extent()`
|
||
|
- `LongIndex size()`
|
||
|
|
||
|
`sizeof_bits<T>::value` - template pattern returning the size of a numeric type or array in units of bits
|
||
|
|
||
|
**Storage**: when appropriate, refers to some alternative type used to store a packed collection of elements;
|
||
|
may be used to handle bit-level packing or make types safe for use in unions
|
||
|
|
||
|
**TensorRef**: contains base pointer and _Layout_ object for referencing infinitely-sized tensor object
|
||
|
|
||
|
**TensorView**: contains _TensorRef_ and extent of a finite mathematical object
|
||
|
|
||
|
**Tile**: partitions of a tensor that have constant extents and layout known at compile time
|
||
|
|
||
|
**Tile Iterator**: abstraction for accessing and traversing a sequence of tiles in a tensor; CUTLASS specifies
|
||
|
[formal concepts for tile iterators](tile_iterator_concept.md)
|
||
|
|
||
|
**Thread Map**: abstraction for defining how threads are mapped to a given tile.
|
||
|
|
||
|
**Trait**: characteristics of a fully-specialized type, typically used in metaprogramming reflection
|
||
|
|
||
|
**View**: an object containing references to a data structure that it does not own; typically, construction of views is lightweight
|
||
|
|
||
|
**Warp**: a collection of hardware threads executing in lock-step; warp-level operations typically rely on cooperation among the threads within the warp
|
||
|
|
||
|
# Copyright
|
||
|
|
||
|
Copyright (c) 2017-2019, NVIDIA CORPORATION. All rights reserved.
|
||
|
|
||
|
```
|
||
|
Redistribution and use in source and binary forms, with or without modification, are permitted
|
||
|
provided that the following conditions are met:
|
||
|
* Redistributions of source code must retain the above copyright notice, this list of
|
||
|
conditions and the following disclaimer.
|
||
|
* Redistributions in binary form must reproduce the above copyright notice, this list of
|
||
|
conditions and the following disclaimer in the documentation and/or other materials
|
||
|
provided with the distribution.
|
||
|
* Neither the name of the NVIDIA CORPORATION nor the names of its contributors may be used
|
||
|
to endorse or promote products derived from this software without specific prior written
|
||
|
permission.
|
||
|
|
||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
|
||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||
|
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
|
||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||
|
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||
|
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||
|
STRICT LIABILITY, OR TOR (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
```
|