CUTLASS
CUDA Templates for Linear Algebra Subroutines and Solvers
Classes | Namespaces | Typedefs | Enumerations | Functions
library.h File Reference

CUTLASS Library is an object-oriented approach to managing operations implemented by CUTLASS. More...

#include <vector>
#include <string>
#include <cstdint>
#include <cuda_runtime.h>
#include "cutlass/cutlass.h"
#include "cutlass/matrix_coord.h"
#include "cutlass/tensor_coord.h"
#include "cutlass/layout/tensor.h"
#include "cutlass/gemm/gemm.h"
Include dependency graph for library.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  cutlass::library::MathInstructionDescription
 
struct  cutlass::library::TileDescription
 Structure describing the tiled structure of a GEMM-like computation. More...
 
struct  cutlass::library::OperationDescription
 High-level description of an operation. More...
 
struct  cutlass::library::TensorDescription
 Structure describing the properties of a tensor. More...
 
struct  cutlass::library::GemmDescription
 Description of all GEMM computations. More...
 
class  cutlass::library::Operation
 Base class for all device-wide operations. More...
 
struct  cutlass::library::GemmConfiguration
 Configuration for basic GEMM operations. More...
 
struct  cutlass::library::GemmArguments
 Arguments for GEMM. More...
 
struct  cutlass::library::GemmBatchedConfiguration
 Configuration for batched GEMM in which multiple matrix products are computed. More...
 
struct  cutlass::library::GemmArrayConfiguration
 Configuration for batched GEMM in which multiple matrix products are computed. More...
 
struct  cutlass::library::GemmArrayArguments
 Arguments for GEMM - used by all the GEMM operations. More...
 
struct  cutlass::library::GemmPlanarComplexConfiguration
 Complex valued GEMM in which real and imaginary parts are separated by a stride. More...
 
struct  cutlass::library::GemmPlanarComplexBatchedConfiguration
 Batched complex valued GEMM in which real and imaginary parts are separated by a stride. More...
 

Namespaces

 cutlass
 
 cutlass::library
 

Typedefs

using cutlass::library::GemmBatchedArguments = GemmArguments
 Arguments to batched GEMM. More...
 
using cutlass::library::GemmPlanarComplexArgments = GemmArguments
 
using cutlass::library::GemmPlanarComplexBatchedArguments = GemmArguments
 

Enumerations

enum  cutlass::library::LayoutTypeID {
  cutlass::library::LayoutTypeID::kUnknown, cutlass::library::LayoutTypeID::kColumnMajor, cutlass::library::LayoutTypeID::kRowMajor, cutlass::library::LayoutTypeID::kColumnMajorInterleavedK4,
  cutlass::library::LayoutTypeID::kRowMajorInterleavedK4, cutlass::library::LayoutTypeID::kColumnMajorInterleavedK16, cutlass::library::LayoutTypeID::kRowMajorInterleavedK16, cutlass::library::LayoutTypeID::kTensorNCHW,
  cutlass::library::LayoutTypeID::kTensorNHWC, cutlass::library::LayoutTypeID::kInvalid
}
 Layout type identifier. More...
 
enum  cutlass::library::NumericTypeID {
  cutlass::library::NumericTypeID::kUnknown, cutlass::library::NumericTypeID::kVoid, cutlass::library::NumericTypeID::kB1, cutlass::library::NumericTypeID::kU4,
  cutlass::library::NumericTypeID::kU8, cutlass::library::NumericTypeID::kU16, cutlass::library::NumericTypeID::kU32, cutlass::library::NumericTypeID::kU64,
  cutlass::library::NumericTypeID::kS4, cutlass::library::NumericTypeID::kS8, cutlass::library::NumericTypeID::kS16, cutlass::library::NumericTypeID::kS32,
  cutlass::library::NumericTypeID::kS64, cutlass::library::NumericTypeID::kF16, cutlass::library::NumericTypeID::kF32, cutlass::library::NumericTypeID::kF64,
  cutlass::library::NumericTypeID::kCF16, cutlass::library::NumericTypeID::kCF32, cutlass::library::NumericTypeID::kCF64, cutlass::library::NumericTypeID::kCS4,
  cutlass::library::NumericTypeID::kCS8, cutlass::library::NumericTypeID::kCS16, cutlass::library::NumericTypeID::kCS32, cutlass::library::NumericTypeID::kCS64,
  cutlass::library::NumericTypeID::kCU4, cutlass::library::NumericTypeID::kCU8, cutlass::library::NumericTypeID::kCU16, cutlass::library::NumericTypeID::kCU32,
  cutlass::library::NumericTypeID::kCU64, cutlass::library::NumericTypeID::kInvalid
}
 Numeric data type. More...
 
enum  cutlass::library::ComplexTransform { cutlass::library::ComplexTransform::kNone, cutlass::library::ComplexTransform::kConjugate }
 Enumeraed type describing a transformation on a complex value. More...
 
enum  cutlass::library::OperationKind { cutlass::library::OperationKind::kGemm, cutlass::library::OperationKind::kInvalid }
 Enumeration indicating the kind of operation. More...
 
enum  cutlass::library::ScalarPointerMode { cutlass::library::ScalarPointerMode::kHost, cutlass::library::ScalarPointerMode::kDevice, cutlass::library::ScalarPointerMode::kInvalid }
 Enumeration indicating whether scalars are in host or device memory. More...
 
enum  cutlass::library::SplitKMode {
  cutlass::library::SplitKMode::kNone, cutlass::library::SplitKMode::kSerial, cutlass::library::SplitKMode::kParallel, cutlass::library::SplitKMode::kParallelSerial,
  cutlass::library::SplitKMode::kInvalid
}
 Describes how reductions are performed across threadblocks. More...
 
enum  cutlass::library::OpcodeClassID { cutlass::library::OpcodeClassID::kSimt, cutlass::library::OpcodeClassID::kTensorOp, cutlass::library::OpcodeClassID::kWmmaTensorOp, cutlass::library::OpcodeClassID::kInvalid }
 Indicates the classificaition of the math instruction. More...
 
enum  cutlass::library::GemmKind {
  cutlass::library::GemmKind::kGemm, cutlass::library::GemmKind::kBatched, cutlass::library::GemmKind::kArray, cutlass::library::GemmKind::kPlanarComplex,
  cutlass::library::GemmKind::kPlanarComplexBatched, cutlass::library::GemmKind::kInvalid
}
 Enumeration indicating what kind of GEMM operation to perform. More...
 

Functions

template<typename T >
cutlass::library::from_string (std::string const &)
 Lexical cast from string. More...
 
char const * cutlass::library::to_string (OperationKind type, bool pretty=false)
 Converts a NumericType enumerant to a string. More...
 
template<>
OperationKind cutlass::library::from_string< OperationKind > (std::string const &str)
 Parses a NumericType enumerant from a string. More...
 
char const * cutlass::library::to_string (NumericTypeID type, bool pretty=false)
 Converts a NumericType enumerant to a string. More...
 
template<>
NumericTypeID cutlass::library::from_string< NumericTypeID > (std::string const &str)
 Parses a NumericType enumerant from a string. More...
 
int cutlass::library::sizeof_bits (NumericTypeID type)
 Returns the size of a data type in bits. More...
 
bool cutlass::library::is_complex_type (NumericTypeID type)
 Returns true if the numeric type is a complex data type or false if real-valued. More...
 
NumericTypeID cutlass::library::get_real_type (NumericTypeID type)
 Returns the real-valued type underlying a type (only different from 'type' if complex) More...
 
bool cutlass::library::is_integer_type (NumericTypeID type)
 Returns true if numeric type is integer. More...
 
bool cutlass::library::is_signed_type (NumericTypeID type)
 Returns true if numeric type is signed. More...
 
bool cutlass::library::is_signed_integer (NumericTypeID type)
 Returns true if numeric type is a signed integer. More...
 
bool cutlass::library::is_unsigned_integer (NumericTypeID type)
 returns true if numeric type is an unsigned integer More...
 
bool cutlass::library::is_float_type (NumericTypeID type)
 Returns true if numeric type is floating-point type. More...
 
char const * cutlass::library::to_string (Status status, bool pretty=false)
 To string method for cutlass::Status. More...
 
char const * cutlass::library::to_string (LayoutTypeID layout, bool pretty=false)
 Converts a LayoutTypeID enumerant to a string. More...
 
template<>
LayoutTypeID cutlass::library::from_string< LayoutTypeID > (std::string const &str)
 Parses a LayoutType enumerant from a string. More...
 
int cutlass::library::get_layout_stride_rank (LayoutTypeID layout_id)
 Returns the rank of a layout's stride base on the LayoutTypeID. More...
 
char const * cutlass::library::to_string (OpcodeClassID type, bool pretty=false)
 Converts a OpcodeClassID enumerant to a string. More...
 
template<>
OpcodeClassID cutlass::library::from_string< OpcodeClassID > (std::string const &str)
 Converts a OpcodeClassID enumerant from a string. More...
 
std::string cutlass::library::lexical_cast (int64_t int_value)
 Lexical cast from int64_t to string. More...
 
bool cutlass::library::lexical_cast (std::vector< uint8_t > &bytes, NumericTypeID type, std::string const &str)
 Lexical cast a string to a byte array. Returns true if cast is successful or false if invalid. More...
 
std::string cutlass::library::lexical_cast (std::vector< uint8_t > &bytes, NumericTypeID type)
 Lexical cast TO a string FROM a byte array. Returns true if cast is successful or false if invalid. More...
 
bool cutlass::library::cast_from_int64 (std::vector< uint8_t > &bytes, NumericTypeID type, int64_t src)
 Casts from a signed int64 to the destination type. Returns true if successful. More...
 
bool cutlass::library::cast_from_uint64 (std::vector< uint8_t > &bytes, NumericTypeID type, uint64_t src)
 Casts from an unsigned int64 to the destination type. Returns true if successful. More...
 
bool cutlass::library::cast_from_double (std::vector< uint8_t > &bytes, NumericTypeID type, double src)
 Casts from a real value represented as a double to the destination type. Returns true if successful. More...
 

Detailed Description

Generally,

description - compile-time constant parameters used to instantiate an operation

configuration - runtime parameters with computationally expensive initialization

arguments - runtime parameters that may be passed to an initialized operation with low computational overhead