123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include <stdio.h>
- #include <config.h>
- #include <starpu.h>
- #include <string.h>
- #define PROGNAME "starpu_fxt_data_trace"
- #define MAX_LINE_SIZE 100
- static void usage(char *progname)
- {
- fprintf(stderr, "Usage : %s <filename> [codelet...]\n", progname);
- exit(77);
- }
- static void write_plt(int argc, char **argv){
- FILE *codelet_list = fopen("codelet_list", "r");
- if(!codelet_list)
- {
- perror("Error while opening codelet list:");
- exit(-1);
- }
- char codelet_name[MAX_LINE_SIZE];
- FILE *plt = fopen("data_trace.gp", "w+");
- if(!plt){
- perror("Error while creating data_trace.plt:");
- exit(-1);
- }
- fprintf(plt, "#!/usr/bin/gnuplot -persist\n\n");
- fprintf(plt, "set term postscript eps enhanced color\n");
- fprintf(plt, "set output \"data_trace.eps\"\n");
- fprintf(plt, "set title \"Data trace\"\n");
- fprintf(plt, "set logscale x\n");
- fprintf(plt, "set logscale y\n");
- fprintf(plt, "set xlabel \"tasks size (ms)\"\n");
- fprintf(plt, "set ylabel \"data size (B)\"\n");
- fprintf(plt, "plot ");
- int c_iter;
- char *v_iter;
- int begin = 1;
- while(fgets(codelet_name, MAX_LINE_SIZE, codelet_list) != NULL)
- {
- if(argc == 0)
- {
- if(begin)
- begin = 0;
- else
- fprintf(plt, ", ");
- }
- int size = strlen(codelet_name);
- if(size > 0)
- codelet_name[size-1] = '\0';
- if(argc != 0)
- {
- for(c_iter = 0, v_iter = argv[c_iter];
- c_iter < argc;
- c_iter++, v_iter = argv[c_iter])
- {
- if(!strcmp(v_iter, codelet_name))
- {
- if(begin)
- begin = 0;
- else
- fprintf(plt, ", ");
- fprintf(plt, "\"%s\" using 1:2 with dots lw 1 title \"%s\"", codelet_name, codelet_name);
- }
- }
- }
- else
- {
- fprintf(plt, "\"%s\" using 1:2 with dots lw 1 title \"%s\"", codelet_name, codelet_name);
- }
- }
- fprintf(plt, "\n");
- if(fclose(codelet_list))
- {
- perror("close failed :");
- exit(-1);
- }
- if(fclose(plt))
- {
- perror("close failed :");
- exit(-1);
- }
- }
- int main(int argc, char **argv)
- {
- if(argc < 2)
- {
- usage(argv[0]);
- }
- starpu_fxt_write_data_trace(argv[1]);
- write_plt(argc - 2, argv + 2);
- return 0;
- }
|