Fix typos 2 (#842)
Co-authored-by: Haicheng Wu <57973641+hwu36@users.noreply.github.com>
This commit is contained in:
co-authored by
Haicheng Wu
parent
c4f6b8c6bc
commit
7e370c9637
@@ -270,7 +270,7 @@ Status Conv2dOperationProfiler::initialize_configuration(
|
||||
}
|
||||
|
||||
//////////////////////// Convolution output dimensions p and q ////////////////////////
|
||||
// Cutlass convolutions support arbitrary output sizes and not constriant by //
|
||||
// Cutlass convolutions support arbitrary output sizes and not constrained by //
|
||||
// input, filter, padding, striding, dilation sizes. //
|
||||
// cuDNN sets the output dimensions (p, q) using following equations: //
|
||||
// //
|
||||
@@ -502,7 +502,7 @@ void Conv2dOperationProfiler::initialize_result_(
|
||||
// Bytes of activation, filter, and output tensors
|
||||
result.bytes = problem_.bytes(operation_desc);
|
||||
|
||||
// Theoritical flops required for the computation
|
||||
// Theoretical flops required for the computation
|
||||
result.flops = problem_.flops(operation_desc);
|
||||
|
||||
// Measured runtime
|
||||
@@ -510,7 +510,7 @@ void Conv2dOperationProfiler::initialize_result_(
|
||||
|
||||
}
|
||||
|
||||
/// Initialize reduction problem dimenstions and library::Operation
|
||||
/// Initialize reduction problem dimensions and library::Operation
|
||||
bool Conv2dOperationProfiler::initialize_reduction_configuration_(
|
||||
Options const &options,
|
||||
PerformanceReport &report,
|
||||
@@ -535,7 +535,7 @@ bool Conv2dOperationProfiler::initialize_reduction_configuration_(
|
||||
/// This chooses the appropriate stride element of the row-major C tensor.
|
||||
int const & tensor_c_stride_idx = (conv_kind == library::ConvKind::kWgrad ? 2 : 0);
|
||||
|
||||
/// intialize library::ReductionConfiguration
|
||||
/// initialize library::ReductionConfiguration
|
||||
conv_workspace_.reduction_configuration.problem_size = problem_.eq_gemm_size(conv_kind).mn();
|
||||
conv_workspace_.reduction_configuration.partitions = int(problem_.split_k_slices);
|
||||
conv_workspace_.reduction_configuration.partition_stride = problem_.eq_gemm_size(conv_kind).mn().product();
|
||||
@@ -773,7 +773,7 @@ bool Conv2dOperationProfiler::verify_cutlass(
|
||||
conv_workspace_.arguments.alpha = problem_.alpha_one.data();
|
||||
conv_workspace_.arguments.beta = problem_.beta_zero.data();
|
||||
|
||||
/// intialize library::ReductionArguments
|
||||
/// initialize library::ReductionArguments
|
||||
conv_workspace_.reduction_arguments.workspace = conv_workspace_.device_workspace.data();
|
||||
conv_workspace_.reduction_arguments.source = conv_workspace_.C->data();
|
||||
conv_workspace_.reduction_arguments.destination = conv_workspace_.Computed->data();
|
||||
@@ -961,7 +961,7 @@ bool Conv2dOperationProfiler::verify_with_host_reference_(
|
||||
conv_desc.tile_description.math_instruction.element_accumulator,
|
||||
conv_desc.element_epilogue);
|
||||
|
||||
#if 0 // debug print to check which host refererence instance is selected
|
||||
#if 0 // debug print to check which host reference instance is selected
|
||||
std::cout << conv2d_key << "\n";
|
||||
#endif
|
||||
|
||||
@@ -982,7 +982,7 @@ bool Conv2dOperationProfiler::verify_with_host_reference_(
|
||||
return true;
|
||||
}
|
||||
|
||||
// host refernce has only one instances in Conv2dOperationVectorMap
|
||||
// host reference has only one instances in Conv2dOperationVectorMap
|
||||
library::Operation const *reference_op = cc_it->second[0];
|
||||
|
||||
//
|
||||
@@ -1009,7 +1009,7 @@ bool Conv2dOperationProfiler::verify_with_host_reference_(
|
||||
conv_workspace_.arguments.pointer_mode = library::ScalarPointerMode::kHost;
|
||||
|
||||
//
|
||||
// Intialize host reference operation
|
||||
// Initialize host reference operation
|
||||
//
|
||||
std::vector<uint8_t> host_workspace_reference_op;
|
||||
|
||||
@@ -1114,11 +1114,11 @@ bool Conv2dOperationProfiler::verify_with_device_reference_(
|
||||
return true;
|
||||
}
|
||||
|
||||
// device refernce has only one instances in Conv2dOperationVectorMap
|
||||
// device reference has only one instances in Conv2dOperationVectorMap
|
||||
library::Operation const *reference_op = cc_it->second[0];
|
||||
|
||||
//
|
||||
// Intialize device reference operation
|
||||
// Initialize device reference operation
|
||||
//
|
||||
std::vector<uint8_t> host_workspace_reference_op;
|
||||
|
||||
@@ -1205,7 +1205,7 @@ bool Conv2dOperationProfiler::profile(
|
||||
conv_workspace_.arguments.alpha = problem_.alpha_one.data();
|
||||
conv_workspace_.arguments.beta = problem_.beta_zero.data();
|
||||
|
||||
/// intialize library::ReductionArguments
|
||||
/// initialize library::ReductionArguments
|
||||
conv_workspace_.reduction_arguments.workspace = conv_workspace_.device_workspace.data();
|
||||
conv_workspace_.reduction_arguments.source = conv_workspace_.C->data();
|
||||
conv_workspace_.reduction_arguments.destination = conv_workspace_.Computed->data();
|
||||
@@ -1276,7 +1276,7 @@ Status Conv2dOperationProfiler::profile_cutlass_(
|
||||
// update library::ConvArguments for parallel split-k reduction
|
||||
conv_arguments->D = conv_workspace_.device_workspace.data();
|
||||
|
||||
/// intialize library::ReductionArguments
|
||||
/// initialize library::ReductionArguments
|
||||
conv_workspace_.reduction_arguments.workspace = conv_workspace_.device_workspace.data();
|
||||
conv_workspace_.reduction_arguments.source = conv_workspace_.C->batch_data(problem_idx);
|
||||
conv_workspace_.reduction_arguments.destination = conv_workspace_.Computed->batch_data(problem_idx);
|
||||
@@ -1329,7 +1329,7 @@ Status Conv2dOperationProfiler::profile_cutlass_(
|
||||
// update library::ConvArguments for parallel split-k reduction
|
||||
conv_arguments->D = conv_workspace_.device_workspace.data();
|
||||
|
||||
/// intialize library::ReductionArguments
|
||||
/// initialize library::ReductionArguments
|
||||
conv_workspace_.reduction_arguments.workspace = conv_workspace_.device_workspace.data();
|
||||
conv_workspace_.reduction_arguments.source = conv_workspace_.C->batch_data(problem_idx);
|
||||
conv_workspace_.reduction_arguments.destination = conv_workspace_.Computed->batch_data(problem_idx);
|
||||
|
||||
@@ -189,7 +189,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// Returns leading dimenstion for equivalent gemm matrix A
|
||||
// Returns leading dimension for equivalent gemm matrix A
|
||||
int64_t eq_gemm_lda(library::ConvKind const &conv_kind) const {
|
||||
|
||||
switch (conv_kind) {
|
||||
@@ -200,7 +200,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// Returns leading dimenstion for equivalent gemm matrix B
|
||||
// Returns leading dimension for equivalent gemm matrix B
|
||||
int64_t eq_gemm_ldb(library::ConvKind const &conv_kind) const {
|
||||
|
||||
switch (conv_kind) {
|
||||
@@ -211,7 +211,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// Returns leading dimenstion for equivalent gemm matrix C
|
||||
// Returns leading dimension for equivalent gemm matrix C
|
||||
int64_t eq_gemm_ldc(library::ConvKind const &conv_kind) const {
|
||||
|
||||
switch (conv_kind) {
|
||||
@@ -436,7 +436,7 @@ protected:
|
||||
void *device_workspace);
|
||||
|
||||
|
||||
/// Initialize reduction problem dimenstions and library::Operation
|
||||
/// Initialize reduction problem dimensions and library::Operation
|
||||
bool initialize_reduction_configuration_(
|
||||
Options const &options,
|
||||
PerformanceReport &report,
|
||||
|
||||
@@ -284,7 +284,7 @@ Status Conv3dOperationProfiler::initialize_configuration(
|
||||
}
|
||||
|
||||
//////////////////////// Convolution output dimensions p and q ////////////////////////
|
||||
// Cutlass convolutions support arbitrary output sizes and not constriant by //
|
||||
// Cutlass convolutions support arbitrary output sizes and not constrained by //
|
||||
// input, filter, padding, striding, dilation sizes. //
|
||||
// cuDNN sets the output dimensions (p, q) using following equations: //
|
||||
// //
|
||||
@@ -545,7 +545,7 @@ void Conv3dOperationProfiler::initialize_result_(
|
||||
// Bytes of activation, filter, and output tensors
|
||||
result.bytes = problem_.bytes(operation_desc);
|
||||
|
||||
// Theoritical flops required for the computation
|
||||
// Theoretical flops required for the computation
|
||||
result.flops = problem_.flops(operation_desc);
|
||||
|
||||
// Measured runtime
|
||||
@@ -553,7 +553,7 @@ void Conv3dOperationProfiler::initialize_result_(
|
||||
|
||||
}
|
||||
|
||||
/// Initialize reduction problem dimenstions and library::Operation
|
||||
/// Initialize reduction problem dimensions and library::Operation
|
||||
bool Conv3dOperationProfiler::initialize_reduction_configuration_(
|
||||
Options const &options,
|
||||
PerformanceReport &report,
|
||||
@@ -578,7 +578,7 @@ bool Conv3dOperationProfiler::initialize_reduction_configuration_(
|
||||
/// This chooses the appropriate stride element of the row-major C tensor.
|
||||
int const & tensor_c_stride_idx = (conv_kind == library::ConvKind::kWgrad ? 3 : 0);
|
||||
|
||||
/// intialize library::ReductionConfiguration
|
||||
/// initialize library::ReductionConfiguration
|
||||
conv_workspace_.reduction_configuration.problem_size = problem_.eq_gemm_size(conv_kind).mn();
|
||||
conv_workspace_.reduction_configuration.partitions = int(problem_.split_k_slices);
|
||||
conv_workspace_.reduction_configuration.partition_stride = problem_.eq_gemm_size(conv_kind).mn().product();
|
||||
@@ -947,7 +947,7 @@ bool Conv3dOperationProfiler::verify_with_host_reference_(
|
||||
conv_desc.tile_description.math_instruction.element_accumulator,
|
||||
conv_desc.element_epilogue);
|
||||
|
||||
#if 0 // debug print to check which host refererence instance is selected
|
||||
#if 0 // debug print to check which host reference instance is selected
|
||||
std::cout << conv_key << "\n";
|
||||
#endif
|
||||
|
||||
@@ -968,7 +968,7 @@ bool Conv3dOperationProfiler::verify_with_host_reference_(
|
||||
return true;
|
||||
}
|
||||
|
||||
// host refernce has only one instances in ConvOperationVectorMap
|
||||
// host reference has only one instances in ConvOperationVectorMap
|
||||
library::Operation const *reference_op = cc_it->second[0];
|
||||
|
||||
//
|
||||
@@ -993,7 +993,7 @@ bool Conv3dOperationProfiler::verify_with_host_reference_(
|
||||
conv_workspace_.arguments.pointer_mode = library::ScalarPointerMode::kHost;
|
||||
|
||||
//
|
||||
// Intialize host reference operation
|
||||
// Initialize host reference operation
|
||||
//
|
||||
std::vector<uint8_t> host_workspace_reference_op;
|
||||
|
||||
@@ -1109,7 +1109,7 @@ void Conv3dOperationProfiler::set_cutlass_operator_arguments_(int problem_idx) {
|
||||
conv_workspace_.arguments.alpha = problem_.alpha_one.data();
|
||||
conv_workspace_.arguments.beta = problem_.beta_zero.data();
|
||||
|
||||
/// intialize library::ReductionArguments
|
||||
/// initialize library::ReductionArguments
|
||||
conv_workspace_.reduction_arguments.workspace = conv_workspace_.device_workspace.data();
|
||||
conv_workspace_.reduction_arguments.source = conv_workspace_.C->batch_data(problem_idx);
|
||||
conv_workspace_.reduction_arguments.destination = conv_workspace_.Computed->batch_data(problem_idx);
|
||||
|
||||
@@ -105,7 +105,7 @@ public:
|
||||
/// Total number of flops computed
|
||||
int64_t flops(library::ConvDescription const &operation_desc) const;
|
||||
|
||||
/// Infers output size from theinput size, padding, stride, and dilation
|
||||
/// Infers output size from the input size, padding, stride, and dilation
|
||||
void set_default_output_size() {
|
||||
z = ((d + pad_d - t * dilation_d) / stride_d) + 1;
|
||||
p = ((h + pad_h - r * dilation_h) / stride_h) + 1;
|
||||
@@ -190,7 +190,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// Returns leading dimenstion for equivalent gemm matrix A
|
||||
// Returns leading dimension for equivalent gemm matrix A
|
||||
int64_t eq_gemm_lda(library::ConvKind const &conv_kind) const {
|
||||
|
||||
switch (conv_kind) {
|
||||
@@ -201,7 +201,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// Returns leading dimenstion for equivalent gemm matrix B
|
||||
// Returns leading dimension for equivalent gemm matrix B
|
||||
int64_t eq_gemm_ldb(library::ConvKind const &conv_kind) const {
|
||||
|
||||
switch (conv_kind) {
|
||||
@@ -212,7 +212,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// Returns leading dimenstion for equivalent gemm matrix C
|
||||
// Returns leading dimension for equivalent gemm matrix C
|
||||
int64_t eq_gemm_ldc(library::ConvKind const &conv_kind) const {
|
||||
|
||||
switch (conv_kind) {
|
||||
@@ -389,7 +389,7 @@ protected:
|
||||
void *host_workspace,
|
||||
void *device_workspace);
|
||||
|
||||
/// Initialize reduction problem dimenstions and library::Operation
|
||||
/// Initialize reduction problem dimensions and library::Operation
|
||||
bool initialize_reduction_configuration_(
|
||||
Options const &options,
|
||||
PerformanceReport &report,
|
||||
|
||||
@@ -57,7 +57,7 @@ Status get_cutlass_status(cublasStatus_t cublas) {
|
||||
return Status::kErrorInternal;
|
||||
}
|
||||
|
||||
/// Converts a cuBLASS status to cutlass::profiler::Disposition
|
||||
/// Converts a cuBLAS status to cutlass::profiler::Disposition
|
||||
Disposition get_cutlass_disposition(cublasStatus_t cublas_status) {
|
||||
|
||||
if (cublas_status == CUBLAS_STATUS_INVALID_VALUE) {
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace profiler {
|
||||
/// Converts a cuBLAS status to cutlass::Status
|
||||
Status get_cutlass_status(cublasStatus_t cublas);
|
||||
|
||||
/// Converts a cuBLASS status to cutlass::profiler::Disposition
|
||||
/// Converts a cuBLAS status to cutlass::profiler::Disposition
|
||||
Disposition get_cutlass_disposition(cublasStatus_t cublas_status);
|
||||
|
||||
/// Maps a CUTLASS tensor layout to a cuBLAS transpose operation
|
||||
@@ -87,7 +87,7 @@ Status cublas_satisfies(library::SymmDescription const &desc);
|
||||
|
||||
/// This is a helper class to create cublasHandle_t automatically on CublasCreate object creation and
|
||||
/// to destroy cublasHandle_t on CublasCreate object destruction.
|
||||
/// Additionaly, it provides implicit cast from CublasCreate's object to cublasHandle_t's object
|
||||
/// Additionally, it provides implicit cast from CublasCreate's object to cublasHandle_t's object
|
||||
class CublasCreate {
|
||||
private:
|
||||
cublasHandle_t handle;
|
||||
@@ -196,7 +196,7 @@ struct cublasGemmExDispatcher {
|
||||
library::GemmUniversalConfiguration configuration;
|
||||
library::GemmUniversalArguments arguments;
|
||||
|
||||
// cublass-specific data structures to fill cublas API call arguments
|
||||
// cublas-specific data structures to fill cublas API call arguments
|
||||
cublasOperation_t trans_A;
|
||||
cublasOperation_t trans_B;
|
||||
cudaDataType_t data_type_A;
|
||||
@@ -237,7 +237,7 @@ struct cublasRankKDispatcher {
|
||||
library::RankKConfiguration configuration;
|
||||
library::RankKArguments arguments;
|
||||
|
||||
// cublass-specific data structures to fill cublas API call arguments
|
||||
// cublas-specific data structures to fill cublas API call arguments
|
||||
cublasOperation_t trans_A;
|
||||
cublasFillMode_t uplo;
|
||||
cudaDataType_t data_type_A;
|
||||
@@ -277,7 +277,7 @@ struct cublasTrmmDispatcher {
|
||||
library::TrmmConfiguration configuration;
|
||||
library::TrmmArguments arguments;
|
||||
|
||||
// cublass-specific data structures to fill cublas API call arguments
|
||||
// cublas-specific data structures to fill cublas API call arguments
|
||||
cublasOperation_t trans_A;
|
||||
cublasSideMode_t side;
|
||||
cublasFillMode_t uplo;
|
||||
@@ -318,7 +318,7 @@ struct cublasSymmDispatcher {
|
||||
library::SymmConfiguration configuration;
|
||||
library::SymmArguments arguments;
|
||||
|
||||
// cublass-specific data structures to fill cublas API call arguments
|
||||
// cublas-specific data structures to fill cublas API call arguments
|
||||
cublasSideMode_t side;
|
||||
cublasFillMode_t uplo;
|
||||
cudaDataType_t data_type_A;
|
||||
|
||||
@@ -68,7 +68,7 @@ Disposition get_cutlass_disposition(cudnnStatus_t cudnn_status) {
|
||||
return Disposition::kFailed;
|
||||
}
|
||||
|
||||
/// Checks cudnnStatus_t converts to cutlas status and returns if Status::kSuccess o.w. throws exception
|
||||
/// Checks cudnnStatus_t converts to cutlass status and returns if Status::kSuccess o.w. throws exception
|
||||
Status checkCudnnErr(cudnnStatus_t cudnn_status) {
|
||||
Status cutlass_status = get_cutlass_status(cudnn_status);
|
||||
if(cutlass_status != Status::kSuccess) {
|
||||
@@ -243,7 +243,7 @@ Status cudnn_satisfies(
|
||||
}
|
||||
|
||||
//////////////////////// Convolution output dimensions p and q ///////////////////////
|
||||
// Cutlass convolutions support arbitrary output dimensions and not constriant by //
|
||||
// Cutlass convolutions support arbitrary output dimensions and not constrained by //
|
||||
// input, filter, padding, striding, dilation sizes. //
|
||||
// cuDNN sets the output dimensions (p, q) using following equations: //
|
||||
// //
|
||||
@@ -373,7 +373,7 @@ Status cudnn_satisfies(
|
||||
}
|
||||
|
||||
//////////////////////// Convolution output dimensions p and q ///////////////////////
|
||||
// Cutlass convolutions support arbitrary output dimensions and not constriant by //
|
||||
// Cutlass convolutions support arbitrary output dimensions and not constrained by //
|
||||
// input, filter, padding, striding, dilation sizes. //
|
||||
// cuDNN sets the output dimensions (p, q) using following equations: //
|
||||
// //
|
||||
|
||||
@@ -55,7 +55,7 @@ Status get_cutlass_status(cudnnStatus_t cudnn_status);
|
||||
/// Converts a cuDNN status to cutlass::profiler::Disposition
|
||||
Disposition get_cutlass_disposition(cudnnStatus_t cudnn_status);
|
||||
|
||||
/// Checks cudnnStatus_t converts to cutlas status and returns if Status::kSuccess o.w. throws exception
|
||||
/// Checks cudnnStatus_t converts to cutlass status and returns if Status::kSuccess o.w. throws exception
|
||||
Status checkCudnnErr(cudnnStatus_t cudnn_status);
|
||||
|
||||
/// Maps a CUTLASS conv mode to a cuDNN conv mode enumeration
|
||||
@@ -82,7 +82,7 @@ float cast_cudnn_compute_type_to_float(library::NumericTypeID type, void const *
|
||||
|
||||
/// This is a helper class to create cudnnHandle_t automatically on CudnnCreate object creation and
|
||||
/// to destroy cudnnHandle_t on CudnnCreate object destruction.
|
||||
/// Additionaly, it provides implicit cast from CudnnCreate's object to cudnnHandle_t's object
|
||||
/// Additionally, it provides implicit cast from CudnnCreate's object to cudnnHandle_t's object
|
||||
class CudnnCreate {
|
||||
private:
|
||||
cudnnHandle_t handle;
|
||||
@@ -162,7 +162,7 @@ struct cudnnConvDispatcher {
|
||||
// Methods
|
||||
//
|
||||
|
||||
// TODO: unify ctor cudnnConvDispatcher for conv2d and conv3d by unifying Conv2dConfigration
|
||||
// TODO: unify ctor cudnnConvDispatcher for conv2d and conv3d by unifying Conv2dConfiguration
|
||||
|
||||
// ctor for conv2d
|
||||
cudnnConvDispatcher(
|
||||
@@ -496,7 +496,7 @@ struct cudnnConvDispatcher {
|
||||
workspace = cutlass::device_memory::allocation<char>(workspace_size_in_bytes);
|
||||
}
|
||||
|
||||
/// Executes Conv2d operater from cudnn library
|
||||
/// Executes Conv2d operator from cudnn library
|
||||
cudnnStatus_t operator()(cudnnHandle_t handle) {
|
||||
|
||||
switch (conv_kind) {
|
||||
@@ -552,7 +552,7 @@ struct cudnnConvDispatcher {
|
||||
}
|
||||
}
|
||||
|
||||
// Returns Actviation Tensor
|
||||
// Returns Activation Tensor
|
||||
void const * activation() const {
|
||||
switch(conv_kind) {
|
||||
case library::ConvKind::kFprop : return arguments.A;
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
//#define report(x) { std::cout << "\033[31m" << __FILE__ << ":" << __LINE__ << " " << x << "\033[0m" << std::endl; }
|
||||
//#define report(x) {}
|
||||
|
||||
// Enable/Disble Profiler debug prints
|
||||
// Enable/Disable Profiler debug prints
|
||||
//#define DEBUG_PROFILER
|
||||
|
||||
//RED 31m // profiler prints debug messages in red
|
||||
|
||||
@@ -442,12 +442,12 @@ int DeviceAllocation::batch_count() const {
|
||||
return batch_count_;
|
||||
}
|
||||
|
||||
/// Gets the stride (in units of elements) beteween items
|
||||
/// Gets the stride (in units of elements) between items
|
||||
int64_t DeviceAllocation::batch_stride() const {
|
||||
return batch_stride_;
|
||||
}
|
||||
|
||||
/// Gets the stride (in units of bytes) beteween items
|
||||
/// Gets the stride (in units of bytes) between items
|
||||
int64_t DeviceAllocation::batch_stride_bytes() const {
|
||||
return bytes(type_, batch_stride_);
|
||||
}
|
||||
|
||||
@@ -176,10 +176,10 @@ public:
|
||||
/// Gets the number of adjacent tensors in memory
|
||||
int batch_count() const;
|
||||
|
||||
/// Gets the stride (in units of elements) beteween items
|
||||
/// Gets the stride (in units of elements) between items
|
||||
int64_t batch_stride() const;
|
||||
|
||||
/// Gets the stride (in units of bytes) beteween items
|
||||
/// Gets the stride (in units of bytes) between items
|
||||
int64_t batch_stride_bytes() const;
|
||||
|
||||
/// Capacity of allocation in number of elements
|
||||
|
||||
@@ -108,7 +108,7 @@ void GemmOperationProfiler::print_examples(std::ostream &out) const {
|
||||
<< "Run when A is f16 with column-major and B is any datatype with row-major (For column major, use column, col, or n. For row major use, row or t):\n"
|
||||
<< " $ cutlass_profiler --operation=Gemm --A=f16:column --B=*:row\n\n"
|
||||
|
||||
<< "Profile a particular problem size with split K and paralell reduction:\n"
|
||||
<< "Profile a particular problem size with split K and parallel reduction:\n"
|
||||
<< " $ cutlass_profiler --operation=Gemm --split_k_mode=parallel --split_k_slices=2 --m=1024 --n=1024 --k=128\n\n"
|
||||
|
||||
<< "Using various input value distribution:\n"
|
||||
@@ -168,7 +168,7 @@ Status GemmOperationProfiler::GemmProblem::parse(
|
||||
}
|
||||
|
||||
if (!arg_as_SplitKModeID(this->split_k_mode, "split_k_mode", problem_space, problem)) {
|
||||
// defualt value
|
||||
// default value
|
||||
this->split_k_mode = library::SplitKMode::kSerial;
|
||||
}
|
||||
|
||||
@@ -405,7 +405,7 @@ void GemmOperationProfiler::initialize_result_(
|
||||
|
||||
}
|
||||
|
||||
/// Initialize redution problem dimentions and library::Operation
|
||||
/// Initialize reduction problem dimensions and library::Operation
|
||||
bool GemmOperationProfiler::initialize_reduction_configuration_(
|
||||
library::Operation const *operation,
|
||||
ProblemSpace::Problem const &problem) {
|
||||
@@ -434,7 +434,7 @@ bool GemmOperationProfiler::initialize_reduction_configuration_(
|
||||
gemm_desc.tile_description.math_instruction.element_accumulator, // element workspace
|
||||
gemm_desc.tile_description.math_instruction.element_accumulator, // element accumulator
|
||||
gemm_desc.C.element, // element output
|
||||
gemm_desc.element_epilogue // element coumpute
|
||||
gemm_desc.element_epilogue // element compute
|
||||
);
|
||||
|
||||
auto reduction_it = library::Singleton::get().operation_table.reduction_operations.find(reduction_key);
|
||||
|
||||
@@ -94,7 +94,7 @@ void GpuTimer::stop_and_wait(cudaStream_t stream) {
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the duration in miliseconds
|
||||
/// Returns the duration in milliseconds
|
||||
double GpuTimer::duration(int iterations) const {
|
||||
|
||||
float avg_ms;
|
||||
|
||||
@@ -62,7 +62,7 @@ struct GpuTimer {
|
||||
/// Records a stop event in the stream and synchronizes on the stream
|
||||
void stop_and_wait(cudaStream_t stream = nullptr);
|
||||
|
||||
/// Returns the duration in miliseconds
|
||||
/// Returns the duration in milliseconds
|
||||
double duration(int iterations = 1) const;
|
||||
};
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ protected:
|
||||
/// List of providers used to verify and compare each result
|
||||
ProviderVector verification_providers_;
|
||||
|
||||
/// Model performance result initailized by the operation profiler with workload statistics
|
||||
/// Model performance result initialized by the operation profiler with workload statistics
|
||||
/// and reasonable default state.
|
||||
PerformanceResult model_result_;
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ Options::Initialization::Initialization(cutlass::CommandLine const &cmdline) {
|
||||
enabled = false;
|
||||
}
|
||||
else if (provider != library::Provider::kReferenceHost && provider != library::Provider::kReferenceDevice) {
|
||||
throw std::runtime_error("Unsupported intialization provider specified.");
|
||||
throw std::runtime_error("Unsupported initialization provider specified.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -205,7 +205,7 @@ Options::Initialization::Initialization(cutlass::CommandLine const &cmdline) {
|
||||
get_distribution(cmdline, "dist", data_distribution);
|
||||
}
|
||||
else {
|
||||
// profiler choosen data distribution (allowed to change based on numeric types)
|
||||
// profiler chosen data distribution (allowed to change based on numeric types)
|
||||
fix_data_distribution = false;
|
||||
// set uniform data distribution with range [-4, 4]
|
||||
data_distribution.set_uniform(-4, 4, 0);
|
||||
|
||||
@@ -231,7 +231,7 @@ public:
|
||||
std::vector<std::pair<std::string, std::string>> pivot_tags;
|
||||
|
||||
/// If true, reports status of all kernels including those that were
|
||||
/// not run for the given argumetns
|
||||
/// not run for the given arguments
|
||||
bool report_not_run;
|
||||
|
||||
/// Prints human-readable text to stdout. If false, nothing is written to stdout
|
||||
|
||||
@@ -284,7 +284,7 @@ struct ScalarArgument : public KernelArgument {
|
||||
// Data members
|
||||
//
|
||||
|
||||
/// Set of posible values
|
||||
/// Set of possible values
|
||||
ValueCollection values;
|
||||
|
||||
//
|
||||
@@ -540,7 +540,7 @@ struct IntegerArgument : public KernelArgument {
|
||||
// Data members
|
||||
//
|
||||
|
||||
/// Set of posible values
|
||||
/// Set of possible values
|
||||
RangeCollection ranges;
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user