starpu_fxt_data_trace.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include <stdio.h>
  2. #include <config.h>
  3. #include <starpu.h>
  4. #include <string.h>
  5. #define PROGNAME "starpu_fxt_data_trace"
  6. #define MAX_LINE_SIZE 100
  7. static void usage(char *progname)
  8. {
  9. fprintf(stderr, "Usage : %s <filename>\n", progname);
  10. exit(77);
  11. }
  12. static void write_plt(){
  13. FILE *codelet_list = fopen("codelet_list", "r");
  14. if(!codelet_list)
  15. {
  16. perror("Error while opening codelet list:");
  17. exit(-1);
  18. }
  19. char codelet_name[MAX_LINE_SIZE];
  20. FILE *plt = fopen("data_trace.gp", "w+");
  21. if(!plt){
  22. perror("Error while creating data_trace.plt:");
  23. exit(-1);
  24. }
  25. fprintf(plt, "#!/usr/bin/gnuplot -persist\n\n");
  26. fprintf(plt, "set term postscript eps enhanced color\n");
  27. fprintf(plt, "set output \"data_trace.eps\"\n");
  28. fprintf(plt, "set title \"Data trace\"\n");
  29. fprintf(plt, "set logscale x\n");
  30. fprintf(plt, "set logscale y\n");
  31. fprintf(plt, "set xlabel \"tasks size (ms)\"\n");
  32. fprintf(plt, "set ylabel \"data size (B)\"\n");
  33. fprintf(plt, "plot ");
  34. int begin = 1;
  35. while(fgets(codelet_name, MAX_LINE_SIZE, codelet_list) != NULL)
  36. {
  37. if(begin)
  38. begin = 0;
  39. else
  40. fprintf(plt, ", ");
  41. int size = strlen(codelet_name);
  42. if(size > 0)
  43. codelet_name[size-1] = '\0';
  44. fprintf(plt, "\"%s\" using 1:2 with dots lw 1 title \"%s\"", codelet_name, codelet_name);
  45. }
  46. fprintf(plt, "\n");
  47. if(fclose(codelet_list))
  48. {
  49. perror("close failed :");
  50. exit(-1);
  51. }
  52. if(fclose(plt))
  53. {
  54. perror("close failed :");
  55. exit(-1);
  56. }
  57. }
  58. int main(int argc, char **argv)
  59. {
  60. if(argc != 2)
  61. {
  62. usage(argv[0]);
  63. }
  64. starpu_fxt_write_data_trace(argv[1]);
  65. write_plt();
  66. return 0;
  67. }