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:
Pradeep Ramani
2023-12-29 15:21:31 -05:00
committed by GitHub
co-authored by Pradeep Ramani
parent b7508e3379
commit 8236f30675
211 changed files with 11409 additions and 2763 deletions
@@ -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
+23 -23
View File
@@ -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;