Explorar o código

more precise measurements in tasks_size_overhead

Samuel Thibault %!s(int64=12) %!d(string=hai) anos
pai
achega
f24462db69

+ 12 - 3
tests/microbenchs/tasks_size_overhead.c

@@ -32,12 +32,20 @@
 
 
 #define START 1000
 #define START 1000
 #define STOP 1000000
 #define STOP 1000000
+#ifdef STARPU_SLOW_MACHINE
 #define FACTOR 4
 #define FACTOR 4
+#else
+#define FACTOR 2
+#endif
 
 
 starpu_data_handle_t data_handles[8];
 starpu_data_handle_t data_handles[8];
 float *buffers[8];
 float *buffers[8];
 
 
+#ifdef STARPU_SLOW_MACHINE
 static unsigned ntasks = 1000;
 static unsigned ntasks = 1000;
+#else
+static unsigned ntasks = 10;
+#endif
 static unsigned nbuffers = 0;
 static unsigned nbuffers = 0;
 
 
 struct starpu_task *tasks;
 struct starpu_task *tasks;
@@ -118,13 +126,14 @@ int main(int argc, char **argv)
 	for (size = START; size < STOP; size *= FACTOR)
 	for (size = START; size < STOP; size *= FACTOR)
 		FPRINTF(stdout, "%d iters(us)\ttotal(s)\t", size);
 		FPRINTF(stdout, "%d iters(us)\ttotal(s)\t", size);
 	FPRINTF(stdout, "\n");
 	FPRINTF(stdout, "\n");
-	FPRINTF(stdout, "\"\"\t");
+	FPRINTF(stdout, "\"seq\"\t");
 	for (size = START; size < STOP; size *= FACTOR) {
 	for (size = START; size < STOP; size *= FACTOR) {
 		double start,end;
 		double start,end;
 		start = starpu_timing_now();
 		start = starpu_timing_now();
-		func(NULL, (void*) (uintptr_t) size);
+		for (i = 0; i < ntasks; i++)
+			func(NULL, (void*) (uintptr_t) size);
 		end = starpu_timing_now();
 		end = starpu_timing_now();
-		FPRINTF(stdout, "%.0f       \t\"        \"\t", end-start);
+		FPRINTF(stdout, "%.0f       \t%f\t", (end-start)/ntasks, (end-start)/1000000);
 	}
 	}
 	FPRINTF(stdout, "\n");
 	FPRINTF(stdout, "\n");
 	fflush(stdout);
 	fflush(stdout);

+ 12 - 2
tests/microbenchs/tasks_size_overhead.gp

@@ -1,11 +1,16 @@
 #!/bin/sh
 #!/bin/sh
 OUTPUT=tasks_size_overhead.output
 OUTPUT=tasks_size_overhead.output
-VALS=$(sed -n -e '4p' < $OUTPUT)
+VALS=$(sed -n -e '3p' < $OUTPUT)
 VAL1=$(echo "$VALS" | cut -d '	' -f 3)
 VAL1=$(echo "$VALS" | cut -d '	' -f 3)
 VAL2=$(echo "$VALS" | cut -d '	' -f 5)
 VAL2=$(echo "$VALS" | cut -d '	' -f 5)
 VAL3=$(echo "$VALS" | cut -d '	' -f 7)
 VAL3=$(echo "$VALS" | cut -d '	' -f 7)
 VAL4=$(echo "$VALS" | cut -d '	' -f 9)
 VAL4=$(echo "$VALS" | cut -d '	' -f 9)
 VAL5=$(echo "$VALS" | cut -d '	' -f 11)
 VAL5=$(echo "$VALS" | cut -d '	' -f 11)
+VAL6=$(echo "$VALS" | cut -d '	' -f 13)
+VAL7=$(echo "$VALS" | cut -d '	' -f 15)
+VAL8=$(echo "$VALS" | cut -d '	' -f 17)
+VAL9=$(echo "$VALS" | cut -d '	' -f 19)
+VAL10=$(echo "$VALS" | cut -d '	' -f 21)
 gnuplot << EOF
 gnuplot << EOF
 set terminal eps
 set terminal eps
 set output "tasks_size_overhead.eps"
 set output "tasks_size_overhead.eps"
@@ -16,5 +21,10 @@ plot \
 	"$OUTPUT" using 1:($VAL3)/(\$7) with linespoints title columnheader(6), \
 	"$OUTPUT" using 1:($VAL3)/(\$7) with linespoints title columnheader(6), \
 	"$OUTPUT" using 1:($VAL4)/(\$9) with linespoints title columnheader(8), \
 	"$OUTPUT" using 1:($VAL4)/(\$9) with linespoints title columnheader(8), \
 	"$OUTPUT" using 1:($VAL5)/(\$11) with linespoints title columnheader(10), \
 	"$OUTPUT" using 1:($VAL5)/(\$11) with linespoints title columnheader(10), \
-	x
+	"$OUTPUT" using 1:($VAL6)/(\$13) with linespoints title columnheader(12), \
+	"$OUTPUT" using 1:($VAL7)/(\$15) with linespoints title columnheader(14), \
+	"$OUTPUT" using 1:($VAL8)/(\$17) with linespoints title columnheader(16), \
+	"$OUTPUT" using 1:($VAL9)/(\$19) with linespoints title columnheader(18), \
+	"$OUTPUT" using 1:($VAL10)/(\$21) with linespoints title columnheader(20), \
+	x title "linear"
 EOF
 EOF

+ 3 - 2
tests/microbenchs/tasks_size_overhead.sh

@@ -1,4 +1,5 @@
 #!/bin/sh
 #!/bin/sh
-./tasks_size_overhead > tasks_size_overhead.output
-./tasks_size_overhead.gp
+ROOT=${0%.sh}
+$ROOT > tasks_size_overhead.output
+$ROOT.gp
 gv tasks_size_overhead.eps
 gv tasks_size_overhead.eps