Adding TAMPI instrumentation
This commit is contained in:
		
							parent
							
								
									162245e955
								
							
						
					
					
						commit
						a7463723bc
					
				
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @ -24,7 +24,7 @@ dump: ovni.o dump.o parson.o | ||||
| 
 | ||||
| test_speed: test_speed.c ovni.o parson.o | ||||
| 
 | ||||
| emu: emu.o emu_ovni.o emu_nosv.o emu_nosv_ss.o ovni.o prv.o pcf.o parson.o chan.o | ||||
| emu: emu.o emu_ovni.o emu_nosv.o emu_nosv_ss.o emu_tampi.o ovni.o prv.o pcf.o parson.o chan.o | ||||
| 
 | ||||
| libovni.so: ovni.o parson.o | ||||
| 	$(LINK.c) -shared $^ -o $@ | ||||
|  | ||||
							
								
								
									
										43
									
								
								cfg/cpu-tampi-mode.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								cfg/cpu-tampi-mode.cfg
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | ||||
| #ParaverCFG | ||||
| ConfigFile.Version: 3.4 | ||||
| ConfigFile.NumWindows: 1 | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################ | ||||
| < NEW DISPLAYING WINDOW Thread: TAMPI mode > | ||||
| ################################################################################ | ||||
| window_name CPU: TAMPI mode | ||||
| window_type single | ||||
| window_id 1 | ||||
| window_position_x 960 | ||||
| window_position_y 287 | ||||
| window_width 954 | ||||
| window_height 236 | ||||
| window_comm_lines_enabled true | ||||
| window_flags_enabled true | ||||
| window_noncolor_mode true | ||||
| window_logical_filtered true | ||||
| window_physical_filtered false | ||||
| window_comm_fromto true | ||||
| window_comm_tagsize true | ||||
| window_comm_typeval true | ||||
| window_units Microseconds | ||||
| window_maximum_y 5.000000000000 | ||||
| window_minimum_y 1.000000000000 | ||||
| window_compute_y_max true | ||||
| window_level thread | ||||
| window_scale_relative 1.000000000000 | ||||
| window_end_time_relative 1.000000000000 | ||||
| window_object appl { 1, { All } } | ||||
| window_begin_time_relative 0.000000000000 | ||||
| window_open true | ||||
| window_drawmode draw_maximum | ||||
| window_drawmode_rows draw_maximum | ||||
| window_pixel_size 1 | ||||
| window_labels_to_draw 1 | ||||
| window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } } | ||||
| window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } } | ||||
| window_filter_module evt_type 1 80 | ||||
| window_filter_module evt_type_label 1 "Thread: TAMPI mode" | ||||
| window_synchronize 1 | ||||
| 
 | ||||
							
								
								
									
										43
									
								
								cfg/thread-tampi-mode.cfg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								cfg/thread-tampi-mode.cfg
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | ||||
| #ParaverCFG | ||||
| ConfigFile.Version: 3.4 | ||||
| ConfigFile.NumWindows: 1 | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################ | ||||
| < NEW DISPLAYING WINDOW Thread: TAMPI mode > | ||||
| ################################################################################ | ||||
| window_name Thread: TAMPI mode | ||||
| window_type single | ||||
| window_id 1 | ||||
| window_position_x 960 | ||||
| window_position_y 287 | ||||
| window_width 954 | ||||
| window_height 236 | ||||
| window_comm_lines_enabled true | ||||
| window_flags_enabled true | ||||
| window_noncolor_mode true | ||||
| window_logical_filtered true | ||||
| window_physical_filtered false | ||||
| window_comm_fromto true | ||||
| window_comm_tagsize true | ||||
| window_comm_typeval true | ||||
| window_units Microseconds | ||||
| window_maximum_y 5.000000000000 | ||||
| window_minimum_y 1.000000000000 | ||||
| window_compute_y_max true | ||||
| window_level thread | ||||
| window_scale_relative 1.000000000000 | ||||
| window_end_time_relative 1.000000000000 | ||||
| window_object appl { 1, { All } } | ||||
| window_begin_time_relative 0.000000000000 | ||||
| window_open true | ||||
| window_drawmode draw_maximum | ||||
| window_drawmode_rows draw_maximum | ||||
| window_pixel_size 1 | ||||
| window_labels_to_draw 1 | ||||
| window_selected_functions { 14, { {cpu, Active Thd}, {appl, Adding}, {task, Adding}, {thread, Last Evt Val}, {node, Adding}, {system, Adding}, {workload, Adding}, {from_obj, All}, {to_obj, All}, {tag_msg, All}, {size_msg, All}, {bw_msg, All}, {evt_type, =}, {evt_value, All} } } | ||||
| window_compose_functions { 9, { {compose_cpu, As Is}, {compose_appl, As Is}, {compose_task, As Is}, {compose_thread, As Is}, {compose_node, As Is}, {compose_system, As Is}, {compose_workload, As Is}, {topcompose1, As Is}, {topcompose2, As Is} } } | ||||
| window_filter_module evt_type 1 30 | ||||
| window_filter_module evt_type_label 1 "Thread: TAMPI mode" | ||||
| window_synchronize 1 | ||||
| 
 | ||||
							
								
								
									
										3
									
								
								emu.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								emu.c
									
									
									
									
									
								
							| @ -163,6 +163,7 @@ hook_init(struct ovni_emu *emu) | ||||
| { | ||||
| 	hook_init_ovni(emu); | ||||
| 	hook_init_nosv(emu); | ||||
| 	hook_init_tampi(emu); | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| @ -176,6 +177,8 @@ hook_pre(struct ovni_emu *emu) | ||||
| 			  break; | ||||
| 		case 'V': hook_pre_nosv(emu); | ||||
| 			  break; | ||||
| 		case 'T': hook_pre_tampi(emu); | ||||
| 			  break; | ||||
| 		default: | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
							
								
								
									
										17
									
								
								emu.h
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								emu.h
									
									
									
									
									
								
							| @ -48,6 +48,15 @@ enum nosv_thread_ss_state { | ||||
| 	ST_BAD = 666, | ||||
| }; | ||||
| 
 | ||||
| enum nosv_tampi_state { | ||||
| 	ST_TAMPI_SEND = 1, | ||||
| 	ST_TAMPI_RECV = 2, | ||||
| 	ST_TAMPI_ISEND = 3, | ||||
| 	ST_TAMPI_IRECV = 4, | ||||
| 	ST_TAMPI_WAIT = 5, | ||||
| 	ST_TAMPI_WAITALL = 6, | ||||
| }; | ||||
| 
 | ||||
| enum nosv_thread_ss_event { | ||||
| 	EV_NULL = 0, | ||||
| 	EV_SCHED_RECV = 50, | ||||
| @ -130,6 +139,9 @@ enum chan { | ||||
| 	CHAN_NOSV_TYPEID, | ||||
| 	CHAN_NOSV_APPID, | ||||
| 	CHAN_NOSV_SUBSYSTEM, | ||||
| 
 | ||||
| 	CHAN_TAMPI_MODE, | ||||
| 
 | ||||
| 	CHAN_MAX | ||||
| }; | ||||
| 
 | ||||
| @ -147,6 +159,8 @@ const static int chan_to_prvtype[CHAN_MAX][3] = { | ||||
| 	{ CHAN_NOSV_TYPEID,	21, 71 }, | ||||
| 	{ CHAN_NOSV_APPID,	22, 72 }, | ||||
| 	{ CHAN_NOSV_SUBSYSTEM,	23, 73 }, | ||||
| 
 | ||||
| 	{ CHAN_TAMPI_MODE,	30, 80 }, | ||||
| }; | ||||
| 
 | ||||
| ///* All PRV event types */
 | ||||
| @ -388,6 +402,9 @@ void hook_pre_nosv_ss(struct ovni_emu *emu); | ||||
| void hook_emit_nosv_ss(struct ovni_emu *emu); | ||||
| void hook_post_nosv_ss(struct ovni_emu *emu); | ||||
| 
 | ||||
| void hook_init_tampi(struct ovni_emu *emu); | ||||
| void hook_pre_tampi(struct ovni_emu *emu); | ||||
| 
 | ||||
| struct ovni_cpu *emu_get_cpu(struct ovni_loom *loom, int cpuid); | ||||
| 
 | ||||
| struct ovni_ethread *emu_get_thread(struct ovni_eproc *proc, int tid); | ||||
|  | ||||
							
								
								
									
										188
									
								
								emu_tampi.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										188
									
								
								emu_tampi.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,188 @@ | ||||
| #include <assert.h> | ||||
| #include "uthash.h" | ||||
| 
 | ||||
| #include "ovni.h" | ||||
| #include "ovni_trace.h" | ||||
| #include "emu.h" | ||||
| #include "prv.h" | ||||
| #include "chan.h" | ||||
| 
 | ||||
| /* --------------------------- init ------------------------------- */ | ||||
| 
 | ||||
| void | ||||
| hook_init_tampi(struct ovni_emu *emu) | ||||
| { | ||||
| 	struct ovni_ethread *th; | ||||
| 	struct ovni_cpu *cpu; | ||||
| 	struct ovni_trace *trace; | ||||
| 	int i, row, type; | ||||
| 	FILE *prv_th, *prv_cpu; | ||||
| 	int64_t *clock; | ||||
| 
 | ||||
| 	clock = &emu->delta_time; | ||||
| 	prv_th = emu->prv_thread; | ||||
| 	prv_cpu = emu->prv_cpu; | ||||
| 	trace = &emu->trace; | ||||
| 
 | ||||
| 	/* Init the channels in all threads */ | ||||
| 	for(i=0; i<emu->total_nthreads; i++) | ||||
| 	{ | ||||
| 		th = emu->global_thread[i]; | ||||
| 		row = th->gindex + 1; | ||||
| 
 | ||||
| 		chan_th_init(th, CHAN_TAMPI_MODE, CHAN_TRACK_TH_RUNNING, row, prv_th, clock); | ||||
| 		chan_enable(&th->chan[CHAN_TAMPI_MODE], 1); | ||||
| 		chan_set(&th->chan[CHAN_TAMPI_MODE], ST_NULL); | ||||
| 		chan_enable(&th->chan[CHAN_TAMPI_MODE], 0); | ||||
| 	} | ||||
| 
 | ||||
| 	/* Init the channels in all cpus */ | ||||
| 	for(i=0; i<emu->total_ncpus; i++) | ||||
| 	{ | ||||
| 		cpu = emu->global_cpu[i]; | ||||
| 		row = cpu->gindex + 1; | ||||
| 
 | ||||
| 		chan_cpu_init(cpu, CHAN_TAMPI_MODE, CHAN_TRACK_TH_RUNNING, row, prv_cpu, clock); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| /* --------------------------- pre ------------------------------- */ | ||||
| 
 | ||||
| 
 | ||||
| static void | ||||
| pre_send(struct ovni_emu *emu) | ||||
| { | ||||
| 	struct ovni_ethread *th; | ||||
| 
 | ||||
| 	th = emu->cur_thread; | ||||
| 
 | ||||
| 	switch(emu->cur_ev->header.value) | ||||
| 	{ | ||||
| 		case '[': | ||||
| 			chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_SEND); | ||||
| 			break; | ||||
| 		case ']': | ||||
| 			chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_SEND); | ||||
| 			break; | ||||
| 		default: | ||||
| 			  abort(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| pre_recv(struct ovni_emu *emu) | ||||
| { | ||||
| 	struct ovni_ethread *th; | ||||
| 
 | ||||
| 	th = emu->cur_thread; | ||||
| 
 | ||||
| 	switch(emu->cur_ev->header.value) | ||||
| 	{ | ||||
| 		case '[': | ||||
| 			chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_RECV); | ||||
| 			break; | ||||
| 		case ']': | ||||
| 			chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_RECV); | ||||
| 			break; | ||||
| 		default: | ||||
| 			  abort(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| pre_isend(struct ovni_emu *emu) | ||||
| { | ||||
| 	struct ovni_ethread *th; | ||||
| 
 | ||||
| 	th = emu->cur_thread; | ||||
| 
 | ||||
| 	switch(emu->cur_ev->header.value) | ||||
| 	{ | ||||
| 		case '[': | ||||
| 			chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_ISEND); | ||||
| 			break; | ||||
| 		case ']': | ||||
| 			chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_ISEND); | ||||
| 			break; | ||||
| 		default: | ||||
| 			  abort(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| pre_irecv(struct ovni_emu *emu) | ||||
| { | ||||
| 	struct ovni_ethread *th; | ||||
| 
 | ||||
| 	th = emu->cur_thread; | ||||
| 
 | ||||
| 	switch(emu->cur_ev->header.value) | ||||
| 	{ | ||||
| 		case '[': | ||||
| 			chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_IRECV); | ||||
| 			break; | ||||
| 		case ']': | ||||
| 			chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_IRECV); | ||||
| 			break; | ||||
| 		default: | ||||
| 			  abort(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| pre_wait(struct ovni_emu *emu) | ||||
| { | ||||
| 	struct ovni_ethread *th; | ||||
| 
 | ||||
| 	th = emu->cur_thread; | ||||
| 
 | ||||
| 	switch(emu->cur_ev->header.value) | ||||
| 	{ | ||||
| 		case '[': | ||||
| 			chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_WAIT); | ||||
| 			break; | ||||
| 		case ']': | ||||
| 			chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_WAIT); | ||||
| 			break; | ||||
| 		default: | ||||
| 			  abort(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| pre_waitall(struct ovni_emu *emu) | ||||
| { | ||||
| 	struct ovni_ethread *th; | ||||
| 
 | ||||
| 	th = emu->cur_thread; | ||||
| 
 | ||||
| 	switch(emu->cur_ev->header.value) | ||||
| 	{ | ||||
| 		case '[': | ||||
| 			chan_push(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_WAITALL); | ||||
| 			break; | ||||
| 		case ']': | ||||
| 			chan_pop(&th->chan[CHAN_TAMPI_MODE], ST_TAMPI_WAITALL); | ||||
| 			break; | ||||
| 		default: | ||||
| 			  abort(); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void | ||||
| hook_pre_tampi(struct ovni_emu *emu) | ||||
| { | ||||
| 	assert(emu->cur_ev->header.model == 'T'); | ||||
| 
 | ||||
| 	switch(emu->cur_ev->header.category) | ||||
| 	{ | ||||
| 		case 'S': pre_send(emu); break; | ||||
| 		case 'R': pre_recv(emu); break; | ||||
| 		case 's': pre_isend(emu); break; | ||||
| 		case 'r': pre_irecv(emu); break; | ||||
| 		case 'V': pre_wait(emu); break; | ||||
| 		case 'W': pre_waitall(emu); break; | ||||
| 		default: | ||||
| 			break; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										23
									
								
								pcf.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								pcf.c
									
									
									
									
									
								
							| @ -146,6 +146,27 @@ struct event_type cpu_ss = { | ||||
| 	ss_values | ||||
| }; | ||||
| 
 | ||||
| struct event_value tampi_mode_values[] = { | ||||
| 	{ ST_NULL,		"NULL" }, | ||||
| 	{ ST_TAMPI_SEND,	"TAMPI: Send" }, | ||||
| 	{ ST_TAMPI_RECV,	"TAMPI: Recv" }, | ||||
| 	{ ST_TAMPI_ISEND,	"TAMPI: Isend" }, | ||||
| 	{ ST_TAMPI_IRECV,	"TAMPI: Irecv" }, | ||||
| 	{ ST_TAMPI_WAIT,	"TAMPI: Wait" }, | ||||
| 	{ ST_TAMPI_WAITALL,	"TAMPI: Waitall" }, | ||||
| 	{ -1, NULL }, | ||||
| }; | ||||
| 
 | ||||
| struct event_type cpu_tampi_mode = { | ||||
| 	0, 80, "CPU: TAMPI running thread mode", | ||||
| 	tampi_mode_values | ||||
| }; | ||||
| 
 | ||||
| struct event_type thread_tampi_mode = { | ||||
| 	0, 30, "Thread: TAMPI mode", | ||||
| 	tampi_mode_values | ||||
| }; | ||||
| 
 | ||||
| struct event_type thread_cpu_affinity = { | ||||
| 	0, chan_to_prvtype[CHAN_OVNI_CPU][1], "Thread: current CPU affinity", | ||||
| 	/* Ignored */ NULL | ||||
| @ -230,6 +251,8 @@ write_events(FILE *f, struct ovni_emu *emu) | ||||
| 	write_event_type(f, &thread_tid); | ||||
| 	write_event_type(f, &thread_ss); | ||||
| 	write_event_type(f, &cpu_ss); | ||||
| 	write_event_type(f, &cpu_tampi_mode); | ||||
| 	write_event_type(f, &thread_tampi_mode); | ||||
| 
 | ||||
| 	write_cpu_type(f, &thread_cpu_affinity, emu); | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Kevin Sala
						Kevin Sala