PIPS
|
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "boolean.h"
#include <stdbool.h>
#include <limits.h>
#include "genC.h"
#include "linear.h"
#include "ri.h"
#include "effects.h"
#include "database.h"
#include "misc.h"
#include "text.h"
#include "text-util.h"
#include "ri-util.h"
#include "effects-util.h"
#include "accel-util.h"
#include "effects-generic.h"
#include "effects-simple.h"
#include "pipsdbm.h"
#include "resources.h"
#include "control.h"
#include "conversion.h"
#include "properties.h"
#include "semantics.h"
#include "transformations.h"
#include "effects-convex.h"
#include "complexity_ri.h"
#include "complexity.h"
#include "dg.h"
#include "graph.h"
#include "ricedg.h"
#include "chains.h"
#include "task_parallelization.h"
Go to the source code of this file.
Data Structures | |
struct | min_start_time |
Global variables. More... | |
Typedefs | |
typedef dg_arc_label | arc_label |
Instantiation of the dependence graph: More... | |
typedef dg_vertex_label | vertex_label |
Functions | |
static bool | ready_node (statement st) |
static void | update_priority_values (statement ready_st) |
void | allocate_task_to_cluster (statement ready_st, int cl_p, int order) |
BDSC.c. More... | |
static void | move_task_to_cluster (statement ready_st, int cl_p) |
static bool | MCW (statement ready_st, int cl, int M) |
static min_start_time | tlevel_decrease (statement ready_st, int M) |
static bool | zeroing_multiple_edges (statement ready_st, int order, int M) |
static int | end_idle_clusters (statement ready_st, int nbclusters) |
pply the second priority : load balancing : length_cluster(c_i) < tlevel(ready_st) and forall node n_y in c_i scheduled(successors(n_y)) = true or successors(n_y) \subset successors(ready_st) More... | |
static int | min_start_time_cluster (int nbclusters) |
pply the third priority if bounded number of processors is exceeded start-time(ready_st) = min(length_cluster(c_i)) tlevel(ready_st) can be increased. More... | |
static double | max_start_time_cluster (int nbclusters) |
sed to compute the parallel task time of a task More... | |
static bool | DSRW (statement ready_st, statement unready_st, int order, int M) |
static statement | select_task_with_highest_priority (list tasks, statement ready) |
static gen_array_t | schedule_failsafe () |
static void | cancel_schedule (gen_array_t annotations_s, list stmts) |
static void | initialization_clusters (bool first_p) |
eset to zero for each new sequence to handle More... | |
static void | update_parallel_task (int ordering, int nbclusters) |
static int | find_cluster (statement ready_task, int nbclusters, int P, int M, int order, list stmts, gen_array_t annotations_s) |
int | BDSC (sequence seq, int P, int M, int ordering) |
int | DSC (sequence seq, int ordering) |
typedef dg_arc_label arc_label |
typedef dg_vertex_label vertex_label |
ready_st | eady_st |
cl_p | l_p |
order | rder |
Definition at line 100 of file BDSC.c.
References annotations, bound_persistant_statement_to_cluster_p(), annotation::cluster, clusters, annotation::data, cluster::data, annotation::edge_cost, extend_persistant_statement_to_cluster(), FOREACH, gen_array_addto(), gen_array_item(), gen_length(), graph_vertices, kdg, malloc(), annotation::order_sched, r_w_combinable_p(), regions_dup(), RegionsMustUnion(), annotation::scheduled, statement_equal_p(), statement_ordering, statement_to_vertex(), stmt_to_cluster, SUCCESSOR, successor_vertex, annotation::task_time, cluster::time, annotation::tlevel, update_persistant_statement_to_cluster(), update_priority_values(), VERTEX, vertex_successors, and vertex_to_statement().
Referenced by BDSC(), DSC(), DSRW(), find_cluster(), hierarchical_schedule(), and zeroing_multiple_edges().
canf instruction should be scheduled in the master cluster (by convention 0)
f(get_bool_property("BDSC_DISTRIBUTED_MEMORY")) zeroing_p = zeroing_multiple_edges(ready_task, order,M); function Not validated else
seq | eq |
ordering | rdering |
Definition at line 535 of file BDSC.c.
References allocate_task_to_cluster(), annotations, bottom_level(), call_function, annotation::cluster, CONS, declaration_statement_p(), DSRW(), ENTITY_FSCANF_P, ENTITY_ISOC99_FSCANF_P, ENTITY_ISOC99_SCANF_P, ENTITY_ISOC99_SSCANF_P, ENTITY_SCANF_P, ENTITY_SSCANF_P, f(), find_cluster(), FOREACH, gen_array_free(), gen_array_item(), gen_length(), gen_remove_once(), initialization_clusters(), kdg, min_start_time::min_tau, NIL, priorities(), ready_node(), schedule_failsafe(), select_task_with_highest_priority(), sequence_statements, STATEMENT, statement_call(), statement_call_p(), statement_ordering, statement_undefined, statement_undefined_p, tlevel_decrease(), top_level(), and update_parallel_task().
Referenced by hierarchical_schedule().
|
static |
Definition at line 471 of file BDSC.c.
References annotations, bound_persistant_statement_to_cluster_p(), annotation::cluster, annotation::edge_cost, FOREACH, gen_array_addto(), gen_array_item(), annotation::scheduled, STATEMENT, statement_ordering, stmt_to_cluster, and update_persistant_statement_to_cluster().
Referenced by find_cluster().
seq | eq |
ordering | rdering |
Definition at line 623 of file BDSC.c.
References allocate_task_to_cluster(), annotations, bottom_level(), annotation::cluster, clusters, CONS, cluster::data, DSRW(), FOREACH, gen_array_addto(), gen_array_free(), gen_array_item(), gen_length(), gen_remove_once(), get_bool_property(), kdg, malloc(), min_start_time::min_tau, NIL, priorities(), ready_node(), schedule_failsafe(), select_task_with_highest_priority(), sequence_statements, STATEMENT, statement_ordering, statement_undefined, statement_undefined_p, cluster::time, tlevel_decrease(), top_level(), update_parallel_task(), and zeroing_multiple_edges().
Referenced by hierarchical_schedule().
Definition at line 407 of file BDSC.c.
References allocate_task_to_cluster(), annotations, annotation::cluster, gen_array_item(), min_start_time::min_tau, min_start_time::min_tlevel, statement_ordering, statement_undefined, and tlevel_decrease().
Referenced by BDSC(), and DSC().
pply the second priority : load balancing : length_cluster(c_i) < tlevel(ready_st) and forall node n_y in c_i scheduled(successors(n_y)) = true or successors(n_y) \subset successors(ready_st)
Definition at line 328 of file BDSC.c.
References annotations, annotation::cluster, clusters, FOREACH, gen_array_item(), graph_vertices, kdg, annotation::scheduled, statement_equal_p(), statement_ordering, statement_to_vertex(), SUCCESSOR, successor_vertex, cluster::time, annotation::tlevel, VERTEX, vertex_successors, and vertex_to_statement().
Referenced by find_cluster().
|
static |
Definition at line 511 of file BDSC.c.
References allocate_task_to_cluster(), cancel_schedule(), end_idle_clusters(), fprintf(), MCW(), MEMORY_SIZE, and min_start_time_cluster().
Referenced by BDSC().
|
static |
eset to zero for each new sequence to handle
Definition at line 487 of file BDSC.c.
References clusters, cluster::data, gen_array_addto(), gen_array_item(), malloc(), NBCLUSTERS, NIL, and cluster::time.
Referenced by BDSC().
|
static |
sed to compute the parallel task time of a task
Definition at line 393 of file BDSC.c.
References clusters, gen_array_item(), max, and cluster::time.
Referenced by update_parallel_task().
Definition at line 163 of file BDSC.c.
References annotations, clusters, annotation::data, cluster::data, gen_array_item(), gen_length(), kdg, regions_dup(), RegionsMustUnion(), size_of_regions(), statement_ordering, statement_to_vertex(), vertex_successors, and w_w_combinable_p().
Referenced by find_cluster(), tlevel_decrease(), and zeroing_multiple_edges().
pply the third priority if bounded number of processors is exceeded start-time(ready_st) = min(length_cluster(c_i)) tlevel(ready_st) can be increased.
Definition at line 376 of file BDSC.c.
References clusters, gen_array_item(), min, and cluster::time.
Referenced by find_cluster().
Definition at line 142 of file BDSC.c.
References annotations, annotation::cluster, clusters, annotation::data, cluster::data, extend_persistant_statement_to_cluster(), gen_array_addto(), gen_array_item(), gen_length(), kdg, r_w_combinable_p(), regions_dup(), RegionsMustUnion(), statement_ordering, statement_to_vertex(), stmt_to_cluster, annotation::task_time, cluster::time, annotation::tlevel, update_priority_values(), and vertex_successors.
Referenced by zeroing_multiple_edges().
Definition at line 59 of file BDSC.c.
References annotations, FOREACH, gen_array_item(), graph_vertices, kdg, annotation::scheduled, statement_equal_p(), statement_ordering, SUCCESSOR, successor_vertex, VERTEX, vertex_successors, and vertex_to_statement().
Referenced by BDSC(), and DSC().
|
static |
Definition at line 451 of file BDSC.c.
References annotations, annotation::cluster, annotation::edge_cost, FOREACH, gen_array_addto(), gen_array_item(), gen_array_make(), gen_length(), graph_vertices, kdg, malloc(), annotation::scheduled, statement_ordering, SUCCESSOR, successor_vertex, VERTEX, vertex_successors, and vertex_to_statement().
Referenced by BDSC(), and DSC().
Definition at line 431 of file BDSC.c.
References annotations, FOREACH, gen_array_item(), max, annotation::prio, statement_ordering, statement_undefined, and statement_undefined_p.
Referenced by BDSC(), and DSC().
|
static |
dge_cost(parent1,ready_st);
Definition at line 175 of file BDSC.c.
References annotations, annotation::cluster, clusters, annotation::edge_cost, FOREACH, gen_array_item(), graph_vertices, kdg, MCW(), MEMORY_SIZE, min_start_time::min_tau, min_start_time::min_tlevel, s1, annotation::scheduled, statement_equal_p(), statement_ordering, statement_undefined, SUCCESSOR, successor_vertex, annotation::task_time, cluster::time, annotation::tlevel, VERTEX, vertex_successors, and vertex_to_statement().
Referenced by BDSC(), DSC(), and DSRW().
Definition at line 503 of file BDSC.c.
References annotations, annotation::data, gen_array_item(), max_start_time_cluster(), NIL, and annotation::task_time.
Referenced by BDSC(), and DSC().
|
static |
Definition at line 81 of file BDSC.c.
References annotations, annotation::blevel, FOREACH, gen_array_item(), kdg, annotation::prio, statement_ordering, statement_to_vertex(), SUCCESSOR, successor_vertex, t_level(), annotation::tlevel, vertex_successors, and vertex_to_statement().
Referenced by allocate_task_to_cluster(), and move_task_to_cluster().
Definition at line 225 of file BDSC.c.
References allocate_task_to_cluster(), annotations, array_size(), annotation::cluster, clusters, copy_statement(), annotation::edge_cost, FOREACH, gen_array_addto(), gen_array_free(), gen_array_item(), gen_array_make(), gen_array_nitems(), gen_length(), graph_vertices, kdg, malloc(), MCW(), MEMORY_SIZE, move_task_to_cluster(), statement_equal_p(), statement_ordering, statement_to_vertex(), SUCCESSOR, successor_vertex, sum(), annotation::task_time, cluster::time, annotation::tlevel, VERTEX, vertex_successors, and vertex_to_statement().
Referenced by DSC().