starpu_fxt_number_events_to_names.py 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. # StarPU --- Runtime system for heterogeneous multicore architectures.
  4. #
  5. # Copyright (C) 2020 Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
  6. #
  7. # StarPU is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU Lesser General Public License as published by
  9. # the Free Software Foundation; either version 2.1 of the License, or (at
  10. # your option) any later version.
  11. #
  12. # StarPU is distributed in the hope that it will be useful, but
  13. # WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  15. #
  16. # See the GNU Lesser General Public License in COPYING.LGPL for more details.
  17. #
  18. import sys
  19. """
  20. STARPU_FXT_EVENT_DEFINES is generated by configure and is the output of
  21. the following command:
  22. grep -E "#define\s+_STARPU_(MPI_)?FUT_" src/common/fxt.h mpi/src/starpu_mpi_fxt.h | grep 0x | grep -v 0x1 | cut -d : -f 2
  23. """
  24. fxt_codes_raw = """
  25. #define _STARPU_FUT_WORKER_INIT_START 0x5100
  26. #define _STARPU_FUT_WORKER_INIT_END 0x5101
  27. #define _STARPU_FUT_START_CODELET_BODY 0x5102
  28. #define _STARPU_FUT_END_CODELET_BODY 0x5103
  29. #define _STARPU_FUT_JOB_PUSH 0x5104
  30. #define _STARPU_FUT_JOB_POP 0x5105
  31. #define _STARPU_FUT_UPDATE_TASK_CNT 0x5106
  32. #define _STARPU_FUT_START_FETCH_INPUT_ON_TID 0x5107
  33. #define _STARPU_FUT_END_FETCH_INPUT_ON_TID 0x5108
  34. #define _STARPU_FUT_START_PUSH_OUTPUT_ON_TID 0x5109
  35. #define _STARPU_FUT_END_PUSH_OUTPUT_ON_TID 0x5110
  36. #define _STARPU_FUT_TAG 0x5111
  37. #define _STARPU_FUT_TAG_DEPS 0x5112
  38. #define _STARPU_FUT_TASK_DEPS 0x5113
  39. #define _STARPU_FUT_DATA_COPY 0x5114
  40. #define _STARPU_FUT_WORK_STEALING 0x5115
  41. #define _STARPU_FUT_WORKER_DEINIT_START 0x5116
  42. #define _STARPU_FUT_WORKER_DEINIT_END 0x5117
  43. #define _STARPU_FUT_WORKER_SLEEP_START 0x5118
  44. #define _STARPU_FUT_WORKER_SLEEP_END 0x5119
  45. #define _STARPU_FUT_TASK_SUBMIT 0x511a
  46. #define _STARPU_FUT_CODELET_DATA_HANDLE 0x511b
  47. #define _STARPU_FUT_MODEL_NAME 0x511c
  48. #define _STARPU_FUT_DATA_NAME 0x511d
  49. #define _STARPU_FUT_DATA_COORDINATES 0x511e
  50. #define _STARPU_FUT_HANDLE_DATA_UNREGISTER 0x511f
  51. #define _STARPU_FUT_USER_DEFINED_START 0x5120
  52. #define _STARPU_FUT_USER_DEFINED_END 0x5121
  53. #define _STARPU_FUT_NEW_MEM_NODE 0x5122
  54. #define _STARPU_FUT_START_CALLBACK 0x5123
  55. #define _STARPU_FUT_END_CALLBACK 0x5124
  56. #define _STARPU_FUT_TASK_DONE 0x5125
  57. #define _STARPU_FUT_TAG_DONE 0x5126
  58. #define _STARPU_FUT_START_ALLOC 0x5127
  59. #define _STARPU_FUT_END_ALLOC 0x5128
  60. #define _STARPU_FUT_START_ALLOC_REUSE 0x5129
  61. #define _STARPU_FUT_END_ALLOC_REUSE 0x5130
  62. #define _STARPU_FUT_USED_MEM 0x512a
  63. #define _STARPU_FUT_TASK_NAME 0x512b
  64. #define _STARPU_FUT_DATA_WONT_USE 0x512c
  65. #define _STARPU_FUT_TASK_COLOR 0x512d
  66. #define _STARPU_FUT_DATA_DOING_WONT_USE 0x512e
  67. #define _STARPU_FUT_START_MEMRECLAIM 0x5131
  68. #define _STARPU_FUT_END_MEMRECLAIM 0x5132
  69. #define _STARPU_FUT_START_DRIVER_COPY 0x5133
  70. #define _STARPU_FUT_END_DRIVER_COPY 0x5134
  71. #define _STARPU_FUT_START_DRIVER_COPY_ASYNC 0x5135
  72. #define _STARPU_FUT_END_DRIVER_COPY_ASYNC 0x5136
  73. #define _STARPU_FUT_START_PROGRESS_ON_TID 0x5137
  74. #define _STARPU_FUT_END_PROGRESS_ON_TID 0x5138
  75. #define _STARPU_FUT_USER_EVENT 0x5139
  76. #define _STARPU_FUT_SET_PROFILING 0x513a
  77. #define _STARPU_FUT_TASK_WAIT_FOR_ALL 0x513b
  78. #define _STARPU_FUT_EVENT 0x513c
  79. #define _STARPU_FUT_THREAD_EVENT 0x513d
  80. #define _STARPU_FUT_CODELET_DETAILS 0x513e
  81. #define _STARPU_FUT_CODELET_DATA 0x513f
  82. #define _STARPU_FUT_LOCKING_MUTEX 0x5140
  83. #define _STARPU_FUT_MUTEX_LOCKED 0x5141
  84. #define _STARPU_FUT_UNLOCKING_MUTEX 0x5142
  85. #define _STARPU_FUT_MUTEX_UNLOCKED 0x5143
  86. #define _STARPU_FUT_TRYLOCK_MUTEX 0x5144
  87. #define _STARPU_FUT_RDLOCKING_RWLOCK 0x5145
  88. #define _STARPU_FUT_RWLOCK_RDLOCKED 0x5146
  89. #define _STARPU_FUT_WRLOCKING_RWLOCK 0x5147
  90. #define _STARPU_FUT_RWLOCK_WRLOCKED 0x5148
  91. #define _STARPU_FUT_UNLOCKING_RWLOCK 0x5149
  92. #define _STARPU_FUT_RWLOCK_UNLOCKED 0x514a
  93. #define _STARPU_FUT_LOCKING_SPINLOCK 0x514b
  94. #define _STARPU_FUT_SPINLOCK_LOCKED 0x514c
  95. #define _STARPU_FUT_UNLOCKING_SPINLOCK 0x514d
  96. #define _STARPU_FUT_SPINLOCK_UNLOCKED 0x514e
  97. #define _STARPU_FUT_TRYLOCK_SPINLOCK 0x514f
  98. #define _STARPU_FUT_COND_WAIT_BEGIN 0x5150
  99. #define _STARPU_FUT_COND_WAIT_END 0x5151
  100. #define _STARPU_FUT_MEMORY_FULL 0x5152
  101. #define _STARPU_FUT_DATA_LOAD 0x5153
  102. #define _STARPU_FUT_START_UNPARTITION_ON_TID 0x5154
  103. #define _STARPU_FUT_END_UNPARTITION_ON_TID 0x5155
  104. #define _STARPU_FUT_START_FREE 0x5156
  105. #define _STARPU_FUT_END_FREE 0x5157
  106. #define _STARPU_FUT_START_WRITEBACK 0x5158
  107. #define _STARPU_FUT_END_WRITEBACK 0x5159
  108. #define _STARPU_FUT_SCHED_COMPONENT_PUSH_PRIO 0x515a
  109. #define _STARPU_FUT_SCHED_COMPONENT_POP_PRIO 0x515b
  110. #define _STARPU_FUT_START_WRITEBACK_ASYNC 0x515c
  111. #define _STARPU_FUT_END_WRITEBACK_ASYNC 0x515d
  112. #define _STARPU_FUT_HYPERVISOR_BEGIN 0x5160
  113. #define _STARPU_FUT_HYPERVISOR_END 0x5161
  114. #define _STARPU_FUT_BARRIER_WAIT_BEGIN 0x5162
  115. #define _STARPU_FUT_BARRIER_WAIT_END 0x5163
  116. #define _STARPU_FUT_WORKER_SCHEDULING_START 0x5164
  117. #define _STARPU_FUT_WORKER_SCHEDULING_END 0x5165
  118. #define _STARPU_FUT_WORKER_SCHEDULING_PUSH 0x5166
  119. #define _STARPU_FUT_WORKER_SCHEDULING_POP 0x5167
  120. #define _STARPU_FUT_START_EXECUTING 0x5168
  121. #define _STARPU_FUT_END_EXECUTING 0x5169
  122. #define _STARPU_FUT_SCHED_COMPONENT_NEW 0x516a
  123. #define _STARPU_FUT_SCHED_COMPONENT_CONNECT 0x516b
  124. #define _STARPU_FUT_SCHED_COMPONENT_PUSH 0x516c
  125. #define _STARPU_FUT_SCHED_COMPONENT_PULL 0x516d
  126. #define _STARPU_FUT_TASK_SUBMIT_START 0x516e
  127. #define _STARPU_FUT_TASK_SUBMIT_END 0x516f
  128. #define _STARPU_FUT_TASK_BUILD_START 0x5170
  129. #define _STARPU_FUT_TASK_BUILD_END 0x5171
  130. #define _STARPU_FUT_TASK_MPI_DECODE_START 0x5172
  131. #define _STARPU_FUT_TASK_MPI_DECODE_END 0x5173
  132. #define _STARPU_FUT_TASK_MPI_PRE_START 0x5174
  133. #define _STARPU_FUT_TASK_MPI_PRE_END 0x5175
  134. #define _STARPU_FUT_TASK_MPI_POST_START 0x5176
  135. #define _STARPU_FUT_TASK_MPI_POST_END 0x5177
  136. #define _STARPU_FUT_TASK_WAIT_START 0x5178
  137. #define _STARPU_FUT_TASK_WAIT_END 0x5179
  138. #define _STARPU_FUT_TASK_WAIT_FOR_ALL_START 0x517a
  139. #define _STARPU_FUT_TASK_WAIT_FOR_ALL_END 0x517b
  140. #define _STARPU_FUT_HANDLE_DATA_REGISTER 0x517c
  141. #define _STARPU_FUT_START_FETCH_INPUT 0x517e
  142. #define _STARPU_FUT_END_FETCH_INPUT 0x517f
  143. #define _STARPU_FUT_TASK_THROTTLE_START 0x5180
  144. #define _STARPU_FUT_TASK_THROTTLE_END 0x5181
  145. #define _STARPU_FUT_DATA_STATE_INVALID 0x5182
  146. #define _STARPU_FUT_DATA_STATE_OWNER 0x5183
  147. #define _STARPU_FUT_DATA_STATE_SHARED 0x5184
  148. #define _STARPU_FUT_DATA_REQUEST_CREATED 0x5185
  149. #define _STARPU_FUT_PAPI_TASK_EVENT_VALUE 0x5186
  150. #define _STARPU_MPI_FUT_START 0x5201
  151. #define _STARPU_MPI_FUT_STOP 0x5202
  152. #define _STARPU_MPI_FUT_BARRIER 0x5203
  153. #define _STARPU_MPI_FUT_ISEND_SUBMIT_BEGIN 0x5204
  154. #define _STARPU_MPI_FUT_ISEND_SUBMIT_END 0x5205
  155. #define _STARPU_MPI_FUT_IRECV_SUBMIT_BEGIN 0x5206
  156. #define _STARPU_MPI_FUT_IRECV_SUBMIT_END 0x5207
  157. #define _STARPU_MPI_FUT_ISEND_COMPLETE_BEGIN 0x5208
  158. #define _STARPU_MPI_FUT_ISEND_COMPLETE_END 0x5209
  159. #define _STARPU_MPI_FUT_DATA_SET_RANK 0x521a
  160. #define _STARPU_MPI_FUT_IRECV_TERMINATED 0x521b
  161. #define _STARPU_MPI_FUT_ISEND_TERMINATED 0x521c
  162. #define _STARPU_MPI_FUT_TESTING_DETACHED_BEGIN 0x521d
  163. #define _STARPU_MPI_FUT_TESTING_DETACHED_END 0x521e
  164. #define _STARPU_MPI_FUT_TEST_BEGIN 0x521f
  165. #define _STARPU_MPI_FUT_TEST_END 0x5220
  166. #define _STARPU_MPI_FUT_IRECV_COMPLETE_BEGIN 0x520a
  167. #define _STARPU_MPI_FUT_IRECV_COMPLETE_END 0x520b
  168. #define _STARPU_MPI_FUT_SLEEP_BEGIN 0x520c
  169. #define _STARPU_MPI_FUT_SLEEP_END 0x520d
  170. #define _STARPU_MPI_FUT_DTESTING_BEGIN 0x520e
  171. #define _STARPU_MPI_FUT_DTESTING_END 0x520f
  172. #define _STARPU_MPI_FUT_UTESTING_BEGIN 0x5210
  173. #define _STARPU_MPI_FUT_UTESTING_END 0x5211
  174. #define _STARPU_MPI_FUT_UWAIT_BEGIN 0x5212
  175. #define _STARPU_MPI_FUT_UWAIT_END 0x5213
  176. #define _STARPU_MPI_FUT_POLLING_BEGIN 0x5214
  177. #define _STARPU_MPI_FUT_POLLING_END 0x5215
  178. #define _STARPU_MPI_FUT_DRIVER_RUN_BEGIN 0x5216
  179. #define _STARPU_MPI_FUT_DRIVER_RUN_END 0x5217
  180. #define _STARPU_MPI_FUT_DATA_SET_TAG 0x5218
  181. """
  182. PROGNAME=sys.argv[0]
  183. number_events_path = None
  184. def usage():
  185. print("Convert event keys in number_events.data to event names")
  186. print("")
  187. print("Usage: %s <number_events.data path>" % PROGNAME)
  188. print("")
  189. print("Options:")
  190. print(" -h, --help display this help and exit")
  191. print(" -v, --version output version information and exit")
  192. print("")
  193. print("Report bugs to <starpu-devel@lists.gforge.inria.fr>")
  194. sys.exit(1)
  195. if len(sys.argv) == 2:
  196. if sys.argv[1] == '-v' or sys.argv[1] == '--version':
  197. print("%s (StarPU) 1.3.99" % PROGNAME)
  198. sys.exit(0)
  199. elif sys.argv[1] == '-h' or sys.argv[1] == '--help':
  200. usage()
  201. else:
  202. number_events_path = sys.argv[1]
  203. else:
  204. usage()
  205. def man():
  206. print("Sepecify file containing event stats")
  207. sys.exit(1)
  208. # Process fxt_code_raw content to ease the conversion:
  209. fxt_codes = dict()
  210. for line in fxt_codes_raw.split("\n"):
  211. elements = line.split()
  212. if len(elements) == 3:
  213. key = int(elements[2][2:], 16)
  214. assert(key not in fxt_codes)
  215. fxt_codes[key] = elements[1]
  216. # Convert content of the file:
  217. nb_events = 0
  218. with open(number_events_path, 'r') as f:
  219. for line in f:
  220. elements = line.split()
  221. if len(elements) == 2:
  222. key = int(elements[0][2:], 16)
  223. nb = int(elements[1])
  224. nb_events += nb
  225. if key in fxt_codes:
  226. print("%12d %s" % (nb, fxt_codes[key]))
  227. else:
  228. print("%12d %s" % (nb, elements[0]))
  229. print(" TOTAL: %d" % nb_events)