From 3e759f8c5f124a583d4414e8ca0fddab1fc58102 Mon Sep 17 00:00:00 2001 From: quintin Date: Thu, 2 Dec 2010 14:22:08 +0000 Subject: [PATCH] [simdag/cycle] delete the function acyclic_graph_detection because the function acyclic_graph_detail makes more things than acyclic_graph_detection and takes the same time if there is no cycle git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8896 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/simdag/private.h | 1 - src/simdag/sd_daxloader.c | 71 +-------------------------------------- src/simdag/sd_dotloader.c | 4 +-- 3 files changed, 3 insertions(+), 73 deletions(-) diff --git a/src/simdag/private.h b/src/simdag/private.h index 8c5aa0ca50..447802e0b1 100644 --- a/src/simdag/private.h +++ b/src/simdag/private.h @@ -128,7 +128,6 @@ void __SD_task_set_state(SD_task_t task, e_SD_task_state_t new_state); void __SD_task_really_run(SD_task_t task); int __SD_task_try_to_run(SD_task_t task); void __SD_task_just_done(SD_task_t task); -bool acyclic_graph_detection(xbt_dynar_t dag); bool acyclic_graph_detail(xbt_dynar_t dag); /* Functions to test if the task is in a given state. */ diff --git a/src/simdag/sd_daxloader.c b/src/simdag/sd_daxloader.c index c02baa58b3..abb9e5d698 100644 --- a/src/simdag/sd_daxloader.c +++ b/src/simdag/sd_daxloader.c @@ -243,75 +243,6 @@ bool acyclic_graph_detail(xbt_dynar_t dag){ return all_marked; } -bool acyclic_graph_detection(xbt_dynar_t dag){ - unsigned int count=0, count_current=0; - bool all_marked = true; - SD_task_t task = NULL, parent_task = NULL; - SD_dependency_t depbefore = NULL; - xbt_dynar_t next = NULL, current = xbt_dynar_new(sizeof(SD_task_t),NULL); - - xbt_dynar_foreach(dag,count,task){ - if(task->kind == SD_TASK_COMM_E2E) continue; - task->marked = 0; - if(xbt_dynar_length(task->tasks_after) == 0){ - xbt_dynar_push(current, &task); - } - } - task = NULL; - count = 0; - //test if something has to be done for the next iteration - while(xbt_dynar_length(current) != 0){ - next = xbt_dynar_new(sizeof(SD_task_t),NULL); - //test if the current iteration is done - count_current=0; - xbt_dynar_foreach(current,count_current,task){ - if (task == NULL) continue; - count = 0; - //push task in next - task->marked = 1; - count = 0; - xbt_dynar_foreach(task->tasks_before,count,depbefore){ - parent_task = depbefore->src; - if(parent_task->kind == SD_TASK_COMM_E2E){ - unsigned int j=0; - parent_task->marked = 1; - SD_task_t parent_task_2 = NULL; - xbt_dynar_foreach(parent_task->tasks_before,j,depbefore){ - parent_task_2 = depbefore->src; - if(children_are_marked(parent_task_2)) - xbt_dynar_push(next, &parent_task_2); - } - } else{ - if(children_are_marked(parent_task)) - xbt_dynar_push(next, &parent_task); - } - parent_task = NULL; - } - task = NULL; - count = 0; - } - xbt_dynar_free(¤t); - current = next; - next = NULL; - } - xbt_dynar_free(¤t); - current = NULL; - all_marked = true; - xbt_dynar_foreach(dag,count,task){ - if(task->kind == SD_TASK_COMM_E2E) continue; - //test if all tasks are marked - if(task->marked == 0){ - WARN1("the task %s is not marked",task->name); - all_marked = false; - break; - } - } - task = NULL; - if(!all_marked){ - VERB0("there is at least one cycle in your task graph"); - } - return all_marked; -} static YY_BUFFER_STATE input_buffer; @@ -447,7 +378,7 @@ xbt_dynar_t SD_daxload(const char *filename) } } - acyclic_graph_detection(result); + acyclic_graph_detail(result); return result; } diff --git a/src/simdag/sd_dotloader.c b/src/simdag/sd_dotloader.c index 2d675aa573..46aa9f55f6 100644 --- a/src/simdag/sd_dotloader.c +++ b/src/simdag/sd_dotloader.c @@ -141,7 +141,7 @@ xbt_dynar_t SD_dotload_with_sched(const char *filename){ xbt_dynar_free(&computer); } xbt_dict_free(&computers); - if(acyclic_graph_detection(result)) + if(acyclic_graph_detail(result)) return result; else WARN0("There is at least one cycle in the provided task graph"); @@ -234,7 +234,7 @@ xbt_dynar_t SD_dotload_FILE(FILE * in_file) /* Free previous copy of the files */ xbt_dict_free(&files); - if(acyclic_graph_detection(result)) + if(acyclic_graph_detail(result)) return result; acyclic_graph_detail(result); return NULL; -- 2.20.1