Compute tolerances in examples instead of using default ones

This commit is contained in:
Enrico Degregori
2025-08-13 09:03:24 +00:00
parent 0dc8f8e769
commit 671fb7f383

View File

@@ -128,7 +128,21 @@ bool run_grouped_conv_bwd_weight(const ExecutionConfig& config,
wei_device_buf.FromDevice(wei_device_result.mData.data());
return ck::utils::check_err(wei_device_result.mData, wei_host_result.mData);
float max_accumulated_value =
*std::max_element(wei_host_result.mData.begin(),wei_host_result.mData.end());
const ck::index_t num_accums = out.GetElementSize() / conv_param.K_;
const ck::index_t num_accums_split_k = split_k;
double rtol =
ck::utils::get_relative_threshold<InDataType, WeiDataType, AccDataType>(
num_accums / num_accums_split_k);
double atol =
ck::utils::get_absolute_threshold<InDataType, WeiDataType, AccDataType>(
max_accumulated_value / num_accums_split_k,
num_accums / num_accums_split_k);
return ck::utils::check_err(wei_device_result.mData, wei_host_result.mData,
"Error: Incorrect results!", rtol, atol);
}
float avg_time = invoker.Run(argument, StreamConfig{nullptr, config.time_kernel});