SWDEV-296922 : Incorrect rounding due to integer division in rocprofiler metrics

Changed derived metrics to double from int64.
Fixed standalone test due to int64 to float change
Fixed intercept test due to int64 to float change.

Change-Id: I49631c187406ae9dd94a869b3bb13772012e8cdf


[ROCm/rocprofiler commit: f9017cbdc5]
이 커밋은 다음에 포함됨:
Chun Yang가 2021-09-23 14:52:35 -07:00를 커밋했습니다
1 부모 d6a648e396
커밋 62a76c8ebb
6 파일이 변경됨
+22 -8

검색과 일치하는 파일 없음

+3 -3
파일 보기
@@ -55,7 +55,7 @@ inline unsigned align_size(unsigned size, unsigned alignment) {
template <class Map> class MetricArgs : public xml::args_cache_t {
public:
MetricArgs(const Map& map) : map_(map) {}
bool Lookup(const std::string& name, uint64_t& result) const {
bool Lookup(const std::string& name, double& result) const {
rocprofiler_feature_t* info = NULL;
auto it = map_.find(name);
if (it == map_.end()) EXC_RAISING(HSA_STATUS_ERROR, "var '" << name << "' is not found");
@@ -311,8 +311,8 @@ class Context {
if (it == info_map_.end())
EXC_RAISING(HSA_STATUS_ERROR, "metric '" << name << "', rocprofiler info is not found " << this);
rocprofiler_feature_t* info = it->second;
info->data.result_int64 = expr->Eval(args);
info->data.kind = ROCPROFILER_DATA_KIND_INT64;
info->data.result_double = expr->Eval(args);
info->data.kind = ROCPROFILER_DATA_KIND_DOUBLE;
}
}
}
+3 -2
파일 보기
@@ -29,6 +29,7 @@ THE SOFTWARE.
#include <iostream>
#include <sstream>
#include <string.h>
#include <float.h>
namespace xml {
class exception_t : public std::exception {
@@ -45,8 +46,8 @@ class div_zero_exception_t : public exception_t {
explicit div_zero_exception_t(const std::string& msg) : exception_t("Divide by zero exception " + msg) {}
};
typedef uint64_t args_t;
static const args_t ARGS_MAX = UINT64_MAX;
typedef double args_t;
static const args_t ARGS_MAX = DBL_MAX;
typedef std::map<std::string, args_t> args_map_t;
class Expr;