mirror of
				https://github.com/tiagovignatti/intel-gpu-tools.git
				synced 2025-11-04 03:58:27 +00:00 
			
		
		
		
	stats: Add functions to retrieve min/max values of the dataset
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
This commit is contained in:
		
							parent
							
								
									87009f3d7b
								
							
						
					
					
						commit
						4a89a841a1
					
				@ -28,6 +28,8 @@
 | 
			
		||||
#include "igt_core.h"
 | 
			
		||||
#include "igt_stats.h"
 | 
			
		||||
 | 
			
		||||
#define U64_MAX         ((uint64_t)~0ULL)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * SECTION:igt_stats
 | 
			
		||||
 * @short_description: Tools for statistical analysis
 | 
			
		||||
@ -78,6 +80,9 @@ void igt_stats_init(igt_stats_t *stats, unsigned int capacity)
 | 
			
		||||
	stats->values = calloc(capacity, sizeof(*stats->values));
 | 
			
		||||
	igt_assert(stats->values);
 | 
			
		||||
	stats->capacity = capacity;
 | 
			
		||||
 | 
			
		||||
	stats->min = U64_MAX;
 | 
			
		||||
	stats->max = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -151,7 +156,35 @@ void igt_stats_push(igt_stats_t *stats, uint64_t value)
 | 
			
		||||
{
 | 
			
		||||
	igt_assert(stats->n_values < stats->capacity);
 | 
			
		||||
	stats->values[stats->n_values++] = value;
 | 
			
		||||
 | 
			
		||||
	stats->mean_variance_valid = false;
 | 
			
		||||
 | 
			
		||||
	if (value < stats->min)
 | 
			
		||||
		stats->min = value;
 | 
			
		||||
	if (value > stats->max)
 | 
			
		||||
		stats->max = value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * igt_stats_get_min:
 | 
			
		||||
 * @stats: An #igt_stats_t instance
 | 
			
		||||
 *
 | 
			
		||||
 * Retrieves the minimal value in @stats
 | 
			
		||||
 */
 | 
			
		||||
uint64_t igt_stats_get_min(igt_stats_t *stats)
 | 
			
		||||
{
 | 
			
		||||
	return stats->min;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * igt_stats_get_max:
 | 
			
		||||
 * @stats: An #igt_stats_t instance
 | 
			
		||||
 *
 | 
			
		||||
 * Retrieves the maximum value in @stats
 | 
			
		||||
 */
 | 
			
		||||
uint64_t igt_stats_get_max(igt_stats_t *stats)
 | 
			
		||||
{
 | 
			
		||||
	return stats->max;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
@ -41,6 +41,7 @@ typedef struct {
 | 
			
		||||
	unsigned int capacity;
 | 
			
		||||
	unsigned int is_population  : 1;
 | 
			
		||||
	unsigned int mean_variance_valid : 1;
 | 
			
		||||
	uint64_t min, max;
 | 
			
		||||
	double mean, variance;
 | 
			
		||||
} igt_stats_t;
 | 
			
		||||
 | 
			
		||||
@ -49,6 +50,8 @@ void igt_stats_fini(igt_stats_t *stats);
 | 
			
		||||
bool igt_stats_is_population(igt_stats_t *stats);
 | 
			
		||||
void igt_stats_set_population(igt_stats_t *stats, bool full_population);
 | 
			
		||||
void igt_stats_push(igt_stats_t *stats, uint64_t value);
 | 
			
		||||
uint64_t igt_stats_get_min(igt_stats_t *stats);
 | 
			
		||||
uint64_t igt_stats_get_max(igt_stats_t *stats);
 | 
			
		||||
double igt_stats_get_mean(igt_stats_t *stats);
 | 
			
		||||
double igt_stats_get_variance(igt_stats_t *stats);
 | 
			
		||||
double igt_stats_get_std_deviation(igt_stats_t *stats);
 | 
			
		||||
 | 
			
		||||
@ -57,6 +57,17 @@ static void test_init(void)
 | 
			
		||||
	igt_assert(igt_stats_is_population(&stats) == false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_min_max(void)
 | 
			
		||||
{
 | 
			
		||||
	igt_stats_t stats;
 | 
			
		||||
 | 
			
		||||
	igt_stats_init(&stats, 5);
 | 
			
		||||
	push_fixture_1(&stats);
 | 
			
		||||
 | 
			
		||||
	igt_assert(igt_stats_get_min(&stats) == 2);
 | 
			
		||||
	igt_assert(igt_stats_get_max(&stats) == 10);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void test_mean(void)
 | 
			
		||||
{
 | 
			
		||||
	igt_stats_t stats;
 | 
			
		||||
@ -127,6 +138,7 @@ igt_simple_main
 | 
			
		||||
{
 | 
			
		||||
	test_init_zero();
 | 
			
		||||
	test_init();
 | 
			
		||||
	test_min_max();
 | 
			
		||||
	test_mean();
 | 
			
		||||
	test_invalidate_mean();
 | 
			
		||||
	test_std_deviation();
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user