X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0c13871d73e933c1847faf8debea7b7745a3ff44..8498a654bd5379c957de389f3dbf4fc015e8b0b1:/src/simdag/sd_task.c diff --git a/src/simdag/sd_task.c b/src/simdag/sd_task.c index 3673944cd3..ba6486413f 100644 --- a/src/simdag/sd_task.c +++ b/src/simdag/sd_task.c @@ -451,6 +451,20 @@ double SD_task_get_amount(SD_task_t task) return task->amount; } +/** + * \brief Returns the alpha parameter of a SD_TASK_COMP_PAR_AMDAH task + * + * \param task a parallel task assuming Amdahl's law as speedup model + * \return the alpha parameter (serial part of a task in percent) for this task + */ +double SD_task_get_alpha(SD_task_t task) +{ + xbt_assert(SD_task_get_kind(task) == SD_TASK_COMP_PAR_AMDAHL, + "Alpha parameter is not defined for this kink of task"); + return task->alpha; +} + + /** * \brief Returns the remaining amount work to do till the completion of a task * @@ -504,11 +518,16 @@ void SD_task_dump(SD_task_t task) case SD_TASK_COMP_PAR_AMDAHL: XBT_INFO(" - kind: parallel computation following Amdahl's law"); break; + case SD_TASK_COMM_PAR_MXN_1D_BLOCK: + XBT_INFO(" - kind: MxN data redistribution assuming 1D block distribution"); + break; default: XBT_INFO(" - (unknown kind %d)", task->kind); } } XBT_INFO(" - amount: %.0f", SD_task_get_amount(task)); + if (task->kind == SD_TASK_COMP_PAR_AMDAHL) + XBT_INFO(" - alpha: %.2f", task->alpha); XBT_INFO(" - Dependencies to satisfy: %d", task->unsatisfied_dependencies); if (!xbt_dynar_is_empty(task->tasks_before)) { XBT_INFO(" - pre-dependencies:"); @@ -532,9 +551,11 @@ void SD_task_dotty(SD_task_t task, void *out) fprintf(out, " T%p [label=\"%.20s\"", task, task->name); switch (task->kind) { case SD_TASK_COMM_E2E: + case SD_TASK_COMM_PAR_MXN_1D_BLOCK: fprintf(out, ", shape=box"); break; case SD_TASK_COMP_SEQ: + case SD_TASK_COMP_PAR_AMDAHL: fprintf(out, ", shape=circle"); break; default: @@ -1477,13 +1498,17 @@ void SD_task_schedulev(SD_task_t task, int count, SD_task_t before = dep->src; if (before->kind == SD_TASK_COMM_PAR_MXN_1D_BLOCK){ if (!before->workstation_list){ - XBT_VERB("Sender side of Task %s is not scheduled yet. Fill the workstation list with receiver side", + XBT_VERB("Sender side of Task %s is not scheduled yet", SD_task_get_name(before)); before->workstation_list = xbt_new0(SD_workstation_t, count); before->workstation_nb = count; + XBT_VERB("Fill the workstation list with list of Task '%s'", + SD_task_get_name(task)); for (i=0;iworkstation_list[i] = task->workstation_list[i]; } else { + XBT_VERB("Build communication matrix for task '%s'", + SD_task_get_name(before)); int src_nb, dst_nb; double src_start, src_end, dst_start, dst_end; src_nb = before->workstation_nb; @@ -1538,10 +1563,12 @@ void SD_task_schedulev(SD_task_t task, int count, SD_task_t after = dep->dst; if (after->kind == SD_TASK_COMM_PAR_MXN_1D_BLOCK){ if (!after->workstation_list){ - XBT_VERB("Receiver side of Task %s is not scheduled yet. Fill the workstation list with sender side", + XBT_VERB("Receiver side of Task '%s' is not scheduled yet", SD_task_get_name(after)); after->workstation_list = xbt_new0(SD_workstation_t, count); after->workstation_nb = count; + XBT_VERB("Fill the workstation list with list of Task '%s'", + SD_task_get_name(task)); for (i=0;iworkstation_list[i] = task->workstation_list[i]; } else {