diff --git a/ttg/ttg/device/task.h b/ttg/ttg/device/task.h index 476119886..a6b83eaf2 100644 --- a/ttg/ttg/device/task.h +++ b/ttg/ttg/device/task.h @@ -244,8 +244,7 @@ namespace ttg::device { } - template + template inline detail::send_t sendv(valueT &&value) { return sendv(i, std::forward(value)); } @@ -283,8 +282,7 @@ namespace ttg::device { } } - template + template inline void prepare_broadcast(const std::tuple &keylists, valueT &&value) { using key_t = typename broadcast_keylist_trait< std::tuple_element_t...>> diff --git a/ttg/ttg/parsec/ttg.h b/ttg/ttg/parsec/ttg.h index fd1f188f0..dfccb7d13 100644 --- a/ttg/ttg/parsec/ttg.h +++ b/ttg/ttg/parsec/ttg.h @@ -1510,7 +1510,7 @@ namespace ttg_parsec { PARSEC_OBJ_CONSTRUCT(gpu_task, parsec_list_item_t); gpu_task->ec = parsec_task; gpu_task->task_type = 0; // user task - gpu_task->last_data_check_epoch = 0; // used internally + gpu_task->last_data_check_epoch = std::numeric_limits::max(); // used internally gpu_task->pushout = 0; gpu_task->submit = &TT::device_static_submit; @@ -3840,6 +3840,7 @@ namespace ttg_parsec { task->tt->set_outputs_tls_ptr(old_output_tls_ptr); detail::parsec_ttg_caller = nullptr; } + dev_task.destroy(); // safe to destroy the coroutine now } #endif // TTG_HAVE_DEVICE /* the coroutine should have completed and we cannot access the promise anymore */