CUTLASS 3.4.0 (#1286)
* CUTLASS 3.4.0 * Update CHANGELOG.md --------- Co-authored-by: Pradeep Ramani <prramani@nvidia.com>
This commit is contained in:
co-authored by
Pradeep Ramani
parent
b7508e3379
commit
8236f30675
@@ -65,7 +65,7 @@ private:
|
||||
|
||||
/// Size of device workspace in bytes
|
||||
size_t workspace_size_;
|
||||
|
||||
|
||||
/// Indicates whether scalars are host or device pointers
|
||||
ScalarPointerMode scalar_pointer_mode_;
|
||||
|
||||
@@ -89,7 +89,7 @@ public:
|
||||
//
|
||||
// Persistent state accessors
|
||||
//
|
||||
|
||||
|
||||
/// Returns compute capability of the selected device
|
||||
int compute_capability() const;
|
||||
|
||||
@@ -135,7 +135,7 @@ public:
|
||||
int K, /// GEMM K dimension
|
||||
|
||||
NumericTypeID element_compute, /// Data type of internal accumulation
|
||||
|
||||
|
||||
NumericTypeID element_scalar, /// Data type of alpha/beta scalars
|
||||
|
||||
void const *alpha, /// Pointer to alpha scalar
|
||||
@@ -164,7 +164,7 @@ public:
|
||||
void * ptr_D, /// Pointer to D matrix
|
||||
int64_t ldd /// Leading dimension of D matrix
|
||||
);
|
||||
|
||||
|
||||
/// Executes a GEMM computation: D <= alpha * A*B + beta * C.
|
||||
//
|
||||
// Supports batched-strided, batched array or split-K serial or split-K parallel.
|
||||
@@ -176,7 +176,6 @@ public:
|
||||
int M, /// GEMM M dimension
|
||||
int N, /// GEMM N dimension
|
||||
int K, /// GEMM K dimension
|
||||
|
||||
NumericTypeID element_compute, /// Data type of internal accumulation
|
||||
|
||||
NumericTypeID element_scalar, /// Data type of alpha/beta scalars
|
||||
@@ -218,7 +217,7 @@ public:
|
||||
/// Planar complex GEMM
|
||||
///
|
||||
/// Note, all data types are the real-valued base types used by the planar-complex GEMM kernel.
|
||||
///
|
||||
///
|
||||
Status gemm_planar_complex(
|
||||
|
||||
int M, /// GEMM M dimension
|
||||
@@ -245,7 +244,7 @@ public:
|
||||
ComplexTransform transform_B, /// Complex transformation applied to B matrix
|
||||
|
||||
void const * ptr_B_real, /// Pointer to real part of B matrix
|
||||
void const * ptr_B_imag, /// Pointer to imaginary part of B matrix
|
||||
void const * ptr_B_imag, /// Pointer to imaginary part of B matrix
|
||||
int64_t ldb_real, /// Leading dimension of real part of B matrix
|
||||
int64_t ldb_imag, /// Leading dimension of imaginary part of B matrix
|
||||
|
||||
@@ -301,7 +300,7 @@ public:
|
||||
ComplexTransform transform_A, /// Complex transformation applied to A matrix
|
||||
|
||||
void const * const * ptr_A_real, /// Pointer to array containing pointers to real part of A matrices
|
||||
void const * const * ptr_A_imag, /// Pointer to array containing pointers to imaginary part of A matrices
|
||||
void const * const * ptr_A_imag, /// Pointer to array containing pointers to imaginary part of A matrices
|
||||
|
||||
int64_t lda_real, /// Leading dimension of real part of A matrix
|
||||
int64_t lda_imag, /// Leading dimension of imaginary part of A matrix
|
||||
|
||||
@@ -28,17 +28,17 @@
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
**************************************************************************************************/
|
||||
/*!
|
||||
/*!
|
||||
\file
|
||||
|
||||
\brief CUTLASS Library is an object-oriented approach to managing operations implemented by CUTLASS.
|
||||
|
||||
Generally,
|
||||
|
||||
|
||||
description - compile-time constant parameters used to instantiate an operation
|
||||
|
||||
configuration - runtime parameters with computationally expensive initialization
|
||||
|
||||
configuration - runtime parameters with computationally expensive initialization
|
||||
|
||||
arguments - runtime parameters that may be passed to an initialized operation with low
|
||||
computational overhead
|
||||
*/
|
||||
@@ -87,26 +87,26 @@ public:
|
||||
virtual OperationDescription const & description() const = 0;
|
||||
|
||||
virtual Status can_implement(
|
||||
void const *configuration,
|
||||
void const *configuration,
|
||||
void const *arguments) const = 0;
|
||||
|
||||
|
||||
virtual uint64_t get_host_workspace_size(
|
||||
void const *configuration) const = 0;
|
||||
|
||||
|
||||
virtual uint64_t get_device_workspace_size(
|
||||
void const *configuration,
|
||||
void const *arguments = nullptr) const = 0;
|
||||
|
||||
|
||||
virtual Status initialize(
|
||||
void const *configuration,
|
||||
void *host_workspace,
|
||||
void *device_workspace = nullptr,
|
||||
void const *configuration,
|
||||
void *host_workspace,
|
||||
void *device_workspace = nullptr,
|
||||
cudaStream_t stream = nullptr) const = 0;
|
||||
|
||||
virtual Status run(
|
||||
void const *arguments,
|
||||
void *host_workspace,
|
||||
void *device_workspace = nullptr,
|
||||
void *host_workspace,
|
||||
void *device_workspace = nullptr,
|
||||
cudaStream_t stream = nullptr) const = 0;
|
||||
|
||||
};
|
||||
@@ -217,7 +217,7 @@ using GemmBatchedArguments = GemmArguments;
|
||||
struct GemmArrayConfiguration {
|
||||
|
||||
gemm::GemmCoord problem_size;
|
||||
|
||||
|
||||
/// Leading dimension of A matrix
|
||||
int64_t lda;
|
||||
|
||||
@@ -241,7 +241,7 @@ struct GemmArrayArguments {
|
||||
void * const *D;
|
||||
void const *alpha;
|
||||
void const *beta;
|
||||
ScalarPointerMode pointer_mode;
|
||||
ScalarPointerMode pointer_mode;
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -264,7 +264,7 @@ struct GemmUniversalConfiguration {
|
||||
};
|
||||
|
||||
struct GemmUniversalArguments {
|
||||
// NOTE: these are replicated for 3.0 interfaces
|
||||
// NOTE: these are replicated for 3.0 interfaces
|
||||
gemm::GemmCoord problem_size;
|
||||
int batch_count;
|
||||
|
||||
@@ -645,8 +645,8 @@ struct SymmArguments {
|
||||
struct Conv2dConfiguration {
|
||||
|
||||
conv::SplitKMode split_k_mode;
|
||||
|
||||
/// Conv2d problem size
|
||||
|
||||
/// Conv2d problem size
|
||||
// contains strictly conv2d size (N,H,W,C,K,R,S,P,Q,padding,stride,dilation,mode)
|
||||
// also includes (split_k_slices, groups)
|
||||
conv::Conv2dProblemSize problem_size;
|
||||
@@ -669,8 +669,8 @@ struct Conv2dConfiguration {
|
||||
struct Conv3dConfiguration {
|
||||
|
||||
conv::SplitKMode split_k_mode;
|
||||
|
||||
/// Conv2d problem size
|
||||
|
||||
/// Conv2d problem size
|
||||
// contains strictly conv2d size (N,D,H,W,C,K,T,R,S,Z,P,Q,padding,stride,dilation,mode)
|
||||
// also includes (split_k_slices, groups)
|
||||
conv::Conv3dProblemSize problem_size;
|
||||
@@ -688,7 +688,7 @@ struct Conv3dConfiguration {
|
||||
layout::TensorNDHWC layout_output;
|
||||
|
||||
//
|
||||
// Methods
|
||||
// Methods
|
||||
//
|
||||
|
||||
// Mapping functions (A,B,C -> activation,filter,output)
|
||||
@@ -734,7 +734,7 @@ struct ConvArguments {
|
||||
|
||||
/// pointer to reordered matrix B
|
||||
void const *reordered_B;
|
||||
|
||||
|
||||
/// pointer to implicit gemm matrix C
|
||||
void const *C;
|
||||
|
||||
@@ -770,7 +770,7 @@ struct ReductionConfiguration {
|
||||
int64_t partition_stride;
|
||||
|
||||
/// leading dimension of 'w'orkspace operand
|
||||
int64_t ldw;
|
||||
int64_t ldw;
|
||||
|
||||
/// leading dimension of 's'ource operand
|
||||
int64_t lds;
|
||||
|
||||
@@ -90,7 +90,11 @@ public:
|
||||
Status release();
|
||||
|
||||
/// Appends an operation and takes ownership
|
||||
void append(Operation *operation_ptr);
|
||||
void append(Operation *operation_ptr) {\
|
||||
// This function is inline s.t. it is present in generated libraries
|
||||
// without having to compile or link in manifest.cpp
|
||||
operations_.emplace_back(operation_ptr);
|
||||
}
|
||||
|
||||
/// Returns an iterator to the first operation
|
||||
OperationVector const &operations() const;
|
||||
|
||||
Reference in New Issue
Block a user