starpu.suppr 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. # StarPU --- Runtime system for heterogeneous multicore architectures.
  2. #
  3. # Copyright (C) 2013-2016 Université de Bordeaux
  4. # Copyright (C) 2012 CNRS
  5. # Copyright (C) 2012 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. {
  19. don't care about cache hit stats
  20. Helgrind:Race
  21. fun:_starpu_msi_cache_hit
  22. ...
  23. }
  24. {
  25. don't care about cache miss stats
  26. Helgrind:Race
  27. fun:_starpu_msi_cache_miss
  28. ...
  29. }
  30. {
  31. known race, but not problematic in practice, see comment in _starpu_tag_clear
  32. Helgrind:LockOrder
  33. ...
  34. fun:_starpu_tag_free
  35. fun:_starpu_htbl_clear_tags
  36. ...
  37. fun:_starpu_tag_clear
  38. fun:starpu_shutdown
  39. ...
  40. }
  41. {
  42. There is actually no race on current_mode, because the mode can not change unexpectedly, until _starpu_notify_data_dependencies() is called further down. Valgrind can not know about such software rwlock.
  43. Helgrind:Race
  44. fun:_starpu_release_data_on_node
  45. fun:_starpu_push_task_output
  46. ...
  47. }
  48. {
  49. We do not care about races on profiling statistics
  50. Helgrind:Race
  51. fun:_starpu_worker_get_status
  52. fun:_starpu_worker_reset_profiling_info_with_lock
  53. ...
  54. }
  55. {
  56. This is racy, but since we'll always put the same values, this is not a problem.
  57. Helgrind:Race
  58. fun:_starpu_codelet_check_deprecated_fields
  59. ...
  60. }
  61. {
  62. This is racy, but we don't care, it's only a statistic
  63. Helgrind:Race
  64. fun:starpu_task_nsubmitted
  65. ...
  66. }
  67. {
  68. This is racy, but we don't care, it's only a statistic
  69. Helgrind:Race
  70. fun:starpu_task_nready
  71. ...
  72. }
  73. {
  74. This is racy, but we don't care, it's only a statistic
  75. Helgrind:Race
  76. fun:_starpu_bus_update_profiling_info
  77. ...
  78. }
  79. {
  80. fscanf error
  81. Memcheck:Cond
  82. ...
  83. fun:fscanf
  84. fun:_starpu_load_bus_performance_files
  85. ...
  86. }
  87. {
  88. mc / handle locking order. We always take handle before mc, except when we tidy memory, where we use trylock, but helgrind doesn't handle that :/ https://bugs.kde.org/show_bug.cgi?id=243232
  89. Helgrind:LockOrder
  90. fun:mutex_trylock_WRK
  91. fun:__starpu_spin_trylock
  92. ...
  93. }
  94. {
  95. mc / handle locking order1
  96. Helgrind:LockOrder
  97. ...
  98. fun:__starpu_spin_lock
  99. fun:try_to_free_mem_chunk
  100. ...
  101. }
  102. {
  103. mc / handle locking order2
  104. Helgrind:LockOrder
  105. ...
  106. fun:__starpu_spin_lock
  107. fun:try_to_find_reusable_mem_chunk
  108. ...
  109. }
  110. {
  111. mc / handle locking order3
  112. Helgrind:LockOrder
  113. ...
  114. fun:__starpu_spin_lock
  115. fun:free_potentially_in_use_mc
  116. ...
  117. }
  118. {
  119. mc / handle locking order4
  120. Helgrind:LockOrder
  121. ...
  122. fun:__starpu_spin_lock
  123. fun:free_potentially_in_use_mc
  124. ...
  125. }
  126. {
  127. mc / handle locking order5
  128. Helgrind:LockOrder
  129. ...
  130. fun:__starpu_spin_lock
  131. fun:register_mem_chunk
  132. ...
  133. }
  134. {
  135. mc / handle locking order6
  136. Helgrind:LockOrder
  137. ...
  138. fun:__starpu_spin_lock
  139. fun:_starpu_request_mem_chunk_removal
  140. ...
  141. }
  142. {
  143. mc / handle locking order7
  144. Helgrind:LockOrder
  145. ...
  146. fun:__starpu_spin_lock
  147. fun:_starpu_allocate_interface
  148. ...
  149. }
  150. {
  151. mc / handle locking order8
  152. Helgrind:LockOrder
  153. ...
  154. fun:__starpu_spin_lock
  155. fun:_starpu_memchunk_recently_used
  156. ...
  157. }
  158. {
  159. TODO1: This is temporary. It perhaps does not pose problem because only the worker takes this mutex. Fixing this will require changing the scheduler interface, so that the schedulers themselves take the scheduling lock, not the caller. Filter it out for now, so we can see other races more easily.
  160. Helgrind:LockOrder
  161. fun:mutex_lock_WRK
  162. fun:simple_worker_pull_task
  163. ...
  164. }
  165. {
  166. TODO1: This is temporary. It perhaps does not pose problem because only the worker takes this mutex. Fixing this will require changing the scheduler interface, so that the schedulers themselves take the scheduling lock, not the caller. Filter it out for now, so we can see other races more easily.
  167. Helgrind:LockOrder
  168. fun:mutex_lock_WRK
  169. fun:starpu_pthread_mutex_lock_sched
  170. fun:_starpu_sched_component_worker_lock_scheduling
  171. fun:simple_worker_pull_task
  172. ...
  173. }
  174. {
  175. TODO2: This is temporary. It perhaps does not pose problem because only the worker takes this mutex. Fixing this will require changing the scheduler interface, so that the schedulers themselves take the scheduling lock, not the caller. Filter it out for now, so we can see other races more easily.
  176. Helgrind:LockOrder
  177. fun:mutex_lock_WRK
  178. fun:_starpu_sched_component_lock_worker
  179. fun:simple_worker_pull_task
  180. ...
  181. }
  182. {
  183. TODO2: This is temporary. It perhaps does not pose problem because only the worker takes this mutex. Fixing this will require changing the scheduler interface, so that the schedulers themselves take the scheduling lock, not the caller. Filter it out for now, so we can see other races more easily.
  184. Helgrind:LockOrder
  185. fun:mutex_lock_WRK
  186. fun:_starpu_sched_component_lock_worker
  187. fun:_starpu_sched_component_worker_lock_scheduling
  188. fun:simple_worker_pull_task
  189. ...
  190. }