]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.1.0/test_and_benchmark/libbenchmark/src/libbenchmark_benchmarkset/libbenchmark_benchmarkset_run.c
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.1.0 / test_and_benchmark / libbenchmark / src / libbenchmark_benchmarkset / libbenchmark_benchmarkset_run.c
1 /***** includes *****/
2 #include "libbenchmark_benchmarkset_internal.h"
3
4
5
6
7
8 /****************************************************************************/
9 void libbenchmark_benchmarkset_run( struct libbenchmark_benchmarkset_state *bsets, struct libbenchmark_results_state *rs )
10 {
11   lfds710_pal_uint_t
12     number_numa_nodes;
13
14   struct libbenchmark_benchmarkinstance_state
15     *bs;
16
17   struct lfds710_list_asu_element
18     *lasue_benchmarks = NULL,
19     *lasue_lpset = NULL,
20     *lasue_numa = NULL;
21
22   struct lfds710_list_aso_state
23     *logical_processor_set;
24
25   struct libbenchmark_topology_numa_node
26     *numa_mode;
27
28   LFDS710_PAL_ASSERT( bsets != NULL );
29   LFDS710_PAL_ASSERT( rs != NULL );
30
31   libbenchmark_topology_query( bsets->ts, LIBBENCHMARK_TOPOLOGY_QUERY_GET_NUMBER_OF_NODE_TYPE, (void *) (lfds710_pal_uint_t) LIBBENCHMARK_TOPOLOGY_NODE_TYPE_NUMA, &number_numa_nodes );
32
33   // TRD : loop over every logical processor set
34   while( LFDS710_LIST_ASU_GET_START_AND_THEN_NEXT(*bsets->logical_processor_sets,lasue_lpset) )
35   {
36     logical_processor_set = LFDS710_LIST_ASU_GET_VALUE_FROM_ELEMENT( *lasue_lpset );
37
38     // TRD : now for this logical processor set, execute all benchmarks
39     while( LFDS710_LIST_ASU_GET_START_AND_THEN_NEXT(bsets->benchmarks,lasue_benchmarks) )
40     {
41       bs = LFDS710_LIST_ASU_GET_VALUE_FROM_ELEMENT( *lasue_benchmarks );
42
43       // TRD : run each benchmark instance over each NUMA mode
44       while( LFDS710_LIST_ASU_GET_START_AND_THEN_NEXT(*bsets->numa_modes_list,lasue_numa) )
45       {
46         numa_mode = LFDS710_LIST_ASU_GET_VALUE_FROM_ELEMENT( *lasue_numa );
47         libbenchmark_benchmarkinstance_run( bs, logical_processor_set, numa_mode->mode, bsets->ms, rs );
48       }
49     }
50   }
51
52   return;
53 }
54