2 #include "libbenchmark_benchmarkset_internal.h"
8 /****************************************************************************/
9 void libbenchmark_benchmarkset_run( struct libbenchmark_benchmarkset_state *bsets, struct libbenchmark_results_state *rs )
14 struct libbenchmark_benchmarkinstance_state
17 struct lfds710_list_asu_element
18 *lasue_benchmarks = NULL,
22 struct lfds710_list_aso_state
23 *logical_processor_set;
25 struct libbenchmark_topology_numa_node
28 LFDS710_PAL_ASSERT( bsets != NULL );
29 LFDS710_PAL_ASSERT( rs != NULL );
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 );
33 // TRD : loop over every logical processor set
34 while( LFDS710_LIST_ASU_GET_START_AND_THEN_NEXT(*bsets->logical_processor_sets,lasue_lpset) )
36 logical_processor_set = LFDS710_LIST_ASU_GET_VALUE_FROM_ELEMENT( *lasue_lpset );
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) )
41 bs = LFDS710_LIST_ASU_GET_VALUE_FROM_ELEMENT( *lasue_benchmarks );
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) )
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 );