26 #include <common/config.h> 27 #include <core/workers.h> 29 #if defined(STARPU_USE_AYUDAME1) 32 # ifndef AYU_RT_STARPU 33 # define AYU_RT_STARPU 4 35 # define STARPU_AYU_EVENT AYU_event 37 # define STARPU_AYU_PREINIT() \ 40 enum ayu_runtime_t ayu_rt = AYU_RT_STARPU; \ 41 AYU_event(AYU_PREINIT, 0, (void*) &ayu_rt); \ 44 # define STARPU_AYU_INIT() \ 47 AYU_event(AYU_INIT, 0, NULL); \ 50 # define STARPU_AYU_FINISH() \ 53 AYU_event(AYU_FINISH, 0, NULL); \ 56 # define STARPU_AYU_ADDDEPENDENCY(previous, handle, job_id) \ 59 uintptr_t __AYU_data[3] = { (previous), (uintptr_t) (handle), (uintptr_t) (handle) }; \ 60 AYU_event(AYU_ADDDEPENDENCY, (job_id), __AYU_data); \ 63 # define STARPU_AYU_REMOVETASK(job_id) \ 66 AYU_event(AYU_REMOVETASK, (job_id), NULL); \ 69 # define STARPU_AYU_ADDTASK(job_id, task) \ 72 int64_t __AYU_data[2] = { \ 73 ((struct starpu_task *)(task))!=NULL?_starpu_ayudame_get_func_id(((struct starpu_task *)(task))->cl):0, \ 74 ((struct starpu_task *)(task))!=NULL?((struct starpu_task *)(task))->priority-STARPU_MIN_PRIO:0 \ 76 AYU_event(AYU_ADDTASK, (job_id), __AYU_data); \ 79 # define STARPU_AYU_PRERUNTASK(job_id, workerid) \ 82 intptr_t __id = (workerid); \ 83 AYU_event(AYU_PRERUNTASK, (job_id), &__id); \ 86 # define STARPU_AYU_RUNTASK(job_id) \ 89 AYU_event(AYU_RUNTASK, (job_id), NULL); \ 92 # define STARPU_AYU_POSTRUNTASK(job_id) \ 95 AYU_event(AYU_POSTRUNTASK, (job_id), NULL); \ 98 # define STARPU_AYU_ADDTOTASKQUEUE(job_id, worker_id) \ 101 intptr_t __id = (worker_id); \ 102 AYU_event(AYU_ADDTASKTOQUEUE, (job_id), &__id); \ 105 # define STARPU_AYU_BARRIER() \ 108 AYU_event(AYU_BARRIER, 0, NULL); \ 111 #elif defined(STARPU_USE_AYUDAME2) 113 # include <ayudame.h> 114 # define STARPU_AYU_EVENT ayu_event 116 # define STARPU_AYU_PREINIT() 118 # define STARPU_AYU_INIT() 120 # define STARPU_AYU_FINISH() \ 122 ayu_client_id_t __cli_id = get_client_id(AYU_CLIENT_STARPU); \ 123 ayu_event_data_t __data; \ 124 __data.common.client_id = __cli_id; \ 125 ayu_event(AYU_FINISH, __data); \ 128 # define STARPU_AYU_ADDDEPENDENCY(previous, handle, job_id) \ 131 ayu_client_id_t __cli_id = get_client_id(AYU_CLIENT_STARPU); \ 132 ayu_event_data_t __data; \ 133 uint64_t __dep_id=0; \ 134 __dep_id |= (previous) << 0; \ 135 __dep_id |= (job_id) << 24; \ 136 __dep_id |= (uintptr_t) (handle) << 48; \ 137 __data.common.client_id = __cli_id; \ 138 __data.add_dependency.dependency_id = __dep_id; \ 139 __data.add_dependency.from_id=(previous); \ 140 __data.add_dependency.to_id=(job_id); \ 141 __data.add_dependency.dependency_label = "dep"; \ 142 ayu_event(AYU_ADDDEPENDENCY, __data); \ 143 ayu_wipe_data(&__data); \ 146 snprintf(__buf, sizeof(__buf), "%llu", (unsigned long long)(uintptr_t) (handle)); \ 147 __data.common.client_id = __cli_id; \ 148 __data.set_property.property_owner_id = __dep_id; \ 149 __data.set_property.key = "dep_address_value"; \ 150 __data.set_property.value = __buf; \ 151 ayu_event(AYU_SETPROPERTY, __data); \ 152 ayu_wipe_data(&__data); \ 155 # define STARPU_AYU_REMOVETASK(job_id) \ 158 ayu_client_id_t __cli_id = get_client_id(AYU_CLIENT_STARPU); \ 159 ayu_event_data_t __data; \ 160 __data.common.client_id = __cli_id; \ 161 __data.set_property.property_owner_id = (job_id); \ 162 __data.set_property.key = "state"; \ 163 __data.set_property.value = "finished"; \ 164 ayu_event(AYU_SETPROPERTY, __data); \ 165 ayu_wipe_data(&__data); \ 168 # define STARPU_AYU_ADDTASK(job_id, task) \ 171 ayu_client_id_t __cli_id = get_client_id(AYU_CLIENT_STARPU); \ 172 ayu_event_data_t __data; \ 173 __data.common.client_id = __cli_id; \ 174 __data.add_task.task_id = (job_id); \ 175 __data.add_task.scope_id = 0; \ 176 __data.add_task.task_label = "task"; \ 177 ayu_event(AYU_ADDTASK, __data); \ 178 ayu_wipe_data(&__data); \ 180 if ((task) != NULL) \ 183 snprintf(__buf, sizeof(__buf), "%d", ((struct starpu_task *)(task))->priority); \ 184 __data.common.client_id = __cli_id; \ 185 __data.set_property.property_owner_id = (job_id); \ 186 __data.set_property.key = "priority"; \ 187 __data.set_property.value = __buf; \ 188 ayu_event(AYU_SETPROPERTY, __data); \ 189 ayu_wipe_data(&__data); \ 191 const char *__name = ((struct starpu_task *)(task))->name != NULL?((struct starpu_task *)(task))->name: \ 192 ((struct starpu_task *)(task))->cl->name != NULL?((struct starpu_task *)(task))->cl->name:"<no_name>"; \ 193 __data.common.client_id = __cli_id; \ 194 __data.set_property.property_owner_id = (job_id); \ 195 __data.set_property.key = "function_name"; \ 196 __data.set_property.value = __name; \ 197 ayu_event(AYU_SETPROPERTY, __data); \ 198 ayu_wipe_data(&__data); \ 202 # define STARPU_AYU_PRERUNTASK(job_id, workerid) \ 205 ayu_client_id_t __cli_id = get_client_id(AYU_CLIENT_STARPU); \ 206 ayu_event_data_t __data; \ 207 __data.common.client_id = __cli_id; \ 208 __data.set_property.property_owner_id = (job_id); \ 209 __data.set_property.key = "state"; \ 210 __data.set_property.value = "running"; \ 211 ayu_event(AYU_SETPROPERTY, __data); \ 212 ayu_wipe_data(&__data); \ 215 snprintf(__buf, sizeof(__buf), "%d", (workerid)); \ 216 __data.common.client_id = __cli_id; \ 217 __data.set_property.property_owner_id = (job_id); \ 218 __data.set_property.key = "worker"; \ 219 __data.set_property.value = __buf; \ 220 ayu_event(AYU_SETPROPERTY, __data); \ 221 ayu_wipe_data(&__data); \ 224 # define STARPU_AYU_RUNTASK(job_id) \ 226 ayu_client_id_t __cli_id = get_client_id(AYU_CLIENT_STARPU); \ 227 ayu_event_data_t __data; \ 228 __data.common.client_id = __cli_id; \ 229 __data.set_property.property_owner_id = (job_id); \ 230 __data.set_property.key = "state"; \ 231 __data.set_property.value = "running"; \ 232 ayu_event(AYU_SETPROPERTY, __data); \ 233 ayu_wipe_data(&__data); \ 236 # define STARPU_AYU_POSTRUNTASK(job_id) \ 240 ayu_client_id_t __cli_id = get_client_id(AYU_CLIENT_STARPU); \ 241 ayu_event_data_t __data; \ 242 __data.common.client_id = __cli_id; \ 243 __data.set_property.property_owner_id = (job_id); \ 244 __data.set_property.key = "state"; \ 245 __data.set_property.value = "finished"; \ 246 ayu_event(AYU_SETPROPERTY, __data); \ 247 ayu_wipe_data(&__data); \ 250 # define STARPU_AYU_ADDTOTASKQUEUE(job_id, worker_id) \ 253 ayu_client_id_t __cli_id = get_client_id(AYU_CLIENT_STARPU); \ 254 ayu_event_data_t __data; \ 255 __data.common.client_id = __cli_id; \ 256 __data.set_property.property_owner_id = (job_id); \ 257 __data.set_property.key = "state"; \ 258 __data.set_property.value = "queued"; \ 259 ayu_event(AYU_SETPROPERTY, __data); \ 260 ayu_wipe_data(&__data); \ 263 snprintf(__buf, sizeof(__buf), "%d", (int)(worker_id)); \ 264 __data.common.client_id = __cli_id; \ 265 __data.set_property.property_owner_id = (job_id); \ 266 __data.set_property.key = "worker"; \ 267 __data.set_property.value = __buf; \ 268 ayu_event(AYU_SETPROPERTY, __data); \ 269 ayu_wipe_data(&__data); \ 272 # define STARPU_AYU_BARRIER() \ 278 # define STARPU_AYU_EVENT (0) 279 # define STARPU_AYU_PREINIT() 280 # define STARPU_AYU_INIT() 281 # define STARPU_AYU_FINISH() 282 # define STARPU_AYU_ADDDEPENDENCY(previous, handle, next_job) 283 # define STARPU_AYU_REMOVETASK(job_id) 284 # define STARPU_AYU_ADDTASK(job_id, task) 285 # define STARPU_AYU_PRERUNTASK(job_id, workerid) 286 # define STARPU_AYU_RUNTASK(job_id) 287 # define STARPU_AYU_POSTRUNTASK(job_id) 288 # define STARPU_AYU_ADDTOTASKQUEUE(job_id, worker_id) 289 # define STARPU_AYU_BARRIER() 305 #if defined(STARPU_USE_AYUDAME1) 307 int64_t _starpu_ayudame_get_func_id(
struct starpu_codelet *cl);
310 void _starpu_watchdog_init(
void);
311 void _starpu_watchdog_shutdown(
void);
313 #endif // __DEBUG_H__ void _starpu_open_debug_logfile(void)
void _starpu_close_debug_logfile(void)
void _starpu_print_to_logfile(const char *format,...) STARPU_ATTRIBUTE_FORMAT(printf