PIPS
task_parallelization.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/task_parallelization/task_parallelization-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef task_parallelization_header_included
7 #define task_parallelization_header_included
8 /* task_parallelization-local.h */
9 #include "task_private.h"
10 
11 #ifndef _newgen_graph_included
12 #include "dg.h"
13 
14 /* Instantiation of the dependence graph: */
17 #include "graph.h"
18 #endif
19 
20 typedef struct {
21  double tlevel;
22  double blevel;
23  double prio;
24  double task_time;
26  list data;
27  bool scheduled;
28  int order_sched;
29  int cluster;
30  int nbclusters;
31 }annotation;
32 
33 typedef struct {
34  double time;
35  list data;
36 }cluster;
37 
38 #define MPI_COMM_WORLD_STRING "MPI_COMM_WORLD"
39 
40 #define MPI_GENERATION_NBR_CLUSTER "MPI_NBR_CLUSTER"
41 #define MPI_GENERATION_PREFIX "MPI_DUPLICATE_VARIABLE_PREFIX"
42 //#define MPI_GENERATION_SUFFIX "MPI_DUPLICATE_VARIABLE_SUFFIX"
43 #define MPI_GENERATION_PRIVATE_VARIABLES_LIST "MPI_PRIVATE_VARIABLES_LIST"
44 #define MPI_GENERATION_PRIVATE_PARAMETER "MPI_PRIVATE_PARAMETER"
45 
46 #define COMMENT_VARIABLE_REPLICATION " Generated by Pass VARIABLE_REPLICATION\n"
47 #define COMMENT_COPY_VARIABLE " Generated by Pass COPY_VARIABLE\n"
48 #define COMMENT_MPI_CONVERSION " Generated by Pass MPI_CONVERSION\n"
49 /* cproto-generated files */
50 /* SDG.c */
51 extern int NBCLUSTERS;
52 extern int MEMORY_SIZE;
53 extern string INSTRUMENTED_FILE;
55 extern gen_array_t clusters;
56 extern _Bool statement_equal_p(statement /*s1*/, statement /*s2*/);
57 extern vertex statement_to_vertex(statement /*s*/, graph /*g*/);
58 extern graph partitioning_sdg(statement /*module_stmt*/);
59 extern void print_SDGs(statement /*stmt*/, graph /*tg*/, FILE */*ftg*/, gen_array_t /*annotations*/);
60 extern _Bool sequence_dependence_graph(char */*module_name*/);
61 /* cost_model.c */
62 extern _Bool costly_task(statement /*st*/);
63 extern double polynomial_to_numerical(Ppolynome /*poly_amount*/);
64 extern double size_of_regions(list /*l_data*/);
65 extern double edge_cost(statement /*s1*/, statement /*s2*/);
66 extern double t_level(vertex /*v*/, graph /*dg*/, gen_array_t /*annotations*/);
67 extern void top_level(graph /*dg*/, gen_array_t /*annotations*/);
68 extern void bottom_level(graph /*dg*/, gen_array_t /*annotations*/);
69 extern void priorities(gen_array_t /*annotations*/);
70 extern void initialization(graph /*dg*/, gen_array_t /*annotations*/);
71 extern void parse_instrumented_file(char */*file_name*/, graph /*dg*/, gen_array_t /*annotations*/);
72 /* BDSC.c */
73 extern void allocate_task_to_cluster(statement /*ready_st*/, int /*cl_p*/, int /*order*/);
74 extern int BDSC(sequence /*seq*/, int /*P*/, int /*M*/, int /*ordering*/);
75 extern int DSC(sequence /*seq*/, int /*ordering*/);
76 /* HBDSC.c */
77 extern graph kdg;
78 extern graph ddg;
79 extern statement return_st;
81 extern list topological_sort(statement /*stmt*/);
82 extern int hierarchical_schedule(statement /*stmt*/, int /*k*/, int /*P*/, int /*M*/, _Bool /*dsc_p*/);
83 extern _Bool hbdsc_parallelization(char */*module_name*/);
84 extern _Bool dsc_code_parallelization(char */*module_name*/);
85 /* instrumentation.c */
86 extern _Bool bdsc_code_instrumentation(char */*module_name*/);
87 /* spire_generation.c */
89 extern void cluster_stage_spire_generation(persistant_statement_to_cluster /*stmt_to_cluster*/, graph /*tg*/, statement /*stmt*/, int /*P*/);
90 extern _Bool spire_shared_unstructured_to_structured(char */*module_name*/);
91 extern _Bool spire_distributed_unstructured_to_structured(char */*module_name*/);
92 /* communication_generation.c */
93 extern statement make_com_loopbody(entity /*v*/, _Bool /*neighbor*/, list /*vl*/, int /*k*/);
94 extern statement region_to_com_nest(effect /*r*/, _Bool /*isRead*/, int /*k*/);
95 extern void communications_construction(graph /*tg*/, statement /*stmt*/, persistant_statement_to_cluster /*st_to_cluster*/, int /*kp*/);
96 /* openmp_generation.c */
97 extern _Bool openmp_task_generation(char */*module_name*/);
98 /* mpi_generation.c */
99 extern _Bool mpi_task_generation(char */*module_name*/);
100 /* task_mapping.c */
102 extern void reset_parallel_task_mapping(void);
106 extern void init_parallel_task_mapping(void);
107 extern void close_parallel_task_mapping(void);
108 extern void store_parallel_task_mapping(statement /*k*/, task /*v*/);
109 extern void update_parallel_task_mapping(statement /*k*/, task /*v*/);
114 extern void print_task(task /*t*/);
115 extern string task_to_string(task /*t*/, bool /*pretty_print*/);
116 extern bool task_mapping(const char */*module_name*/);
117 /* copy_value_of_write.c */
118 extern bool copy_value_of_write(const char */*module_name*/);
119 extern bool copy_value_of_write_with_cumulated_regions(const char */*module_name*/);
120 /* variable_replication.c */
121 extern bool variable_replication(const char */*module_name*/);
122 /* eliminate_original_variables.c */
123 extern bool eliminate_original_variables(const char */*module_name*/);
124 /* mpi_conversion.c */
125 extern bool mpi_conversion(const char */*module_name*/);
126 #endif /* task_parallelization_header_included */
static double task_time(statement s)
Definition: cost_model.c:134
struct _newgen_struct_data_ * data
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
_Bool spire_distributed_unstructured_to_structured(char *)
void cluster_stage_spire_generation(persistant_statement_to_cluster, graph, statement, int)
he main function
_Bool costly_task(statement)
cost_model.c
Definition: cost_model.c:52
bool copy_value_of_write(const char *)
copy_value_of_write.c
_Bool hbdsc_parallelization(char *)
he main function for performing the hierarchical scheduling (scheduled SDG) using BDSC and generating...
Definition: HBDSC.c:396
void parse_instrumented_file(char *, graph, gen_array_t)
Definition: cost_model.c:296
void store_parallel_task_mapping(statement, task)
void priorities(gen_array_t)
Definition: cost_model.c:253
void bottom_level(graph, gen_array_t)
Second parameter is the bottom level (latest start time) for each node.
Definition: cost_model.c:223
int MEMORY_SIZE
Definition: SDG.c:58
void communications_construction(graph, statement, persistant_statement_to_cluster, int)
bool mpi_conversion(const char *)
mpi_conversion.c
_Bool spire_shared_unstructured_to_structured(char *)
bool variable_replication(const char *)
variable_replication.c
double t_level(vertex, graph, gen_array_t)
First parameter is the top level (earliest start time) for each node.
Definition: cost_model.c:168
task load_parallel_task_mapping(statement)
graph partitioning_sdg(statement)
Definition: SDG.c:455
void error_reset_parallel_task_mapping(void)
bool bound_parallel_task_mapping_p(statement)
int hierarchical_schedule(statement, int, int, int, _Bool)
vertex statement_to_vertex(statement, graph)
Definition: SDG.c:131
_Bool mpi_task_generation(char *)
mpi_generation.c
void print_SDGs(statement, graph, FILE *, gen_array_t)
Definition: SDG.c:520
dg_vertex_label vertex_label
void top_level(graph, gen_array_t)
Definition: cost_model.c:211
int DSC(sequence, int)
Definition: BDSC.c:623
list topological_sort(statement)
Definition: HBDSC.c:192
list com_declarations_to_add
spire_generation.c
gen_array_t clusters
Definition: SDG.c:63
persistant_statement_to_cluster stmt_to_cluster
Definition: HBDSC.c:56
double polynomial_to_numerical(Ppolynome)
Definition: cost_model.c:93
graph kdg
HBDSC.c.
Definition: HBDSC.c:52
statement region_to_com_nest(effect, _Bool, int)
void allocate_task_to_cluster(statement, int, int)
BDSC.c.
Definition: BDSC.c:100
string task_to_string(task, bool)
Definition: task_mapping.c:84
string INSTRUMENTED_FILE
Definition: SDG.c:59
void store_or_update_parallel_task_mapping(statement, task)
_Bool bdsc_code_instrumentation(char *)
instrumentation.c
int NBCLUSTERS
cproto-generated files
Definition: SDG.c:57
dg_arc_label arc_label
Warning! Do not modify this file that is automatically generated!
void initialization(graph, gen_array_t)
Definition: cost_model.c:267
graph ddg
Definition: HBDSC.c:52
statement make_com_loopbody(entity, _Bool, list, int)
communication_generation.c
void print_task(task)
Pass: TASK_MAPPING Debug mode: MPI_GENERATION_DEBUG_LEVEL Resource generated:
Definition: task_mapping.c:73
void close_parallel_task_mapping(void)
void init_parallel_task_mapping(void)
_Bool sequence_dependence_graph(char *)
Definition: SDG.c:593
void set_parallel_task_mapping(statement_task)
int BDSC(sequence, int, int, int)
Definition: BDSC.c:535
double size_of_regions(list)
Definition: cost_model.c:115
bool parallel_task_mapping_undefined_p(void)
task_mapping.c
double edge_cost(statement, statement)
Definition: cost_model.c:147
bool copy_value_of_write_with_cumulated_regions(const char *)
PIPS pass.
_Bool dsc_code_parallelization(char *)
he main function for performing the hierarchical scheduling (scheduled SDG) using DSC and generating ...
Definition: HBDSC.c:473
task delete_parallel_task_mapping(statement)
void reset_parallel_task_mapping(void)
_Bool openmp_task_generation(char *)
openmp_generation.c
bool task_mapping(const char *)
PIPS pass.
Definition: task_mapping.c:430
statement_task get_parallel_task_mapping(void)
statement return_st
Definition: HBDSC.c:53
bool eliminate_original_variables(const char *)
eliminate_original_variables.c
_Bool statement_equal_p(statement, statement)
Definition: SDG.c:123
gen_array_t annotations
Global variables.
Definition: SDG.c:62
void update_parallel_task_mapping(statement, task)