PIPS
|
Go to the source code of this file.
Macros | |
#define | HPFC_PACKAGE "HPFC-PACKAGE" |
Warning! Do not modify this file that is automatically generated! More... | |
Variables | |
bool(* | dynamic_entity_p )(entity) |
as expected, true if entity e is dynamic. More... | |
entity | host_module |
compiler.c More... | |
entity | node_module |
#define HPFC_PACKAGE "HPFC-PACKAGE" |
Warning! Do not modify this file that is automatically generated!
Modify src/Libs/hpfc/hpfc-local.h instead, to add your own modifications. header file built by cproto hpfc-local.h local definitions
void add_a_common | ( | entity | c | ) |
HPFC module by Fabien COELHO.
Definition at line 48 of file hpfc.c.
References gen_once().
Referenced by init_host_and_node_entities().
void add_a_dynamic | ( | entity | c | ) |
local primary dynamics
Definition at line 99 of file directives.c.
References gen_once().
Referenced by hpfc_translate_call_with_distributed_args(), and new_dynamic().
void add_a_fake_function | ( | entity | f | ) |
Definition at line 88 of file hpfc.c.
References f(), gen_once(), and the_fakes_object.
Referenced by handle_fake_directive(), and new_fake_function().
void add_a_pure | ( | entity | f | ) |
Definition at line 62 of file hpfc.c.
References f(), and gen_once().
Referenced by handle_pure_directive(), and new_pure_function().
void add_an_io_function | ( | entity | f | ) |
Definition at line 74 of file hpfc.c.
References f(), and gen_once().
Referenced by handle_io_directive(), and new_io_function().
Definition at line 904 of file dynamic.c.
References entities_list, gen_once(), and load_primary_entity().
Referenced by initial_alignment().
caution, is initial list is destroyed.
else
var | ar |
val | al |
Definition at line 110 of file message-utils.c.
References CAR, CONS, ENDP, gen_free_list(), gen_nconc(), int_to_value, intptr_t, MAPL, NIL, pips_debug, PVECTOR, vect_add_elem(), vect_new(), vect_size(), and VECTOR.
Referenced by atomize_one_message().
this is for the main.
also subs CALL RETURN -> CALL HPFC {HOST|NONE} END...
phs | hs |
pns | ns |
Definition at line 364 of file run-time.c.
References CONS, copy_statement(), entity_intrinsic(), entity_undefined, HOST_END, hpfc_make_call_statement(), hpfc_name_to_entity(), make_block_statement(), NIL, NODE_END, ret, st_init_host, st_init_node, STATEMENT, statement_label, sub_ret_label, and substitute_return().
Referenced by compile_module().
variables to be declared
vars | ars |
Definition at line 121 of file hpfc.c.
References CONS, copy_renaming(), gen_copy_seq(), make_remapping(), and REMAPPING.
Referenced by generate_hpf_remapping_file().
void add_remapping_as_used | ( | renaming | x | ) |
Definition at line 135 of file hpfc.c.
References ENTITY, gen_once(), MAP, pips_assert, REMAPPING, remapping_referenced, remapping_renaming, remapping_undefined, remapping_undefined_p, renaming_new, renaming_old, src, and x.
Referenced by remapping_compile().
first time
else
Definition at line 51 of file message-utils.c.
References assert, CAR, CONS, CONSP, ENDP, gen_nconc(), LIST, MAPL, NIL, and RANGE.
Referenced by atomize_one_message().
void AddCommonToHostAndNodeModules | ( | entity | common | ) |
common | ommon |
Definition at line 371 of file hpfc-util.c.
References AddCommonToModule(), host_module, HOST_NAME, node_module, NODE_NAME, store_new_host_variable(), and store_new_node_variable().
Referenced by init_host_and_node_entities().
void AddEntityToHostAndNodeModules | ( | entity | e | ) |
AddEntityToHostAndNodeModules.
added because of some entity errors.
Definition at line 298 of file hpfc-util.c.
References AddEntityToDeclarations(), AddEntityToModule(), array_distributed_p(), bound_new_host_p(), bound_new_node_p(), entity_undefined, host_module, load_new_host(), load_new_node(), node_module, store_new_host(), store_new_host_variable(), store_new_node(), and store_new_node_variable().
Referenced by generate_parallel_body(), generate_read_of_ref_for_all(), generate_read_of_ref_for_computer(), generate_update_distributed_value_from_host(), and init_host_and_node_entities().
lsyn | syn |
Definition at line 188 of file compiler-util.c.
References CONS, gen_free_list(), is_in_syntax_list(), MAP, reference_variable, SYNTAX, and syntax_reference.
Referenced by hpf_compile_parallel_body(), and lIndicesOfRef().
computes the shift vector that links the two references, true if every thing is ok, i.e.
the vector is ok for the distributed dimensions... The vector considered here is just a list of integers. conditions: same template
default value, used in the shift case !
default value, used in the const case !
replication, say it is not aligned
replicated reference...
a(i) -> t(i,1), b(i,j)->t(i,j), should detect do i a(i) = b(i,1) as aligned...
??? this could be managed later in this function...
should be ok, even if a delta is induced, if it stays on the same processor along this dimension. The case should also be managed downward, when playing with local updates. ??? maybe there is also a consequence on the send/receive symetry, in order to put the message where it should be...
it is checked later whether the data are on the same processor or not.
now we have everything to check whether it is aligned... and to compute the shift necessary to the overlap analysis.
something is true!
just check whether aligned or not
even in the constant case ! not aligned
aligned... ??? bug if not 1: later on, because decl shift
4 cases study with bconst and bshift, plus the rates
what should be the relevent information(s) ??? not only d, but shift2 and t2 may be usefull either ??? what about rates!=1 ? decl shift problem added.
say not aligned...
??? decl shift problem may occur here as well
??? I should do something with blcnst2?
well, say not aligned, but one to many or many to one communications may be used...
ith dimension of e2 is not distributed
may be used to generate RSDs
else the local constant should be detected, for onde24...
r1 | 1 |
r2 | 2 |
plvect | lvect |
plkind | lkind |
Definition at line 190 of file align-checker.c.
References affine_expression_of_loop_index_p(), align_template, aligned_constant, aligned_shift, aligned_star, alignment_arraydim, alignment_constant, alignment_rate, alignment_templatedim, alignment_undefined, CAR, conformant_templates_p(), CONS, DELTAV, entity_name, EXPRESSION, expression_normalized, FindArrayDimAlignmentOfArray, FindTemplateDimAlignmentOfArray, fprintf(), gen_length(), gen_nconc(), gen_nth(), hpfc_integer_constant_expression_p(), HpfcExpressionToInt(), ifdebug, INT, int_to_value, ith_dim_distributed_p(), load_hpf_alignment(), local_affine, local_constant, local_form_cst, local_integer_constant_expression(), local_shift, local_star, NIL, normalized_linear, not_aligned, NumberOfDimension(), ok, pips_debug, POP, print_reference(), PVECTOR, reference_indices, reference_variable, shift_expression_of_loop_index_p(), TCST, TEMPLATEV, TSHIFTV, VALUE_ONE, vect_add(), vect_make(), vect_new(), VECTEUR_NUL, and VECTOR.
Referenced by Overlap_Analysis().
bool alignments_compatible_p(entity e1, int dim1, entity e2, int dim2)
what: whether e1 and e2 dimensions dim1 and dim2 are aligned. how: basic low level comparison input: entities and dimension numbers output: the bool result side effects:
e1 | 1 |
dim1 | im1 |
e2 | 2 |
dim2 | im2 |
Definition at line 678 of file hpfc-util.c.
References get_alignment().
Referenced by references_aligned_p().
what: returns the list of alive arrays for statement s and template t.
how: uses the alive_synonym, and computes the defaults. input: statement s and template t which are of interest. output: a list of entities which is allocated. side effects: none. of entities
of entities
to tag seen primaries.
??? well, it is not necessarily initialized, I guess...
first the alive list is scanned.
second the defaults are looked for. namely the primary entities.
Definition at line 1504 of file dynamic.c.
References align_template, array, CONS, DEBUG_ELST, entities_list, ENTITY, entity_name, entity_template_p(), gen_free_list(), gen_in_list_p(), list_of_distributed_arrays(), load_hpf_alignment(), load_primary_entity(), make_entities(), MAP, NIL, pips_assert, pips_debug, primary_entity_p, and safe_load_primary_entity().
Referenced by one_distribute_directive().
module | odule |
array | rray |
upper | pper |
dim | im |
Definition at line 499 of file run-time.c.
References array, bound_parameter_name(), find_or_create_typed_entity(), free(), is_basic_int, LOWER, module, module_local_name(), and UPPER.
Referenced by create_bound_entity().
this dimension shouldn't be used, so I put there whatever I want... ??? mouais, the information is in the vector, I think.
??? should check that it is ok
lkref | kref |
lvref | vref |
Definition at line 569 of file message-utils.c.
References access, access_tag, aligned_affine, aligned_constant, aligned_shift, array, CAR, CONS, copy_expression(), DIMENSION, dimension_lower, dimension_upper, entity_name, entity_type, EXPRESSION, expression_integer_constant_p(), expression_normalized, expression_undefined, gen_nconc(), HpfcExpressionToInt(), INT, int_to_expression(), local_affine, local_constant, local_form_cst, local_shift, loop_index_to_range(), make_range(), NIL, normalized_linear, pips_debug, pips_internal_error, POP, PVECTOR, RANGE, range_increment, range_lower, range_upper, reference_indices, reference_variable, tc, TCST, type_variable, val_of, Value_to_expression(), VALUE_TO_INT, var_of, variable_dimensions, vect_coeff(), and vect_del_var().
Referenced by loop_nest_guard().
Referenced by add_bound_arguments(), AddEntityToHostAndNodeModules(), caller_list_of_bounds(), check_for_similarity(), clean_distributed_io_system(), compile_reduction(), DistArraysEffects(), drop_distributed_arguments(), entity_to_hpf_align_constraints(), entity_to_new_declaration(), expression_simple_nondist_p(), FindRefToDistArray_syntax_rewrite(), FindRefToDistArrayInStatement_call_filter(), generate_c1_alpha(), generate_c1_beta(), generate_compute_local_indices(), generate_copy_loop_nest(), generate_get_value_locally(), generate_io_collect_or_update(), generate_io_system(), generate_read_of_ref_for_all(), generate_read_of_ref_for_computer(), generate_receive_from_computer(), generate_send_to_computer(), generate_shared_io_system(), generate_system_for_distributed_variable(), generate_update_distributed_value_from_host(), generate_update_private_value_from_host(), get_alignment(), get_ith_dim_new_declaration(), hpf_compile_call(), hpfc_call_with_distributed_args_p(), hpfc_check_for_similarities(), hpfc_compute_align_constraints(), hpfc_compute_entity_to_new_declaration(), hpfc_compute_unicity_constraints(), hpfc_decision(), hpfc_translate_call_with_distributed_args(), initial_alignment(), io_efficient_compile(), loop_flt(), lUpdateExpr_but_distributed(), new_declaration_tag(), NewDeclarationOfDistributedArray(), one_align_directive(), one_distribute_directive(), put_variables_in_ordered_lists(), references_aligned_p(), replicated_p(), STATIC_LIST_OF_HPF_OBJECTS(), store_a_new_declaration(), subarray_shift_assignment_p(), and update_overlaps_in_caller().
conformant processors ??? could assume that P(1:1,1:n) is conformant to P'(1:n)?
considering ith dim of proc
conformant distributions
if the size is 1, whatever the distribution it is ok!
conformant alignments for that pe dim !!! the HPF mapping "semantics" insure that the corresponding dimension is distributed!
a1 | 1 |
a2 | 2 |
Definition at line 578 of file dynamic.c.
References align_alignment, align_template, conformant_entities_p(), distribute_distribution, distribute_processors, entity_name, FindAlignmentOfTemplateDim(), FindDistributionOfProcessorDim(), load_hpf_alignment(), load_hpf_distribution(), load_primary_entity(), NumberOfDimension(), pips_assert, pips_debug, RET, same_alignment_p(), same_distribution_p(), and SizeOfIthDimension().
Referenced by check_for_similarity().
of expressions
of expression
interleave both lists (just for fun:-)
array | rray |
Definition at line 539 of file run-time.c.
References array, array_bounds_list(), CDR, and NIL.
Referenced by compile_reduction(), generate_subarray_shift(), and st_generate_packing().
scratched
replication
non distributed dimension, so not used...
array | rray |
lra | ra |
Definition at line 426 of file message-utils.c.
References align_alignment, align_template, alignment_arraydim, alignment_constant, alignment_rate, alignment_undefined_p, array, CONS, copy_expression(), dimension_lower, dimension_upper, expression_undefined, expression_undefined_p, FindAlignmentOfTemplateDim(), FindIthDimension(), gen_nconc(), gen_nth(), HpfcExpressionToInt(), int_to_expression(), load_hpf_alignment(), make_range(), NIL, NumberOfDimension(), RANGE, range_increment, range_lower, and range_upper.
Referenced by loop_nest_guard(), and one_message_guards_and_neighbour().
entity array_synonym_aligned_as(array, a) entity array; align a;
what: finds or creates a new entity aligned as needed. input: an array (which must be dynamic) and an align output: returns an array aligned as specified by align a side effects:
the one found is returned
else no compatible array does exist, so one must be created
array | rray |
Definition at line 449 of file dynamic.c.
References array, entities_list, ENTITY, entity_name, free_align(), ifdebug, load_dynamic_hpf(), load_hpf_alignment(), MAP, new_synonym_array(), pips_debug, print_align(), and same_align_p().
Referenced by hpfc_translate_call_with_distributed_args(), one_align_directive(), and one_distribute_directive().
distributed && (nd==is_hpf_newdecl_none)) ? ??? the case is not handled later on
array | rray |
Definition at line 44 of file o-analysis.c.
References array, is_hpf_newdecl_delta, is_hpf_newdecl_gamma, new_declaration_tag(), and NumberOfDimension().
Referenced by message_manageable_p(), Overlap_Analysis(), and subarray_shift_assignment_p().
Referenced by root_statement_remapping_inits(), safe_load_primary_entity(), and set_entity_as_dynamic().
Referenced by one_align_directive(), and one_distribute_directive().
Referenced by handle_reduction_directive(), and hpf_compiler().
Referenced by add_declaration_to_host_and_link(), AddEntityToHostAndNodeModules(), debug_host_node_variables(), io_efficient_compile(), NewVariableForModule(), and update_object_for_module().
Referenced by AddEntityToHostAndNodeModules(), debug_host_node_variables(), make_host_and_node_modules(), NewDeclarationOfDistributedArray(), NewVariableForModule(), set_similar_mappings_for_updates(), update_object_for_module(), and update_overlaps_in_caller().
Referenced by create_overlaps(), get_overlap(), and set_overlap().
returns a name for the bound of the declaration of array array, side side and dimension dim.
array | rray |
side | ide |
dim | im |
Definition at line 488 of file run-time.c.
References array, concatenate(), entity_local_name(), hpfc_main_entity_name(), int2a(), and strdup().
Referenced by argument_bound_entity(), create_parameters_h(), and hpfc_array_bound().
Referenced by check_for_similarity(), create_parameters_h(), and set_similar_mappings_for_updates().
Definition at line 87 of file special_cases.c.
References call_function, and hpfc_entity_reduction_p().
Referenced by compile_reduction(), and hpf_compile_call().
ps | s |
plrm | lrm |
pltry | ltry |
Definition at line 360 of file io-compile.c.
References base_rm, build_sc_nredund_2pass(), remove_variables_from_system(), remove_variables_if_possible(), and sc_creer_base().
Referenced by clean_distributed_io_system(), and hpf_remapping().
void close_data_status | ( | void | ) |
Definition at line 339 of file declarations.c.
References close_hpf_alignment(), close_hpf_distribution(), and free_hpf_object_lists().
void close_dynamic_hpf | ( | void | ) |
void close_dynamic_locals | ( | void | ) |
can't close it directly...
Definition at line 817 of file dynamic.c.
References control_predecessors, control_statement, control_successors, CONTROLMAP_MAP, gen_free_list(), NIL, statement_undefined, and what_stat_debug.
Referenced by handle_hpf_directives().
void close_dynamic_status | ( | void | ) |
Definition at line 117 of file dynamic.c.
References close_dynamic_hpf(), close_maybeuseful_mappings(), close_primary_entity(), close_renamings(), and close_similar_mapping().
void close_entity_status | ( | void | ) |
Definition at line 118 of file host_node_entities.c.
References close_new_host(), close_new_node(), close_old_host(), and close_old_node().
void close_hpf_alignment | ( | void | ) |
void close_hpf_distribution | ( | void | ) |
void close_hpf_number | ( | void | ) |
void close_hpf_number_status | ( | void | ) |
Definition at line 157 of file declarations.c.
References close_hpf_number(), and init_currents().
void close_hpf_reductions | ( | void | ) |
void close_maybeuseful_mappings | ( | void | ) |
void close_new_host | ( | void | ) |
void close_new_node | ( | void | ) |
void close_old_host | ( | void | ) |
void close_old_node | ( | void | ) |
void close_overlap_status | ( | void | ) |
void close_primary_entity | ( | void | ) |
void close_renamings | ( | void | ) |
void close_similar_mapping | ( | void | ) |
void close_the_dynamics | ( | void | ) |
void compile_a_pure_function | ( | entity | module | ) |
simply copied for both host and node...
module | odule |
Definition at line 493 of file compile.c.
References BOTH_SUFFIX, concatenate(), db_get_current_workspace_directory(), db_get_file_resource, DB_PUT_FILE_RESOURCE, entity_name, file_name, free(), module, module_local_name(), NO_FILE, pips_debug, prefix, safe_copy(), src, and strdup().
Referenced by hpfc_compile().
void compile_a_special_io_function | ( | entity | module | ) |
just copied for the host
module | odule |
Definition at line 469 of file compile.c.
References concatenate(), db_get_current_workspace_directory(), db_get_file_resource, DB_PUT_FILE_RESOURCE, file_name, free(), HOST_SUFFIX, module, module_local_name(), NO_FILE, prefix, safe_copy(), src, and strdup().
Referenced by hpfc_compile().
of statement
of statement
lr | r |
prolog | rolog |
host | ost |
Definition at line 347 of file special_cases.c.
References compile_one_reduction(), CONS, HPFC_REDUCTIONS, MAP, NIL, and STATEMENT.
Referenced by hpf_compiler().
bool compile_reduction(initial, phost, pnode)
true is the compiler succeeded in compiling the reduction that way. ??? many conditions are not yet checked...
initial | nitial |
phost | host |
pnode | node |
Definition at line 148 of file special_cases.c.
References array, array_distributed_p(), array_lower_upper_bounds_list(), call_arguments, call_function, call_reduction_p(), CAR, CDR, CONS, copy_expression(), ENTITY_ASSIGN_P, entity_name, entity_to_expression(), EXPRESSION, expression_syntax, gen_length(), gen_nconc(), instruction_call, instruction_call_p, int_to_expression(), t_reduction::kind, load_hpf_number(), make_assign_statement(), make_call_expression(), make_reduction_function(), NIL, pips_assert, pips_debug, reduction_parameters(), ref, reference_variable, statement_instruction, syntax_call, syntax_call_p, syntax_reference, and syntax_reference_p.
Referenced by hpf_compile_call().
range complementary_range(array, dim, r)
just to avoid a gcc warning
array | rray |
dim | im |
Definition at line 141 of file message-utils.c.
References array, assert, dimension_lower, dimension_upper, FindIthDimension(), HpfcExpressionToInt(), int_to_expression(), load_new_node(), make_range(), pips_internal_error, range_increment, range_lower, range_undefined, and range_upper.
Referenced by atomize_one_message().
Psysteme compute_entity_to_constraints(ent, suffix, prefix) entity ent: variable the constraints of which are computed strings suffix and prefix: to be used in the dummy variables created.
DECLARATION CONSTRAINTS GENERATION
computes the constraints due to the declarations. ! usefull
system may be empty for scalars ???
now the dummy is to be used to generate two inequalities: -dummy + lower <= 0 and dummy - upper <= 0
ent | nt |
suffix | uffix |
prefix | refix |
Definition at line 220 of file build-system.c.
References contrainte_make(), DIMENSION, dimension_lower, dimension_upper, entity_name, entity_type, entity_variable_p, get_ith_dummy(), hpfc_integer_constant_expression_p(), int_to_value, MAP, pips_assert, pips_debug, prefix, sc_add_inegalite(), sc_creer_base(), sc_new(), TCST, type_variable, VALUE_MONE, VALUE_ONE, variable_dimensions, vect_make(), and VECTEUR_NUL.
Referenced by hpfc_compute_entity_to_declaration_constraints().
shared!
array | rray |
lr | r |
Definition at line 268 of file message-utils.c.
References array, assert, CAR, CONS, dimension_lower, dimension_upper, FindIthDimension(), gen_length(), gen_nconc(), HpfcExpressionToInt(), int_to_expression(), intptr_t, ith_dim_distributed_p(), load_new_node(), make_range(), NIL, NumberOfDimension(), POP, RANGE, range_increment, range_lower, range_upper, VALUE_TO_INT, VALUE_ZERO, and vect_coeff().
Referenced by one_receive_message().
shared!
lr | r |
Definition at line 318 of file message-utils.c.
References CAR, CDR, CONS, gen_nconc(), HpfcExpressionToInt(), int_to_expression(), intptr_t, make_range(), NIL, RANGE, range_increment, range_lower, range_upper, VALUE_TO_INT, and vect_coeff().
Referenced by one_receive_message().
t1 | 1 |
t2 | 2 |
Definition at line 405 of file dynamic.c.
References conformant_entities_p(), load_hpf_distribution(), and same_distribute_p().
Referenced by align_check(), and same_align_p().
void create_common_parameters_h | ( | FILE * | file | ) |
in this file there are functions to generate the run-time resolution parameters.
file | ile |
Definition at line 36 of file inits.c.
References fprintf(), get_int_property(), max_size_of_processors(), number_of_distributed_arrays(), number_of_processors(), and number_of_templates().
Referenced by put_generated_resources_for_program().
void create_init_common_param | ( | FILE * | file | ) |
create_init_common_param (templates and modules)
file | ile |
Definition at line 511 of file inits.c.
References create_init_common_param_for_processors(), and create_init_common_param_for_templates().
Referenced by put_generated_resources_for_program().
void create_init_common_param_for_arrays | ( | FILE * | file, |
entity | module | ||
) |
NODIMA: Number Of DIMensions of an Array ATOT: Array TO Template
The primary entity is the initial mapping ??? not sure... some decision should be involved...
RANGEA: lower, upper, size and declaration, aso
RANGEA contents:
1: lower bound 2: upper bound 3: size, (2)-(1)+1 4: new declaration flag
5: distribution parameter n, 6: alignment rate a, 7: alignment shift, b-t_{m}
5: distribution parameter n, 6: cycle length n*p, 7: initial cycle number, 8: alignment shift, b-t_{m}
5: distribution parameter n 6: cycle length n*p, 7: initial cycle number, 8: alignment shift, b-t_{m} 9: alignment rate a, 10: chunck size ceil(n,|a|)
ALIGN
file | ile |
module | odule |
Definition at line 158 of file inits.c.
References abs, align_alignment, align_template, alignment_arraydim, alignment_constant, alignment_rate, alignment_templatedim, alignment_undefined, array, code_number(), dimension_lower, dimension_upper, distribute_distribution, distribute_processors, distribution_parameter, distribution_style, dynamic_entity_p, ENTITY, entity_ith_dimension(), entity_local_name(), FindAlignmentOfDim(), FindAlignmentOfTemplateDim(), FindDistributionOfDim(), FindIthDimension(), fprintf(), gen_free_list(), HpfcExpressionToInt(), iceil, is_hpf_newdecl_alpha, is_hpf_newdecl_beta, is_hpf_newdecl_delta, is_hpf_newdecl_gamma, is_hpf_newdecl_none, list_of_distributed_arrays_for_module(), load_hpf_alignment(), load_hpf_distribution(), load_hpf_number(), load_primary_entity(), MAP, module, module_local_name(), new_declaration_tag(), NumberOfDimension(), pips_assert, pips_internal_error, SizeOfIthDimension(), style_block_p, and style_cyclic_p.
Referenced by put_generated_resources_for_common(), and put_generated_resources_for_module().
void create_init_common_param_for_processors | ( | FILE * | file | ) |
NODIMP: Number Of DIMensions of a Processors arrangement
RANGEP: lower, upper, size
file | ile |
Definition at line 470 of file inits.c.
References DIMENSION, dimension_lower, dimension_upper, ENTITY, entity_local_name(), entity_type, fprintf(), HpfcExpressionToInt(), list_of_processors(), load_hpf_number(), MAP, NumberOfDimension(), type_variable, and variable_dimensions.
Referenced by create_init_common_param().
void create_init_common_param_for_templates | ( | FILE * | file | ) |
NODIMT: Number Of DIMensions of a Template TTOP: Template TO Processors arrangement
RANGET: lower, upper, size
DIST
file | ile |
Definition at line 391 of file inits.c.
References _FALLTHROUGH_, DIMENSION, dimension_lower, dimension_upper, distribute_distribution, distribute_processors, DISTRIBUTION, distribution_parameter, distribution_style, ENTITY, entity_local_name(), entity_type, fprintf(), HpfcExpressionToInt(), is_style_block, is_style_cyclic, is_style_none, list_of_templates(), load_hpf_distribution(), load_hpf_number(), MAP, NumberOfDimension(), pips_internal_error, style_tag, type_variable, and variable_dimensions.
Referenced by create_init_common_param().
void create_parameters_h | ( | FILE * | file, |
entity | module | ||
) |
create_parameters_h
to be called after the declaration_with_overlaps() call. it generates the parameters for module.
formal parameters are passed the value by the caller as far as overlapable dimensions are concerned.
otherwise it is a secondary copy
file | ile |
module | odule |
Definition at line 65 of file inits.c.
References array, bound_parameter_name(), bound_similar_mapping_p(), dimension_lower, dimension_upper, dynamic_entity_p, ENTITY, entity_name, entity_storage, entity_undefined, FindIthDimension(), fprintf(), free(), gen_free_list(), HpfcExpressionToInt(), ith_dim_overlapable_p(), list_of_distributed_arrays_for_module(), load_new_node(), load_similar_mapping(), LOWER, MAP, module, module_local_name(), NumberOfDimension(), pips_debug, storage_formal_p, ud(), and UPPER.
Referenced by put_generated_resources_for_common(), and put_generated_resources_for_module().
void debug_host_node_variables | ( | entity | e | ) |
HPFC module by Fabien COELHO.
HOST AND NODE ENTITIES MANAGEMENT
Definition at line 44 of file host_node_entities.c.
References bound_new_host_p(), bound_new_node_p(), bound_old_host_p(), bound_old_node_p(), entity_name, fprintf(), load_new_host(), load_new_node(), load_old_host(), and load_old_node().
void debug_print_referenced_entities | ( | void * | obj | ) |
obj | bj |
Definition at line 906 of file compile.c.
References debug_ref_rwt(), gen_multi_recurse(), gen_true(), and reference_domain.
Referenced by update_common_references_in_obj().
void declaration_with_overlaps_for_module | ( | entity | module | ) |
module | odule |
Definition at line 835 of file declarations.c.
References deal_with_similars(), declaration_with_overlaps(), gen_free_list(), list_of_distributed_arrays_for_module(), and module.
Referenced by compile_common(), and compile_module().
of expression
of statement
proc | roc |
Definition at line 49 of file generate-util.c.
References CONS, entity_to_expression(), EXPRESSION, hpfc_name_to_entity(), int_to_expression(), load_hpf_number(), make_assign_statement(), make_block_statement(), make_reference(), MYPOS, NIL, NumberOfDimension(), reference_to_expression(), and STATEMENT.
Referenced by GENERATION(), and processor_loop().
void delete_entity_update_common | ( | entity | ) |
distribute delete_hpf_distribution | ( | entity | ) |
void delete_statement_only_io | ( | statement | ) |
list DistArraysEffects | ( | expression | expr | ) |
effects' action in an expression are here supposed to be read one's but that may not be correct?
expr | xpr |
Definition at line 241 of file hpfc-util.c.
References array_distributed_p(), CONS, EFFECT, effect_variable, FOREACH, gen_free_list(), NIL, proper_effects_of_expression(), and store_effect_p().
Referenced by written_effects_to_dist_arrays_p().
array | rray |
dim | im |
pprocdim | procdim |
Definition at line 472 of file hpfc-util.c.
References alignment_templatedim, array, array_to_template, distribute_distribution, distribution_parameter, FindArrayDimAlignmentOfArray, FindDistributionOfDim(), HpfcExpressionToInt(), and load_hpf_distribution().
Referenced by generate_one_message(), message_manageable_p(), shape_one_message(), and template_cell_local_mapping().
void dump_current_remapping_graph | ( | string | when | ) |
when | hen |
Definition at line 1440 of file dynamic.c.
References dump_remapping_graph(), and list_of_remapping_statements().
Referenced by handle_hpf_directives().
??? the complexity of this function could be improved greatly...
Definition at line 93 of file message-utils.c.
References CAR, CONS, gen_nconc(), MAPL, NIL, PVECTOR, vect_dup(), and VECTOR.
Referenced by atomize_one_message().
??? the complexity of this function could be greatly improved
Definition at line 72 of file message-utils.c.
References assert, CAR, CONS, CONSP, gen_length(), gen_nconc(), LIST, MAP, MAPL, NIL, and RANGE.
Referenced by atomize_one_message().
if we cannot decide, the range is supposed not to be empty
Definition at line 203 of file message-utils.c.
References hpfc_integer_constant_expression_p(), range_lower, and range_upper.
Referenced by empty_section_p().
lr | r |
Definition at line 195 of file message-utils.c.
References CAR, CDR, empty_range_p(), empty_section_p(), ENDP, and RANGE.
Referenced by empty_section_p(), keep_non_empty_domain_messages(), and keep_non_empty_messages_with_destination().
expression entity_hpf_number | ( | entity | e | ) |
returns the hpf_number parameter as a string not really needed ??? ??? never called
Definition at line 196 of file declarations.c.
References concatenate(), entity_in_common_p(), entity_local_name(), entity_storage, entity_variable_p, MakeCharacterConstantExpression(), pips_assert, prefix, ram_function, ram_section, ram_undefined, storage_ram, storage_ram_p, and strdup().
Inequations to be defined
Equations to be defined
Remarks
ALPHA{1-7}: array dimensions, THETA{1-7}: template dimensions, PSI{1-7}: processor dimensions, SIGMA{1-7}: auxiliary variable, GAMMA{1-7}: cycles, DELTA{1-7}: local offsets, LALPHA{1-7}: local array dimensions, if specified...
plus "PRIME" versions
HPF CONSTRAINTS GENERATION
Definition at line 106 of file build-system.c.
References entity_module_name(), HPFC_PACKAGE, and same_string_p.
Referenced by put_variables_in_ordered_lists().
Definition at line 383 of file compiler-util.c.
References current_loop_list, LOOP, loop_index, and MAP.
Referenced by affine_expression_of_loop_index_p(), shift_expression_of_loop_index_p(), and simple_indices_p().
Referenced by alive_arrays(), continue_propagation_p(), entity_to_hpf_distribute_constraints(), extract_the_align(), extract_the_distribute(), hpfc_compute_distribute_constraints(), and one_distribute_directive().
gives back the constraints due to the declarations.
Uses a demand driven approach: computed systems are stored in the declaration_constraints mapping for later search.
what | hat |
Definition at line 285 of file build-system.c.
References concatenate(), DEBUG_SYST, entity_name, entity_variable_p, hpfc_compute_entity_to_declaration_constraints(), pips_assert, and Psysteme_undefined_p.
Referenced by generate_shared_io_system(), generate_system_for_distributed_variable(), GENERATION(), and processor_loop().
Definition at line 480 of file build-system.c.
References array_distributed_p(), hpfc_compute_align_constraints(), pips_assert, and Psysteme_undefined_p.
Referenced by generate_system_for_distributed_variable().
Definition at line 495 of file build-system.c.
References entity_template_p(), hpfc_compute_distribute_constraints(), pips_assert, and Psysteme_undefined_p.
Referenced by generate_system_for_distributed_variable().
array | rray |
Definition at line 732 of file build-system.c.
References array, array_distributed_p(), hpfc_compute_entity_to_new_declaration(), pips_assert, and Psysteme_undefined_p.
Referenced by generate_system_for_distributed_variable().
effect entity_to_region(stat, ent, act) statement stat; entity ent; tag act;
gives the region of ent with action act in statement stat.
stat | tat |
ent | nt |
act | ct |
Definition at line 515 of file build-system.c.
References action_tag, EFFECT, effect_action, effect_any_reference, effect_undefined, load_statement_local_regions(), MAP, and reference_variable.
Referenced by generate_distributed_io_system(), and generate_shared_io_system().
void error_reset_dynamic_hpf | ( | void | ) |
void error_reset_hpf_alignment | ( | void | ) |
void error_reset_hpf_distribution | ( | void | ) |
void error_reset_hpf_number | ( | void | ) |
void error_reset_hpf_reductions | ( | void | ) |
void error_reset_hpfc_current_statement | ( | void | ) |
void error_reset_maybeuseful_mappings | ( | void | ) |
void error_reset_new_host | ( | void | ) |
void error_reset_new_node | ( | void | ) |
void error_reset_old_host | ( | void | ) |
void error_reset_old_node | ( | void | ) |
void error_reset_overlap_status | ( | void | ) |
void error_reset_primary_entity | ( | void | ) |
void error_reset_renamings | ( | void | ) |
void error_reset_similar_mapping | ( | void | ) |
void error_reset_the_dynamics | ( | void | ) |
expression expr_compute_local_index | ( | entity | array, |
int | dim, | ||
expression | expr | ||
) |
new index computation formula, derived from the new declarations made for the given dimension.
just to avoid a gcc warning
array | rray |
dim | im |
expr | xpr |
Definition at line 198 of file run-time.c.
References abs, align_alignment, align_template, alignment_constant, alignment_rate, alignment_templatedim, array, dimension_lower, distribute_distribution, distribution_parameter, DIVIDE_OPERATOR_NAME, entity_intrinsic(), entity_ith_dimension(), expression_undefined, FindAlignmentOfDim(), FindDistributionOfDim(), FindIthDimension(), get_bool_property(), hpfc_name_to_entity(), HpfcExpressionToInt(), int_to_expression(), is_hpf_newdecl_alpha, is_hpf_newdecl_beta, is_hpf_newdecl_delta, is_hpf_newdecl_gamma, is_hpf_newdecl_none, load_hpf_alignment(), load_hpf_distribution(), load_hpf_number(), LOCAL_IND, LOCAL_IND_DELTA, LOCAL_IND_GAMMA, MakeBinaryCall(), MakeTernaryCall(), MakeUnaryCall(), MINUS_OPERATOR_NAME, MOD_INTRINSIC_NAME, MULTIPLY_OPERATOR_NAME, new_declaration_tag(), pips_internal_error, PLUS_OPERATOR_NAME, and UNARY_MINUS_OPERATOR_NAME.
Referenced by st_compute_ith_local_index().
what: extracts a lattice from a set of equalities how: Hermite form computation on equalities implying scanners
input: Psysteme and scanners output: modified system, new scanners and deducibles side effects:
of entity
void implementation: nothing done!
else do the job
FM (so) + V == 0
Fs + Mo + V == 0
H = P * F * Q
H = (Hl 0)
and memory leak, by the way
Hli = Hl^-1
Q = (Ql Qr)
QlHli = Ql * Hl^-1
QlHliM = QlHli * M
QlHliV = QlHli * V
I
mQr = - Qr
create nscanners-neq new scanning variables... they are the yr's.
We have: mQr yr + I s + QlHliM o + QlHliV == 0 yr are the new scanners, s the old ones, deducable from the new ones. the equation must also be used to remove s from the inequalities.
Fnew = ( mQr I QlHliM )
Now we have: (a) Fnew (yr s o)^t + QlHliV == 0 (b) lns – the new scanners
we must (1) generate deducables from (a), (2) regenerate inequalities on yr's.
clean the new system
old scanners are deduced now:
scanners | the system is modified of entity |
newscs | variables to be scanned of entity |
ddc | returned new scanners of expression |
Definition at line 113 of file lattice_extraction.c.
References append_to(), base_dimension, BASE_NULLE, base_rm, CONS, constraints_to_matrices(), contraintes_free(), DEBUG_BASE, DEBUG_ELST, DEBUG_MTRX, DEBUG_SYST, ENDP, ENTITY, eq, F, gen_append(), gen_copy_seq(), gen_length(), get_bool_property(), hpfc_new_variable(), insert_sub_matrix(), is_basic_int, list_to_base(), MakeBasic(), matrices_to_constraints(), matrix_diagonal_p(), matrix_free, matrix_hermite(), matrix_identity(), matrix_multiply(), matrix_new(), matrix_triangular_unimodular_p(), matrix_uminus(), matrix_unimodular_triangular_inversion(), message_assert, NIL, node_module, ordinary_sub_matrix(), pips_assert, pips_debug, pips_user_warning, Q, sc_creer_base(), scanners_then_others(), and simplify_deducable_variables().
Referenced by hpf_remapping().
lal | al |
dim | im |
Definition at line 377 of file hpfc-util.c.
References ALIGNMENT, alignment_arraydim, alignment_undefined, CAR, ENDP, NIL, and POP.
Referenced by ComputeNewSizeOfIthDimension(), create_init_common_param_for_arrays(), expr_compute_local_index(), ith_dim_distributed_p(), ith_dim_overlapable_p(), and template_dimension_of_array_dimension().
lal | al |
dim | im |
Definition at line 389 of file hpfc-util.c.
References ALIGNMENT, alignment_templatedim, alignment_undefined, CAR, ENDP, and POP.
Referenced by array_distribution_similar_p(), array_ranges_to_template_ranges(), create_init_common_param_for_arrays(), get_alignment(), hpfc_compute_align_constraints(), hpfc_compute_unicity_constraints(), and processors_dim_replicated_p().
stat | tat |
lsyn | syn |
Definition at line 239 of file compiler-util.c.
References ENDP, FindDefinitionsOf_rewrite(), found_definitions, gen_recurse, gen_true(), NIL, pips_assert, statement_domain, and syntax_list.
Referenced by hpf_compile_parallel_body().
distribution FindDistributionOfDim | ( | list | ldi, |
int | dim, | ||
int * | pdim | ||
) |
ldi | di |
dim | im |
pdim | dim |
Definition at line 401 of file hpfc-util.c.
References CAR, DISTRIBUTION, distribution_style, gen_length(), pips_assert, POP, and style_none_p.
Referenced by ComputeNewSizeOfIthDimension(), create_init_common_param_for_arrays(), DistributionParameterOfArrayDim(), expr_compute_local_index(), get_distribution(), ith_dim_distributed_p(), ith_dim_overlapable_p(), and processor_number().
distribution FindDistributionOfProcessorDim | ( | list | ldi, |
int | dim, | ||
int * | tdim | ||
) |
ldi | di |
dim | im |
tdim | dim |
Definition at line 421 of file hpfc-util.c.
References DISTRIBUTION, distribution_style, distribution_undefined, MAP, pips_internal_error, and style_none_p.
Referenced by array_distribution_similar_p(), hpfc_compute_distribute_constraints(), processors_dim_replicated_p(), and template_ranges_to_processors_ranges().
list FindRefToDistArray | ( | void * | obj | ) |
obj | bj |
Definition at line 282 of file hpfc-util.c.
References FindRefToDistArray_syntax_rewrite(), found_syntaxes, gen_multi_recurse(), gen_true(), NIL, and syntax_domain.
Referenced by FindRefToDistArrayFromList(), FindRefToDistArrayInStatement_call_filter(), FindRefToDistArrayInStatement_expression_filter(), generate_c1_alpha(), and ref_to_dist_array_p().
FindRefToDistArrayFromList.
these functions compute the list of syntax that are references to a distributed variable.
lexpr | expr |
Definition at line 262 of file hpfc-util.c.
References EXPRESSION, FindRefToDistArray(), gen_nconc(), MAP, and NIL.
Referenced by generate_c1_beta().
obj | bj |
lwp | wp |
lrp | rp |
Definition at line 121 of file compiler-util.c.
References call_domain, expression_domain, FindRefToDistArrayInStatement_call_filter(), FindRefToDistArrayInStatement_expression_filter(), found_read, found_written, gen_multi_recurse(), gen_null(), and NIL.
Referenced by hpf_compile_parallel_body(), hpf_compile_parallel_loop(), and Overlap_Analysis().
else not found
Definition at line 52 of file local-ri-util.c.
References entity_local_name(), fortran_library, same_string_p, and top_level_entity_p().
Referenced by hpfc_compile(), and hpfc_directives_handler().
void fprint_lmessage | ( | FILE * | file, |
list | l | ||
) |
file | ile |
Definition at line 231 of file debug-util.c.
References ENDP, fprint_message(), fprintf(), MAP, and MESSAGE.
Referenced by messages_handling().
void fprint_lrange | ( | FILE * | file, |
list | l | ||
) |
file | ile |
Definition at line 200 of file debug-util.c.
References fprint_range(), fprintf(), MAP, and RANGE.
Referenced by fprint_message().
void fprint_message | ( | FILE * | file, |
message | m | ||
) |
file | ile |
Definition at line 217 of file debug-util.c.
References entity_local_name(), fprint_lrange(), fprintf(), message_array, message_content, message_dom, message_neighbour, variable_dump_name(), and vect_fprint().
Referenced by atomize_one_message(), and fprint_lmessage().
void fprint_range | ( | FILE * | file, |
range | r | ||
) |
file | ile |
Definition at line 176 of file debug-util.c.
References fprintf(), hpfc_integer_constant_expression_p(), range_increment, range_lower, and range_upper.
Referenced by fprint_lrange().
void free_hpf_object_lists | ( | void | ) |
Definition at line 98 of file declarations.c.
References gen_free_list(), and reset_hpf_object_lists().
Referenced by close_data_status().
void free_hpfc_current_mappings | ( | void | ) |
Definition at line 200 of file build-system.c.
Referenced by reset_resources_for_module().
void free_only_io_map | ( | void | ) |
void free_update_common_map | ( | void | ) |
void free_vector_list | ( | list | l | ) |
Definition at line 382 of file special_cases.c.
References gen_free_list(), gen_map(), and vect_rm().
Referenced by generate_subarray_shift(), subarray_shift_assignment_p(), and subarray_shift_p().
of lists
of loops
of expressions
the loop nest must be perfect... !!! should check for continues?
the body must be a simple assignment
compatible arities
number of enclosing loops
the lhs should be fully defined by the loop nest... but it does not matter for the rhs!
both lhs and rhs references must be aligned
??? should check the new declarations...
pleft | left |
pright | right |
Definition at line 869 of file special_cases.c.
References call_arguments, CAR, CDR, CONSP, DEBUG_STAT, EXPRESSION, expression_reference(), expression_reference_p(), full_define_p(), gen_free_list(), gen_length(), instruction_assign_p(), instruction_call, int, NIL, number_of_non_empty_statements(), parallel_loop_nest_to_body(), pips_assert, POP, reference_indices, references_aligned_p(), simple, simple_statement(), statement_instruction, and XDEBUG.
Referenced by hpf_compile_loop().
of expression
of dimension
of entity
checks that the indices are simply the loop indexes, and that the whole dimension is scanned. Also avoids (i,i)...
checks that the loop range scans the whole dimension
increment must be 1. lowers and uppers must be equal.
ll | l |
Definition at line 771 of file special_cases.c.
References array, CAR, CONS, DIMENSION, dimension_lower, dimension_upper, ENTITY, entity_name, entity_type, entity_variable_p, EXPRESSION, expression_syntax, find_loop(), gen_free_list(), gen_in_list_p(), gen_length(), integer_constant_expression_p(), integer_constant_expression_value(), loop_range, NIL, pips_assert, pips_debug, POP, range_increment, range_lower, range_upper, reference_indices, reference_variable, same_expression_p(), syntax_reference, syntax_reference_p, type_variable, and variable_dimensions.
Referenced by full_copy_p().
Pcontrainte full_linearization | ( | entity | obj, |
entity | var, | ||
int * | psize, | ||
entity(*)(int) | create_var, | ||
bool | fortran_way, | ||
int | initial_offset | ||
) |
var is set to the result. *psize returns the size of obj. Done the Fortran way, or the other way around... initial offset if desired
obj | bj |
var | array being lin. |
psize | assigned variable if desired |
create_var | returned array extent |
fortran_way | dimension variable builder |
initial_offset | Fortran/C linearization way |
Definition at line 80 of file remapping.c.
References contrainte_make(), get_entity_dimensions(), int_to_value, NumberOfDimension(), TCST, VALUE_MONE, VALUE_ONE, vect_add_elem(), vect_multiply(), and VECTEUR_NUL.
Referenced by hpfc_broadcast_buffers(), and hpfc_compute_lid().
primary | rimary |
val | al |
Definition at line 940 of file remapping.c.
References entity_undefined, and generate_all_liveness_but().
Referenced by hpf_compile_call(), and root_statement_remapping_inits().
generate_c1_alpha
a distributed array variable is defined
read references to distributed arrays.
generation of the code to get the necessary values...
then the updated statement is to be added to node:
Update the values of the defined distributed variable if necessary...
the overall statements are generated.
stat | tat |
lhp | hp |
lnp | np |
Definition at line 121 of file generate.c.
References array_distributed_p(), call_arguments, call_function, CAR, CDR, condition_computerp, CONS, DEBUG_STAT, ENTITY_ASSIGN_P, entity_name, EXPRESSION, expression_syntax, FindRefToDistArray(), gen_free_list(), gen_nconc(), generate_compute_local_indices(), generate_read_of_ref_for_computer(), generate_update_values_on_nodes(), instruction_call, load_new_node(), make_assign_statement(), make_reference(), MAP, NIL, node_module, pips_assert, pips_debug, ref, reference_to_expression(), reference_variable, st_compute_current_computer(), st_make_nice_test(), STATEMENT, statement_call_p(), statement_instruction, SYNTAX, syntax_reference, syntax_reference_p, and UpdateExpressionForModule().
Referenced by hpf_compile_call().
these conditions are to be verifyed, by calculating the proper effects of the statement.
to be corrected later on.
this shouldn't be necessary
references to distributed arrays: w(A(I)) = B(I) so the whole list is to be considered.
generation of the code
stat | tat |
lhp | hp |
lnp | np |
Definition at line 41 of file generate.c.
References array_distributed_p(), call_arguments, call_function, CAR, CONS, DEBUG_STAT, ENTITY_ASSIGN_P, entity_name, EXPRESSION, expression_syntax, FindRefToDistArrayFromList(), gen_free_list(), gen_nconc(), generate_read_of_ref_for_all(), host_module, instruction_call, instruction_to_statement(), is_instruction_call, lUpdateExpr(), make_call(), make_instruction(), MAP, NIL, node_module, pips_assert, pips_debug, reference_variable, STATEMENT, statement_call_p(), statement_instruction, SYNTAX, syntax_reference, and syntax_reference_p.
Referenced by hpf_compile_call().
generate_compute_local_indices
this function generate the list of statement necessary to compute the local indices of the given reference. It gives back the new list of indices for the reference.
ref | ef |
lsp | sp |
lindsp | indsp |
Definition at line 388 of file generate.c.
References array, array_distributed_p(), CAR, CDR, CONS, DEBUG_STAT, entity_name, EXPRESSION, gen_nconc(), ifdebug, local_index_is_different_p, make_expression(), MAP, NIL, node_module, normalized_undefined, NumberOfDimension(), pips_assert, pips_debug, ref, reference_indices, reference_variable, st_compute_ith_local_index(), STATEMENT, and UpdateExpressionForModule().
Referenced by generate_c1_alpha(), generate_get_value_locally(), generate_parallel_body(), generate_receive_from_computer(), generate_send_to_computer(), generate_update_distributed_value_from_host(), generate_update_values_on_computer_and_nodes(), generate_update_values_on_nodes(), and st_send_to_computer_if_necessary().
statement generate_copy_loop_nest(src, trg) entity src, trg;
what: generates a parallel loop nest that copies src in trg. how: by building the corresponding AST. input: the two entities, which should be arrays with the same shape. output: a statement containing the loop nest. side effects:
of entities
of expressions
of dimensions
???
builds the set of indexes needed to scan the dimensions.
builds the assign statement to put in the body. TRG(indexes) = SRC(indexes)
builds the copy loop nest
src | rc |
trg | rg |
Definition at line 1568 of file dynamic.c.
References array_distributed_p(), CAR, concatenate(), CONS, copy_expression(), current, DEBUG_STAT, DIMENSION, dimension_lower, dimension_upper, entities_to_expressions(), ENTITY, entity_empty_label(), entity_name, entity_type, gen_copy_seq(), gen_length(), get_current_module_entity(), hpfc_new_variable(), int_to_expression(), is_basic_int, is_execution_parallel, load_primary_entity(), loop_to_statement, make_assign_statement(), make_empty_statement, make_execution(), make_loop(), make_range(), make_reference(), MakeBasic(), module, NIL, pips_assert, POP, reference_to_expression(), src, type_variable, type_variable_p, UU, and variable_dimensions.
Referenced by clean_statement().
statement generate_deducables(list le)
the le list of expression is used to generate the deducables. The fields of interest are the variable which is referenced and the normalized field which is the expression that is going to be used to define the variable.
le | of expression |
Definition at line 83 of file generate-util.c.
References CONS, EXPRESSION, expression_normalized, expression_reference(), gen_copy_seq(), gen_free_list(), gen_nreverse(), make_block_statement(), MAP, NIL, normalized_linear, Pvecteur_to_assign_statement(), reference_variable, and STATEMENT.
Referenced by elements_loop(), generate_io_statements_for_shared_arrays(), and GENERATION().
statement generate_full_copy(reference left, reference right)
what: copies directly right into left, that must conform... how: direct loop nest on local data input: both entities output: the returned statement side effects: bugs or features:
of entity
of dimension
indexes are reused. bounds are taken from the node entity declaration.
left | eft |
right | ight |
Definition at line 964 of file special_cases.c.
References array, CAR, copy_expression(), copy_reference(), DIMENSION, dimension_lower, dimension_upper, ENTITY, entity_empty_label(), entity_type, expressions_to_entities(), gen_free_list(), gen_length(), int_to_expression(), is_execution_sequential, load_new_node(), loop_to_statement, make_assign_statement(), make_execution(), make_loop(), make_range(), NIL, POP, reference_indices, reference_to_expression(), reference_variable, type_variable, UU, and variable_dimensions.
Referenced by hpf_compile_loop().
generate_get_value_locally
put the local value of ref in the variable local.
for every indexes, if necessary, compute the local value of the indices, by calling RTR support function LOCAL_INDEX(array_number, dimension) then the assignment is performed.
tempi = LOCAL_INDEX(array_number, dimension, indexi) ... goal = ref_local(tempi...)
ref | ef |
goal | oal |
lstatp | statp |
Definition at line 446 of file generate.c.
References array, array_distributed_p(), CONS, DEBUG_STAT, entity_name, gen_nconc(), generate_compute_local_indices(), load_new_node(), make_assign_statement(), make_reference(), NIL, node_module, pips_assert, ref, reference_to_expression(), reference_variable, and STATEMENT.
Referenced by st_get_value_for_computer(), and st_get_value_locally_and_send().
stat | tat |
proc | roc |
lr | r |
Definition at line 680 of file message-utils.c.
References entity_empty_label(), instruction_to_statement(), is_instruction_test, make_continue_statement(), make_guard_expression(), make_instruction(), and make_test().
Referenced by loop_nest_guard(), and st_one_message().
list generate_message_from_3_lists(array, lcontent, lneighbour, ldomain)
array | rray |
lcontent | content |
lneighbour | neighbour |
ldomain | domain |
Definition at line 173 of file message-utils.c.
References array, assert, CAR, CDR, CONS, CONSP, gen_length(), make_message(), MESSAGE, NIL, and PVECTOR.
Referenced by atomize_one_message().
the first written or read distributed ref is chosen as the computer
we are sure that computer is one of the owners
body | ody |
lstatp | statp |
lw | w |
lr | r |
Definition at line 511 of file generate.c.
References AddEntityToHostAndNodeModules(), CAR, condition_computerp, CONS, DEBUG_STAT, entity_basic(), entity_name, entity_to_expression(), gen_length(), gen_nconc(), generate_compute_local_indices(), generate_read_of_ref_for_computer(), generate_update_values_on_computer_and_nodes(), generate_update_values_on_nodes(), get_current_module_entity(), ifdebug, load_new_node(), make_assign_statement(), make_new_scalar_variable(), make_reference(), MAP, NIL, node_module, pips_assert, pips_debug, reference_to_expression(), reference_variable, st_compute_current_computer(), st_make_nice_test(), STATEMENT, SYNTAX, syntax_reference, and UpdateStatementForModule().
Referenced by hpf_compile_parallel_body().
generate_read_of_ref_for_all
this function organise the read of the given reference for all the nodes, and for host.
the receive statement is built for host:
COMPUTE_CURRENT_OWNERS(ref) temp = RECEIVEFROMSENDER(...)
a receive from sender is generated, however replicated the variable is FC 930623 (before was a call to st_receive_from(ref, ...))
the code for node is built, in order that temp has the wanted value.
COMPUTE_CURRENT_OWNERS(ref) IF OWNERP(ME) THEN local_ref = COMPUTE_LOCAL(ref) temp = (local_ref) IF SENDERP(ME) // this protection in case of replicated arrays. THEN SENDTOHOST(temp) SENDTONODE(ALL-OWNERS,temp) ENDIF ELSE temp = RECEIVEFROM(SENDER(...)) ENDIF
the new variable is inserted in the expression...
lhp | hp |
lnp | np |
Definition at line 316 of file generate.c.
References AddEntityToHostAndNodeModules(), array_distributed_p(), CONS, DEBUG_STAT, entity_basic(), entity_name, get_current_module_entity(), host_module, load_new_host(), load_new_node(), make_new_scalar_variable(), make_reference(), NIL, node_module, pips_assert, ref, reference_variable, st_compute_current_owners(), st_get_value_for_all(), st_receive_from(), STATEMENT, and syntax_reference.
Referenced by generate_c1_beta().
generate_read_of_ref_for_computer
en cours d'adaptation...
the new variable is inserted in the expression...
lcompp | compp |
lnotcompp | notcompp |
Definition at line 275 of file generate.c.
References AddEntityToHostAndNodeModules(), array_distributed_p(), CONS, entity_basic(), get_current_module_entity(), load_new_node(), make_new_scalar_variable(), make_reference(), NIL, pips_assert, ref, reference_variable, st_compute_current_owners(), st_get_value_for_computer(), st_send_to_computer_if_necessary(), STATEMENT, and syntax_reference.
Referenced by generate_c1_alpha(), and generate_parallel_body().
ref | ef |
lstatp | statp |
Definition at line 491 of file generate.c.
References array, array_distributed_p(), CONS, DEBUG_STAT, entity_name, gen_nconc(), generate_compute_local_indices(), load_new_node(), make_reference(), NIL, node_module, pips_assert, ref, reference_variable, st_receive_from_computer, and STATEMENT.
generate_send_to_computer
sends the local value of ref to the current computer
ref | ef |
lstatp | statp |
Definition at line 471 of file generate.c.
References array, array_distributed_p(), CONS, DEBUG_STAT, entity_name, gen_nconc(), generate_compute_local_indices(), load_new_node(), make_reference(), NIL, node_module, pips_assert, ref, reference_variable, st_send_to_computer, and STATEMENT.
statement generate_subarray_shift(s, var, lshift) statement s; entity var; list lshift;
generates a call to the runtime library shift subroutine for the given array, the given shift and the corresponding region in statement s. this function assumes that subarray_shift_p was true on s, and does not checks the conditions again.
gets the shifted dimension and the shift
all the arguments
var | ar |
lshift | shift |
Definition at line 643 of file special_cases.c.
References array, array_lower_upper_bounds_list(), CAR, CONS, entity_to_expression(), EXPRESSION, expression_undefined, free_vector_list(), gen_nconc(), hpfc_make_call_statement(), int_to_expression(), load_hpf_number(), make_rectangular_area(), make_shift_subroutine(), make_vecteur_expression(), MAPL, pips_assert, PVECTOR, and vecteur_nul_p().
Referenced by hpf_compile_loop().
Psysteme generate_system_for_variable(v) entity v;.
what: generates a system for DISTRIBUTED variable v. how: uses the declarations of v, t, p and align and distribute, and new declarations. input: entity (variable) v output: the built system, which is a new allocated system. side effects:
Definition at line 789 of file build-system.c.
References align_template, array_distributed_p(), base_rm, distribute_processors, entity_to_declaration_constraints(), entity_to_hpf_align_constraints(), entity_to_hpf_distribute_constraints(), entity_to_new_declaration(), load_hpf_alignment(), load_hpf_distribution(), pips_assert, sc_append(), sc_creer_base(), and sc_rn().
Referenced by generate_distributed_io_system(), and generate_remapping_system().
Definition at line 751 of file build-system.c.
References contrainte_make(), sc_add_egalite(), sc_creer_base(), sc_rn(), TCST, VALUE_MONE, VALUE_ONE, VALUE_ZERO, vect_make(), and VECTEUR_NUL.
Referenced by generate_remapping_system(), and hpfc_unstutter_dummies().
generate_update_distributed_value_from_host
call the necessary communication function
lhstatp | hstatp |
lnstatp | nstatp |
Definition at line 691 of file generate.c.
References AddEntityToHostAndNodeModules(), array, array_distributed_p(), condition_ownerp, CONS, entity_basic(), gen_nconc(), generate_compute_local_indices(), get_current_module_entity(), load_new_host(), load_new_node(), make_new_scalar_variable(), make_reference(), NIL, pips_assert, reference_variable, replicated_p(), st_compute_current_owners(), st_make_nice_test(), st_receive_from_host, st_send_to_owner, st_send_to_owners, STATEMENT, and syntax_reference.
generate_update_private_value_from_host
lhstatp | hstatp |
lnstatp | nstatp |
Definition at line 738 of file generate.c.
References array_distributed_p(), CONS, load_new_host(), load_new_node(), make_reference(), NIL, pips_assert, reference_variable, st_host_send_to_all_nodes, st_receive_mcast_from_host, STATEMENT, and syntax_reference.
void generate_update_values_on_computer_and_nodes | ( | reference | ref, |
reference | val, | ||
list * | lscompp, | ||
list * | lsnotcompp | ||
) |
generate_update_values_on_computer_and_nodes
inside a loop, a variable is defined, and the values have to be updated on the computer node itself, and on the other owners of the given variable.
computer is doing the job
all values have to be updated...
ref | ef |
val | al |
lscompp | scompp |
lsnotcompp | snotcompp |
Definition at line 634 of file generate.c.
References array, condition_ownerp, CONS, entity_undefined, gen_nconc(), generate_compute_local_indices(), load_new_node(), make_assign_statement(), make_continue_statement(), make_reference(), NIL, ref, reference_to_expression(), reference_variable, replicated_p(), st_compute_current_owners(), st_make_nice_test(), st_receive_from_computer, st_send_to_other_owners, st_send_to_owner, st_send_to_owners, and STATEMENT.
Referenced by generate_parallel_body().
void generate_update_values_on_nodes | ( | reference | ref, |
reference | newref, | ||
list * | lscompp, | ||
list * | lsnotcompp | ||
) |
generate_update_values_on_nodes
computer is doing the job
remote values have to be updated
the computer has to compute the owners in order to call the send to other owners function, because the owners are used to define the owners set, which was quite obvious:-)
bug fixed by FC, 930629
ref | ef |
newref | ewref |
lscompp | scompp |
lsnotcompp | snotcompp |
Definition at line 223 of file generate.c.
References array, condition_ownerp, CONS, gen_nconc(), generate_compute_local_indices(), make_reference(), NIL, ref, reference_variable, replicated_p(), st_compute_current_owners(), st_make_nice_test(), st_receive_from_computer, st_send_to_other_owners, and STATEMENT.
Referenced by generate_c1_alpha(), and generate_parallel_body().
a nicer interface to extract the needed information. FC 29/03/94
replication
array | rray |
dim | im |
ptdim | tdim |
pa | a |
pb | b |
Definition at line 606 of file hpfc-util.c.
References align_alignment, alignment_constant, alignment_rate, alignment_undefined, array, array_distributed_p(), FindAlignmentOfTemplateDim(), HpfcExpressionToInt(), load_hpf_alignment(), pips_assert, and template_dimension_of_array_dimension().
Referenced by alignments_compatible_p(), and hpfc_compute_entity_to_new_declaration().
data_status get_data_status | ( | void | ) |
??? previsous data_status lost: memory leak
Definition at line 308 of file declarations.c.
References get_hpf_alignment(), get_hpf_distribution(), list_of_distributed_arrays(), list_of_processors(), list_of_templates(), and make_data_status().
Referenced by init_hpfc_status(), and save_hpfc_status().
template | emplate |
dim | im |
ppdim | pdim |
pn | n |
Definition at line 638 of file hpfc-util.c.
References distribute_distribution, distribution_parameter, distribution_undefined_p, FindDistributionOfDim(), HpfcExpressionToInt(), and load_hpf_distribution().
Referenced by hpfc_compute_entity_to_new_declaration(), and processor_dimension_of_template_dimension().
entity_entities get_dynamic_hpf | ( | void | ) |
dynamic_status get_dynamic_status | ( | void | ) |
Definition at line 99 of file dynamic.c.
References get_dynamic_hpf(), get_maybeuseful_mappings(), get_primary_entity(), get_renamings(), and make_dynamic_status().
Referenced by init_hpfc_status(), and save_hpfc_status().
dim | im |
plow | low |
pup | up |
Definition at line 651 of file hpfc-util.c.
References dimension_lower, dimension_undefined, dimension_upper, entity_ith_dimension(), entity_variable_p, ExpressionToInt(), and pips_assert.
Referenced by conformant_entities_p(), extract_the_align(), full_linearization(), hpfc_compute_entity_to_new_declaration(), hpfc_compute_lid(), partial_linearization(), and safe_static_domain_bound().
entity_status get_entity_status | ( | void | ) |
Definition at line 93 of file host_node_entities.c.
References entity_int_undefined, get_new_host(), get_new_node(), get_old_host(), get_old_node(), and make_entity_status().
Referenced by init_hpfc_status(), and save_hpfc_status().
alignmap get_hpf_alignment | ( | void | ) |
distributemap get_hpf_distribution | ( | void | ) |
entity_int get_hpf_number | ( | void | ) |
numbers_status get_hpf_number_status | ( | void | ) |
Definition at line 134 of file declarations.c.
References current_array_index, current_processors_index, current_template_index, get_hpf_number(), and make_numbers_status().
Referenced by init_hpfc_status(), and save_hpfc_status().
statement_entities get_hpf_reductions | ( | void | ) |
Referenced by init_hpfc_status(), and save_hpfc_status().
statement get_hpfc_current_statement | ( | void | ) |
Referenced by clean_distributed_io_system(), clean_shared_io_system(), generate_io_statements_for_shared_arrays(), generate_remapping_system(), hpfc_compute_align_constraints(), hpfc_compute_entity_to_new_declaration(), hpfc_order_variables(), hpfc_unstutter_dummies(), and remapping_variables().
Referenced by generate_remapping_system(), and remapping_variables().
Referenced by hpfc_compute_distribute_constraints(), hpfc_compute_entity_to_new_declaration(), hpfc_order_variables(), and remapping_variables().
Referenced by hpfc_compute_distribute_constraints(), hpfc_compute_entity_to_new_declaration(), hpfc_order_variables(), and remapping_variables().
array | rray |
pmin | min |
pmax | max |
Definition at line 285 of file declarations.c.
References array, array_distributed_p(), dimension_lower, dimension_upper, entity_ith_dimension(), entity_variable_p, HpfcExpressionToInt(), load_new_node(), and pips_assert.
Referenced by hpfc_compute_entity_to_new_declaration().
Referenced by clean_distributed_io_system(), generate_io_statements_for_shared_arrays(), hpfc_compute_entity_to_new_declaration(), hpfc_order_variables(), remapping_stats(), and remapping_variables().
Referenced by remapping_stats(), and remapping_variables().
Referenced by clean_distributed_io_system(), generate_remapping_code(), generate_work_sharing_system(), GENERATION(), hpfc_compute_distribute_constraints(), hpfc_hmessage(), hpfc_order_variables(), put_variables_in_ordered_lists(), and remapping_variables().
Referenced by broadcast(), generate_remapping_code(), generate_work_sharing_system(), and remapping_variables().
Referenced by clean_distributed_io_system(), clean_shared_io_system(), hpfc_unstutter_dummies(), and make_rectangular_area().
Referenced by hpfc_compute_entity_to_new_declaration(), and hpfc_order_variables().
Referenced by clean_distributed_io_system(), hpfc_compute_align_constraints(), hpfc_compute_distribute_constraints(), hpfc_compute_unicity_constraints(), and remapping_variables().
Referenced by generate_remapping_code(), generate_work_sharing_system(), hpf_remapping(), hpfc_broadcast_buffers(), and remapping_variables().
statement_entities get_maybeuseful_mappings | ( | void | ) |
entitymap get_new_host | ( | void | ) |
entitymap get_new_node | ( | void | ) |
entitymap get_old_host | ( | void | ) |
entitymap get_old_node | ( | void | ) |
statement_mapping get_only_io_map | ( | void | ) |
returns the overlap for a given entity, dimension and side, to be used in the declaration modifications
returns the overlap for a given entity, dimension and side, to be used in the declaration modifications
ent | nt |
dim | im |
side | ide |
Definition at line 743 of file declarations.c.
References assert, bound_overlap_status_p(), create_overlaps(), entity_name, gen_nth(), load_overlap_status(), OVERLAP, overlap_lower, overlap_upper, pips_assert, and pips_debug.
Referenced by deal_with_similars(), declaration_with_overlaps(), and update_overlaps_of().
overlapsmap get_overlap_status | ( | void | ) |
Referenced by init_hpfc_status(), and save_hpfc_status().
entitymap get_primary_entity | ( | void | ) |
le | e |
var | ar |
Definition at line 584 of file special_cases.c.
References action_read_p, EFFECT, effect_action, effect_any_reference, effect_system, MAP, and reference_variable.
Referenced by make_rectangular_area().
statement_renamings get_renamings | ( | void | ) |
entitymap get_similar_mapping | ( | void | ) |
list get_the_dynamics | ( | void | ) |
Referenced by handle_hpf_directives(), and initial_alignment().
entity_mapping get_update_common_map | ( | void | ) |
void GiveToHpfObjectsTheirNumber | ( | void | ) |
give to hpf objects listed in distributedarrays, templates and processors their number for the code generation...
Definition at line 166 of file declarations.c.
References bound_hpf_number_p(), current_array_index, current_processors_index, current_template_index, ENTITY, MAP, pips_debug, and store_hpf_number().
Referenced by NormalizeHpfDeclarations().
int global_array_cell_to_local_array_cell(array, dim, acell)
??? not enough general a function
array | rray |
dim | im |
acell | cell |
Definition at line 550 of file hpfc-util.c.
References alignment_constant, alignment_rate, alignment_undefined, array, FindArrayDimAlignmentOfArray, HpfcExpressionToInt(), pips_assert, and template_cell_local_mapping().
Referenced by shape_one_message().
void handle_hpf_directives(s) statement s;
what: handles the HPF directives in statement s. how: recurses thru the AST, looking for special "directive calls". when found, a special handler is called for the given directive. input: the code statement s output: none side effects: (many)
INITIALIZE needed static stuff
PHASE 1
PHASE 2
PHASE 3
OPTIMIZATION
CLEAN
dyn | yn |
Definition at line 1069 of file directives.c.
References analysis_phase, build_full_ctrl_graph(), call_domain, clean_ctrl_graph(), clean_statement(), close_dynamic_locals(), close_the_dynamics(), DEBUG_CODE, DEBUG_STAT, directive_filter(), dump_current_remapping_graph(), expression_domain, gen_false(), gen_free_list(), gen_map(), gen_multi_recurse(), gen_null(), get_bool_property(), get_current_module_entity(), get_the_dynamics(), hpfc_check_for_similarities(), ifdebug, init_dynamic_locals(), init_the_dynamics(), initial_alignment(), NIL, pips_assert, pips_debug, prescription_filter(), simplify_remapping_graph(), statement_domain, store_renamings(), and to_be_cleaned.
Referenced by hpfc_directives_handler().
of hpfc_reductions
of hpfc_reductions
Definition at line 274 of file special_cases.c.
References CONS, entities_list, ENTITY, HPFC_REDUCTIONS, load_hpf_reductions(), MAP, NIL, and reduction_of_in().
Referenced by hpf_compiler().
bool hpf_alignment_undefined_p | ( | void | ) |
what: compile a statement into a host and SPMD node code.
how: double code rewriting in a recursive traversal of stat. input: statement stat. output: statements *hoststatp and *nodestatp side effects: ? bugs or features:
of hpfc_reduction
necessary
remapping
HPF REDUCTION
else usual stuff
of statement
stat | tat |
hoststatp | oststatp |
nodestatp | odestatp |
Definition at line 710 of file compiler.c.
References bound_hpf_reductions_p(), bound_renamings_p(), compile_hpf_reduction(), CONS, DEBUG_STAT, gen_nconc(), get_current_module_statement(), handle_hpf_reduction(), hpf_compile_block(), hpf_compile_call(), hpf_compile_loop(), hpf_compile_test(), hpf_compile_unstructured(), instruction_tag, io_efficient_compile(), is_instruction_block, is_instruction_call, is_instruction_goto, is_instruction_loop, is_instruction_test, is_instruction_unstructured, load_statement_only_io(), make_block_statement(), NIL, pips_debug, pips_internal_error, remapping_compile(), root_statement_remapping_inits(), STATEMENT, and statement_instruction.
Referenced by compile_control(), compile_module(), hpf_compile_block(), hpf_compile_sequential_loop(), hpf_compile_test(), and hpf_compile_unstructured().
bool hpf_distribution_undefined_p | ( | void | ) |
bool hpf_number_undefined_p | ( | void | ) |
??? some intrinsics should also be considered as pure.
all of them ?
Definition at line 67 of file hpfc.c.
References f(), and gen_in_list_p().
Referenced by hpfc_compile().
bool hpf_reductions_undefined_p | ( | void | ) |
hpfc.c
statement hpfc_add_2 | ( | expression | exp | ) |
expr = expr + 2
exp | xp |
Definition at line 141 of file generate-util.c.
References copy_expression(), entity_intrinsic(), exp, int_to_expression(), make_assign_statement(), MakeBinaryCall(), and PLUS_OPERATOR_NAME.
Referenced by hpfc_message().
void hpfc_add_ahead_of_node_code | ( | statement | s | ) |
Definition at line 404 of file hpfc.c.
References added_ahead_of_node_code, CONS, and STATEMENT.
Referenced by generate_optimized_code_for_loop_nest().
returns statement VAR = VAR + N
added value
var | ar |
n | integer scalar variable |
Definition at line 128 of file generate-util.c.
References entity_intrinsic(), entity_to_expression(), int_to_expression(), make_assign_statement(), MakeBinaryCall(), and PLUS_OPERATOR_NAME.
Referenced by hpfc_buffer_packing().
void hpfc_algorithm_row_echelon | ( | Psysteme | syst, |
list | scanners, | ||
Psysteme * | pcond, | ||
Psysteme * | penum | ||
) |
this should improve conditions?
syst | yst |
scanners | canners |
pcond | cond |
penum | enum |
Definition at line 127 of file io-compile.c.
References algorithm_row_echelon_generic(), base, base_rm, entity_list_to_base(), get_bool_property(), and sc_find_equalities().
Referenced by generate_io_collect_or_update(), hpf_remapping(), and processor_loop().
void hpfc_algorithm_tiling | ( | Psysteme | syst, |
list | processors, | ||
list | scanners, | ||
Psysteme * | pcondition, | ||
Psysteme * | pproc_echelon, | ||
Psysteme * | ptile_echelon | ||
) |
syst | yst |
processors | rocessors |
scanners | canners |
pcondition | condition |
pproc_echelon | proc_echelon |
ptile_echelon | tile_echelon |
Definition at line 689 of file io-compile.c.
References algorithm_tiling(), base_rm, DEBUG_BASE, DEBUG_SYST, and entity_list_to_base().
Referenced by generate_io_collect_or_update().
expression hpfc_array_bound | ( | entity | array, |
bool | upper, | ||
int | dim | ||
) |
array | rray |
upper | pper |
dim | im |
Definition at line 516 of file run-time.c.
References array, bound_parameter_name(), LOWER, MakeCharacterConstantExpression(), and UPPER.
Referenced by array_bounds_list(), caller_list_of_bounds(), and declaration_with_overlaps().
statement hpfc_broadcast_if_necessary | ( | entity | array, |
entity | trg, | ||
entity | lid, | ||
entity | proc, | ||
bool | is_lazy | ||
) |
lazy or not...
array | rray |
trg | rg |
lid | id |
proc | roc |
is_lazy | s_lazy |
Definition at line 404 of file generate-util.c.
References array, buffer_full_condition(), CONS, entity_to_expression(), entity_undefined, hpfc_broadcast_buffers(), hpfc_name_to_entity(), hpfc_packing_of_current__buffer(), make_block_statement(), make_continue_statement(), make_test(), NIL, not_expression, SND_NOT_INIT, STATEMENT, and test_to_statement.
Referenced by gen().
expression hpfc_buffer_reference | ( | entity | array, |
entity | index | ||
) |
returns a reference to the typed common hpfc_buffer buffer, that suits array basic type and with index as an index.
index variable
array | rray |
index | array to select the right typed buffer |
Definition at line 267 of file generate-util.c.
References array, BUFFER, CONS, entity_to_expression(), EXPRESSION, hpfc_buffer_entity(), make_reference(), NIL, and reference_to_expression().
Referenced by hpfc_buffer_packing().
whether call c inplies a distributed argument
no intrinsics
else checks for distributed arguments
Definition at line 645 of file dynamic.c.
References array_distributed_p(), call_arguments, call_function, entity_initial, f(), find_ith_parameter(), gen_length(), hpf_directive_entity_p(), and value_intrinsic_p.
Referenced by prescription_filter().
void hpfc_check_for_similarities | ( | list | le | ) |
check all dynamic arrays for some similars...
of entity
similar bases
le | e |
Definition at line 269 of file dynamic.c.
References array, array_distributed_p(), check_for_similarity(), CONS, entities_list, ENTITY, entity_name, gen_free_list(), gen_in_list_p(), gen_once(), load_dynamic_hpf(), load_similar_mapping(), MAP, NIL, pips_assert, pips_debug, and primary_entity_p.
Referenced by handle_hpf_directives().
what: closes the hpf compiler execution. to be called by pipsmake. input: the program (workspace) name. output: none. side effects:
global informations
not close, because it would free the memory and pipsdbm will run into troubles when trying to free the resource...
??? the next function is in pipsmake... (should be in pipsdbm only, but pipsmake manages its own cache which must be destroyed also...
fake
name | ame |
Definition at line 798 of file hpfc.c.
References compile_common(), DB_PUT_FILE_RESOURCE, debug_off, debug_on, gen_map(), hpfc_error_handler(), load_hpfc_status(), NO_FILE, pips_debug, put_generated_resources_for_program(), reset_hooks_register(), reset_hooks_unregister(), save_hpfc_status(), and set_string_property().
void hpfc_close_dummy_to_prime | ( | void | ) |
Definition at line 168 of file build-system.c.
Referenced by compile_module().
what: compile a common, that is generate the common for both host and nodes. how: generate files to be included. input: a common name. output: none. side effects:
name | ame |
Definition at line 769 of file hpfc.c.
References compile_common(), debug_off, debug_on, hpfc_error_handler(), load_hpfc_status(), local_name_to_top_level_entity(), pips_debug, reset_hooks_register(), reset_hooks_unregister(), save_hpfc_status(), and set_string_property().
bool hpfc_compile(string name)
what: hpf compile module name. to be called by pipsmake. input: the name of the module to compile. output: none side effects: (many)
just fake for pipsmake...
for callers
name | ame |
Definition at line 699 of file hpfc.c.
References compile_a_pure_function(), compile_a_special_io_function(), compile_module(), CONTINUE_FUNCTION_NAME, DB_PUT_FILE_RESOURCE, debug_off, debug_on, entity_intrinsic(), fortran_library_entity_p(), hpf_directive_entity_p(), hpf_pure_p(), hpfc_entity_reduction_p(), hpfc_error_handler(), hpfc_special_fake(), hpfc_special_io(), load_hpfc_status(), module, module_name_to_entity(), NO_FILE, pips_debug, reset_current_module_entity(), reset_hooks_register(), reset_hooks_unregister(), save_hpfc_status(), set_current_module_entity(), set_string_property(), store_new_host_variable(), and store_new_node_variable().
void hpfc_compile_error_handler | ( | void | ) |
Definition at line 644 of file compile.c.
Referenced by hpfc_error_handler().
LALPHAi == ALPHAi
LALPHAi = ALPHAi - ALPHAi_min + 1
(|a|==1) LALPHA_i == DELTA_j + 1 generalized to: (|a|!=1) |a| * (LALPHA_i - 1) + IOTA_j == DELTA_j 0 <= IOTA_j < |a|
IOTA is not needed
LALPHA_i == N* (GAMMA_j - GAMMA_0) + DELTA_j + 1
LALPHA_i = iceil(N,|a|) * (GAMMA_j - GAMMA_0) + SIGMA_j +1 DELTA_j = |a|*SIGMA_j + IOTA_j 0 <= IOTA_j < |a|
array | rray |
Definition at line 533 of file build-system.c.
References abs, array, array_distributed_p(), array_to_template, contrainte_make(), entity_undefined, get_alignment(), get_distribution(), get_entity_dimensions(), get_ith_array_dummy(), get_ith_auxiliary_dummy(), get_ith_block_dummy(), get_ith_cycle_dummy(), get_ith_dim_new_declaration(), get_ith_local_dummy(), get_ith_shift_dummy(), iceil, int_to_value, is_hpf_newdecl_alpha, is_hpf_newdecl_beta, is_hpf_newdecl_delta, is_hpf_newdecl_gamma, is_hpf_newdecl_none, max, min, new_declaration_tag(), NumberOfDimension(), pips_assert, pips_internal_error, sc_add_egalite(), sc_add_inegalite(), sc_creer_base(), sc_rn(), TCST, template_to_processors, VALUE_MONE, VALUE_ONE, VALUE_ZERO, vect_make(), vect_new(), and VECTEUR_NUL.
Referenced by entity_to_new_declaration().
Psysteme hpfc_compute_unicity_constraints(e) entity e should be an array;.
equations for non aligned template dimensions are computed: ???
theta_i - lower_template_i == 0
Definition at line 360 of file build-system.c.
References align_alignment, align_template, alignment_undefined, array_distributed_p(), contrainte_make(), dimension_lower, entity_ith_dimension(), FindAlignmentOfTemplateDim(), get_ith_template_dummy(), HpfcExpressionToInt(), int_to_value, load_hpf_alignment(), NumberOfDimension(), pips_assert, sc_add_egalite(), sc_creer_base(), sc_new(), TCST, VALUE_ONE, vect_make(), and VECTEUR_NUL.
Referenced by generate_distributed_io_system().
bool hpfc_current_statement_undefined_p | ( | void | ) |
void hpfc_directives_error_handler | ( | void | ) |
the local stack is used to retrieve the current statement while scanning the AST with gen_recurse.
Definition at line 109 of file directives.c.
Referenced by hpfc_error_handler().
bool hpfc_dynamic_directives | ( | const | string | ) |
string | ame |
Definition at line 681 of file hpfc.c.
References hpfc_directives_handler().
true if a given call is a call to reduction function. ??? a generic function name should be managed here?
Definition at line 82 of file special_cases.c.
References find_reduction(), and module_local_name().
Referenced by call_reduction_p(), hpfc_compile(), and hpfc_directives_handler().
void hpfc_fclose | ( | FILE * | f, |
string | name | ||
) |
name | ame |
Definition at line 341 of file compile.c.
References base, f(), fprintf(), free(), pips_basename(), and safe_fclose().
Referenced by generate_hpf_remapping_file(), put_generated_resources_for_common(), put_generated_resources_for_module(), and put_generated_resources_for_program().
bool hpfc_filter | ( | const | string | ) |
string | ame |
Definition at line 594 of file hpfc.c.
References concatenate(), db_get_current_workspace_directory(), db_get_file_resource, DB_PUT_FILE_RESOURCE, debug_off, debug_on, directive_in_file_p(), file_name, free(), hpf_directive_string_p(), hpfc_error_handler(), HPFC_FILTERED_SUFFIX, pips_debug, reset_hooks_register(), reset_hooks_unregister(), safe_system(), and strdup().
FILE* hpfc_fopen | ( | string | name | ) |
name | ame |
Definition at line 329 of file compile.c.
References base, f(), fprintf(), free(), pips_basename(), and safe_fopen().
Referenced by generate_hpf_remapping_file(), put_generated_resources_for_common(), put_generated_resources_for_module(), and put_generated_resources_for_program().
ld | d |
send | end |
lazy | azy |
Definition at line 208 of file generate-util.c.
References CONS, copy_expression(), entity_to_expression(), EXPRESSION, hpfc_lazy_message(), hpfc_message(), hpfc_name_to_entity(), make_reference(), NIL, NODETIDS, RECV_CHANNELS, reference_to_expression(), and SEND_CHANNELS.
Referenced by broadcast(), gen(), and hpfc_lazy_packing().
what: initialize the hpfc status for a program. input: the program (workspace) name. output: none. side effects:
vars local to commons
drop hpfc specials
name | ame |
Definition at line 503 of file hpfc.c.
References db_get_directory_name_for_module(), debug_off, debug_on, free(), hpfc_error_handler(), HPFC_PACKAGE, init_hpfc_status(), make_empty_program(), make_language_fortran(), pips_debug, reset_hooks_register(), reset_hooks_unregister(), save_hpfc_status(), set_bool_property(), set_string_property(), and WORKSPACE_SRC_SPACE.
void hpfc_init_dummy_to_prime | ( | void | ) |
Definition at line 155 of file build-system.c.
Referenced by compile_module().
void hpfc_init_run_time_entities | ( | void | ) |
to be seen from outside of this file
they are declared as variables to avoid redefinitions ??? this fools pips typing (functions/variables and so) just okay for the pretty printer...
why not
dimensions are updated
Definition at line 751 of file run-time.c.
References CONS, current, DIMENSION, entity_type, find_or_create_typed_entity(), HPFC_PACKAGE, int_to_expression(), is_end, is_fun, is_ifn, is_iof, is_sub, is_var, make_dimension(), MakeRunTimeSupportFunction(), MakeRunTimeSupportSubroutine(), NIL, pips_debug, pips_internal_error, RTSTable, RTSTable_initialized_p, type_variable, and variable_dimensions.
Referenced by hpfc_directives_handler(), and set_resources_for_module().
2 args to pvmfinitsend
lazy | azy |
Definition at line 229 of file generate-util.c.
References BUFID, CONS, entity_to_expression(), EXPRESSION, hpfc_make_call_statement(), hpfc_name_to_entity(), init, LAZY_SEND, make_block_statement(), NIL, pvm_encoding_option(), PVM_INITSEND, set_logical, and STATEMENT.
Referenced by gen().
bool hpfc_install(string name)
what: install generated files in a directory. done for wpips. how: all in the hpfc_install shell script. input: program name. output: none. side effects:
name | ame |
Definition at line 838 of file hpfc.c.
References concatenate(), db_get_current_workspace_directory(), db_get_current_workspace_name(), DB_PUT_FILE_RESOURCE, debug_off, debug_on, NO_FILE, pips_debug, and safe_system().
bool hpfc_integer_constant_expression_p | ( | expression | e, |
int * | pi | ||
) |
just to avoid a gcc warning
pi | i |
Definition at line 514 of file align-checker.c.
References expression_normalized, is_normalized_complex, is_normalized_linear, NORMALIZE_EXPRESSION, normalized_linear, normalized_tag, normalized_undefined_p, pips_internal_error, TCST, VALUE_TO_INT, vect_coeff(), vect_del_var(), vect_rm(), and vect_size().
Referenced by align_check(), compute_entity_to_declaration_constraints(), empty_range_p(), fprint_range(), lrange_larger_p(), safe_static_domain_bound(), and sprint_range().
Definition at line 828 of file run-time.c.
References entity_local_name(), find_entry_by_name(), is_ifn, and RunTimeSupportDescriptor::what.
Definition at line 836 of file run-time.c.
References entity_local_name(), find_entry_by_name(), is_iof, and RunTimeSupportDescriptor::what.
Referenced by only_io_call().
void hpfc_io_util_error_handler | ( | void | ) |
??? neglect expression side effects...
Definition at line 82 of file io-util.c.
Referenced by hpfc_error_handler().
statement hpfc_lazy_buffer_packing | ( | entity | , |
entity | , | ||
entity | , | ||
entity | , | ||
entity(*)(void) | , | ||
bool | , | ||
bool | |||
) |
returns if (LAZY_{SEND,RECV}) then
snd | nd |
then | hen |
Definition at line 176 of file generate-util.c.
References entity_to_expression(), hpfc_name_to_entity(), LAZY_RECV, LAZY_SEND, make_empty_statement, make_test(), and test_to_statement.
Referenced by broadcast(), and hpfc_lazy_message().
returns the entity to which e is attached, that is first a common, then a function...
Definition at line 462 of file run-time.c.
References entity_in_common_p(), entity_storage, entity_undefined, formal_function, pips_assert, ram_function, ram_section, ram_undefined, storage_formal, storage_formal_p, storage_ram, storage_ram_p, storage_return, storage_return_p, and storage_rom_p.
Referenced by hpfc_main_entity_name(), and list_of_distributed_arrays_for_module().
const char* hpfc_main_entity_name | ( | entity | e | ) |
returns the name of the entity e belongs too (common, function...)
Definition at line 479 of file run-time.c.
References hpfc_main_entity(), and module_local_name().
Referenced by bound_parameter_name().
what: compile the generated and installed code. for wpips. how: system call to $HPFC_MAKE input: the workspace name (which is not used) output: none. side effects: may stop if can't execute bugs or features:
name | ame |
Definition at line 864 of file hpfc.c.
References concatenate(), db_get_current_workspace_directory(), debug_off, debug_on, pips_debug, and safe_system().
statement hpfc_make_call_statement(e, l) generate a call statement to function e, with expression list l as an argument.
Definition at line 318 of file run-time.c.
References entity_undefined_p, instruction_to_statement(), is_instruction_call, make_call(), make_instruction(), and pips_assert.
Referenced by add_pvm_init_and_end(), generate_subarray_shift(), hpfc_hcast(), hpfc_hmessage(), hpfc_initsend(), hpfc_message(), hpfc_nrecv(), hpfc_nsend(), hpfc_packing_of_current__buffer(), io_efficient_compile(), st_call_send_or_receive(), st_compute_current_computer(), st_compute_current_owners(), st_compute_neighbour(), st_generate_packing(), and statement_compute_bounds().
statement hpfc_message | ( | expression | tid, |
expression | channel, | ||
bool | send | ||
) |
tid | id |
channel | hannel |
send | end |
Definition at line 152 of file generate-util.c.
References BUFID, CONS, copy_expression(), entity_to_expression(), EXPRESSION, hpfc_add_2(), hpfc_make_call_statement(), hpfc_name_to_entity(), INFO, make_block_statement(), NIL, PVM_RECV, PVM_SEND, and STATEMENT.
Referenced by hpfc_generate_message(), and hpfc_lazy_message().
else
to avoid a gcc warning
module | odule |
Definition at line 126 of file host_node_entities.c.
References host_module, HOST_NAME, module, node_module, NODE_NAME, pips_internal_error, and string_undefined.
entity hpfc_name_to_entity | ( | const char * | name | ) |
just to avoid a gcc warning
name | ame |
Definition at line 817 of file run-time.c.
References entity_undefined, find_entry_by_name(), RunTimeSupportDescriptor::object, and pips_internal_error.
Referenced by add_pvm_init_and_end(), broadcast(), buffer_full_condition(), define_node_processor_id(), elements_loop(), expr_compute_local_index(), gen(), generate_io_statements_for_shared_arrays(), generate_remapping_code(), generate_remapping_guard(), GENERATION(), hpfc_broadcast_if_necessary(), hpfc_buffer_entity(), hpfc_buffer_initialization(), hpfc_buffer_packing(), hpfc_compute_lid(), hpfc_generate_message(), hpfc_hcast(), hpfc_hmessage(), hpfc_initsend(), hpfc_lazy_buffer_packing(), hpfc_lazy_guard(), hpfc_lazy_message(), hpfc_lazy_packing(), hpfc_message(), hpfc_nrecv(), hpfc_nsend(), hpfc_translate_call_with_distributed_args(), if_different_pe_and_not_twin(), io_efficient_compile(), live_mapping_expression(), make_mypos_expression(), make_rectangular_area(), mylid_ne_lid(), processor_loop(), set_array_status_to_target(), set_resources_for_module(), st_compute_current_computer(), st_compute_current_owners(), st_compute_neighbour(), and statement_compute_bounds().
module | odule |
Definition at line 632 of file compile.c.
References AddEntityToCurrentModule(), copy_basic(), make_new_scalar_variable(), and module.
Referenced by extract_lattice(), generate_copy_loop_nest(), loop_flt(), and NormalizeCodeForHpfc().
list hpfc_order_variables(list)
the input list of entities is ordered so that: PSI_i's, GAMMA_i's, DELTA_i's, IOTA_i's, ALPHA_i's, LALPHA_i's...
reverse!
le | e |
number_first | umber_first |
Definition at line 629 of file io-compile.c.
References CONS, ENTITY, gen_free_list(), gen_in_list_p(), gen_length(), gen_nconc(), get_ith_array_dummy(), get_ith_block_dummy(), get_ith_cycle_dummy(), get_ith_local_dummy(), get_ith_processor_dummy(), get_ith_shift_dummy(), hpfc_order_specific_variables(), MAP, NIL, and pips_assert.
Referenced by put_variables_in_ordered_lists().
CALL (pvmtype) HPFC {,UN}PACK.
array | rray |
pack | ack |
Definition at line 395 of file generate-util.c.
References array, BUFPCK, BUFUPK, hpfc_buffer_entity(), hpfc_make_call_statement(), and NIL.
Referenced by hpfc_broadcast_if_necessary(), hpfc_hcast(), hpfc_hmessage(), hpfc_nrecv(), and hpfc_nsend().
file | ile |
module | odule |
stat | tat |
Definition at line 393 of file compile.c.
References debug_off, debug_on, free_text(), hpfc_common_hook(), hpfc_head_hook(), module, print_text(), reset_prettyprinter_common_hook(), reset_prettyprinter_head_hook(), set_prettyprinter_common_hook(), set_prettyprinter_head_hook(), and text_module().
Referenced by put_generated_resources_for_module().
file | ile |
module | odule |
common | ommon |
Definition at line 154 of file debug-util.c.
References debug_off, debug_on, free_text(), module, print_text(), and text_common_declaration().
Referenced by put_generated_resources_for_common().
void hpfc_print_file | ( | string | file_name | ) |
file_name | ile_name |
Definition at line 169 of file debug-util.c.
References concatenate(), db_get_current_workspace_directory(), file_name, and safe_system().
Referenced by put_generated_resources_for_common(), put_generated_resources_for_module(), and put_generated_resources_for_program().
what: run the program. how: system call sut $HPFC_MAKE... input: none. output: none. side effects:
name | ame |
Definition at line 889 of file hpfc.c.
References concatenate(), db_get_current_workspace_directory(), debug_off, debug_on, pips_debug, and safe_system().
void hpfc_simplify_condition(psc, stat, move)
remove conditions that are not usefull from *psc, i.e. that are redundent with pre/post conditions depending on when the movement is done
psc | sc |
stat | tat |
move | ove |
Definition at line 724 of file io-compile.c.
References extract_nredund_subsystem(), sc_rm(), and statement_context().
Referenced by generate_io_collect_or_update().
void hpfc_special_cases_error_handler | ( | void | ) |
Definition at line 705 of file special_cases.c.
Referenced by hpfc_error_handler().
Definition at line 91 of file hpfc.c.
References f(), gen_in_list_p(), and the_fakes_object.
Referenced by hpfc_compile().
Definition at line 77 of file hpfc.c.
References f(), and gen_in_list_p().
Referenced by hpfc_compile(), and only_io_call().
bool hpfc_static_directives | ( | const | string | ) |
string | ame |
Definition at line 676 of file hpfc.c.
References hpfc_directives_handler().
??? only simple calls are handled.
imbrication may cause problems. ??? should recurse thru all the calls at a call instruction... the call. (not necessarily an instruction)
of remapping
of expression
the substitution in the call will be performed at the propagation phase of dynamic arrays, later on.
add the renaming in the list. ??? should be added only once! what about call(A,A)...
should always be the case
of statement
Do not forget to move forbidden information associated with block:
c | the statement the call belongs to |
Definition at line 687 of file dynamic.c.
References add_a_dynamic(), add_once_to_renaming_list(), array_distributed_p(), array_synonym_aligned_as(), call_arguments, call_function, call_to_statement, CAR, conformant_entities_p(), CONS, copy_align(), DEBUG_STAT, entity_name, entity_to_expression(), EXPRESSION, expression_to_entity(), f(), find_ith_parameter(), fix_sequence_statement_attributes(), gen_length(), gen_nconc(), HPF_PREFIX, hpfc_name_to_entity(), instruction_to_statement(), load_hpf_alignment(), make_call(), make_instruction_block(), MAP, NIL, pips_assert, pips_debug, POP, RENAME_SUFFIX, RENAMING, renaming_new, renaming_old, set_entity_as_dynamic(), STATEMENT, and statement_instruction.
Referenced by prescription_filter().
array | rray |
Definition at line 767 of file build-system.c.
References array, generate_system_for_equal_variables(), get_ith_array_dummy(), get_ith_region_dummy(), and variable_entity_dimension().
Referenced by generate_distributed_io_system(), and generate_shared_io_system().
void hpfc_util_error_handler | ( | void | ) |
removes IF (.TRUE.) THEN and DO X=n, n
Definition at line 785 of file hpfc-util.c.
Referenced by hpfc_error_handler().
int HpfcExpressionToInt | ( | expression | e | ) |
HpfcExpressionToInt(e)
uses the normalized value if possible.
just to avoid a gcc warning
Definition at line 569 of file hpfc-util.c.
References expression_integer_value(), expression_normalized, ifdebug, intptr_t, normalized_linear, normalized_linear_p, normalized_undefined, pips_internal_error, print_expression(), TCST, VALUE_TO_INT, vect_coeff(), and vect_size().
Referenced by align_check(), array_access_to_array_ranges(), array_ranges_to_template_ranges(), complementary_range(), compute_receive_content(), compute_receive_domain(), ComputeNewSizeOfIthDimension(), create_init_common_param_for_arrays(), create_init_common_param_for_processors(), create_init_common_param_for_templates(), create_parameters_h(), DistributionParameterOfArrayDim(), expr_compute_local_index(), generate_one_message(), get_alignment(), get_distribution(), get_ith_dim_new_declaration(), global_array_cell_to_local_array_cell(), handle_set_directive(), hpfc_compute_align_constraints(), hpfc_compute_distribute_constraints(), hpfc_compute_unicity_constraints(), loop_filter(), make_guard_expression(), NormalizeOneTemplateDistribution(), overlap_redefine_expression(), processor_number(), same_alignment_p(), shape_one_message(), simple_indices_p(), template_cell_local_mapping(), and template_ranges_to_processors_ranges().
void hpfcompile | ( | const char * | module_name | ) |
Compiler call, obsole.
left here for allowing linking
module_name | odule_name |
Definition at line 601 of file compile.c.
References debug_off, debug_on, module_name(), pips_debug, and pips_internal_error.
??? could check that the given call is a constant.
syn | yn |
Definition at line 156 of file compiler-util.c.
References CONS, EXPRESSION, expression_syntax, is_syntax_call, is_syntax_range, is_syntax_reference, MAP, NIL, pips_assert, pips_internal_error, reference_indices, SYNTAX, syntax_reference, syntax_reference_p, and syntax_tag.
Referenced by lIndicesOfRef().
void init_data_status | ( | void | ) |
Definition at line 300 of file declarations.c.
References init_hpf_alignment(), init_hpf_distribution(), and reset_hpf_object_lists().
Referenced by init_hpfc_status().
void init_dynamic_hpf | ( | void | ) |
void init_dynamic_locals | ( | void | ) |
DYNAMIC LOCAL DATA.
these static functions are used to store the remapping graph while it is built, or when optimizations are performed on it.
Definition at line 806 of file dynamic.c.
Referenced by handle_hpf_directives().
void init_dynamic_status | ( | void | ) |
DYNAMIC STATUS management.
Definition at line 81 of file dynamic.c.
References init_dynamic_hpf(), init_maybeuseful_mappings(), init_primary_entity(), init_renamings(), and init_similar_mapping().
Referenced by init_hpfc_status().
void init_entity_status | ( | void | ) |
Definition at line 85 of file host_node_entities.c.
References init_new_host(), init_new_node(), init_old_host(), and init_old_node().
Referenced by init_hpfc_status().
void init_host_and_node_entities | ( | void | ) |
both host and node modules are initialized with the same declarations than the compiled module, but the distributed arrays declarations...
which are not declared in the case of the host_module, and the declarations of which are modified in the node_module (call to NewDeclarationsOfDistributedArrays)...
First, the commons are updated
COMMONS
Then, the other entities
parameters are selected. I think they may be either functional of variable (if declared...) FC 15/09/93
VARIABLES
PARAMETERS
Definition at line 246 of file compile.c.
References add_a_common(), add_bound_arguments(), AddCommonToHostAndNodeModules(), AddEntityToDeclarations(), AddEntityToHostAndNodeModules(), current_module, debug(), debug_off, debug_on, drop_distributed_arguments(), ENTITY, entity_consistent_p(), entity_declarations, entity_initial, entity_name, entity_special_area_p(), entity_storage, entity_type, free_text(), get_current_module_entity(), host_module, ifdebug, load_new_host(), load_new_node(), MAP, NewDeclarationsOfDistributedArrays(), node_module, pips_debug, print_text(), storage_rom_p, text_declaration(), type_area_p, type_functional_p, type_variable_p, and value_symbolic_p.
Referenced by compile_module().
void init_hpf_alignment | ( | void | ) |
void init_hpf_distribution | ( | void | ) |
void init_hpf_number | ( | void | ) |
void init_hpf_number_status | ( | void | ) |
STANDARS STATIC MANAGEMENT.
functions: {init,get,set,reset,close}_hpf_number_status
Definition at line 128 of file declarations.c.
References init_currents(), and init_hpf_number().
Referenced by init_hpfc_status().
void init_hpf_reductions | ( | void | ) |
void init_maybeuseful_mappings | ( | void | ) |
void init_new_host | ( | void | ) |
void init_new_node | ( | void | ) |
void init_old_host | ( | void | ) |
void init_old_node | ( | void | ) |
void init_overlap_status | ( | void | ) |
void init_primary_entity | ( | void | ) |
void init_renamings | ( | void | ) |
void init_similar_mapping | ( | void | ) |
void init_the_dynamics | ( | void | ) |
compile an io statement
returned Node code
of effect
not implemented
stat | tat |
hp | statement to compile |
np | returned Host code |
Definition at line 911 of file io-compile.c.
References _intFMT, action_read_p, action_tag, action_write_p, add_declaration_to_host_and_link(), approximation_may_p, array, array_distributed_p(), bound_new_host_p(), CONS, copy_statement(), current_entity_is_updated_before_p(), current_entity_is_used_later_p(), debug_off, debug_on, DEBUG_STAT, effect_action, effect_any_reference, effect_approximation, empty_code_p(), entity_name, FOREACH, gen_length(), gen_nconc(), generate_io_collect_or_update(), get_bool_property(), hpfc_make_call_statement(), hpfc_name_to_entity(), io_effect_entity_p(), is_movement_collect, is_movement_update, load_rw_effects_list(), make_block_statement(), NIL, pips_assert, pips_debug, reference_variable, replicated_p(), STATEMENT, statement_number, and SYNCHRO.
Referenced by hpf_compiler().
Definition at line 200 of file compiler-util.c.
References MAP, reference_variable, SYNTAX, and syntax_reference.
Referenced by AddOnceToIndicesList(), and FindDefinitionsOf_rewrite().
whether a dimension is distributed or not.
array | rray |
pprocdim | procdim |
Definition at line 160 of file hpfc-util.c.
References align_alignment, align_template, alignment_templatedim, alignment_undefined_p, array, distribute_distribution, distribution_style, FindAlignmentOfDim(), FindDistributionOfDim(), load_hpf_alignment(), load_hpf_distribution(), and style_none_p.
Referenced by align_check(), atomize_one_message(), compute_receive_content(), generate_optimized_code_for_loop_nest(), loop_flt(), NewDeclarationOfDistributedArray(), number_of_distributed_dimensions(), shape_one_message(), simple_indices_p(), and subarray_shift_assignment_p().
array | rray |
Definition at line 178 of file hpfc-util.c.
References align_alignment, align_template, alignment_templatedim, alignment_undefined_p, array, distribute_distribution, distribution_style, FindAlignmentOfDim(), FindDistributionOfDim(), load_hpf_alignment(), load_hpf_distribution(), and style_block_p.
Referenced by add_bound_arguments(), caller_list_of_bounds(), create_parameters_h(), and declaration_with_overlaps().
bool ith_dim_replicated_p | ( | entity | , |
int | , | ||
list | , | ||
distribution | |||
) |
void kill_statement_number_and_ordering | ( | statement | s | ) |
Definition at line 232 of file hpfc-util.c.
References gen_recurse, gen_true(), statement_domain, and stmt_rwt().
Referenced by compile_module().
Definition at line 351 of file message-utils.c.
References MAP, MESSAGE, and message_larger_p().
Referenced by remove_stammering_messages().
computes the list of indices of the list of ref that are variables...
lsyn | syn |
Definition at line 147 of file compiler-util.c.
References AddOnceToIndicesList(), CAR, CDR, ENDP, IndicesOfRef(), and SYNTAX.
Referenced by hpf_compile_parallel_body().
list list_of_distributed_arrays | ( | void | ) |
Referenced by alive_arrays(), get_data_status(), list_of_distributed_arrays_for_module(), NewDeclarationsOfDistributedArrays(), print_aligns(), print_distributed_arrays(), and set_similar_mappings_for_updates().
returns the list of entities that are 'local' to module
module | odule |
Definition at line 72 of file declarations.c.
References CONS, ENTITY, hpfc_main_entity(), list_of_distributed_arrays(), MAP, module, and NIL.
Referenced by create_init_common_param_for_arrays(), create_parameters_h(), declaration_with_overlaps_for_module(), and root_statement_remapping_inits().
list list_of_processors | ( | void | ) |
Referenced by create_init_common_param_for_processors(), get_data_status(), max_size_of_processors(), and print_processors().
list list_of_templates | ( | void | ) |
Referenced by create_init_common_param_for_templates(), get_data_status(), print_distributes(), and print_templates().
module | odule |
le | e |
Definition at line 263 of file host_node_entities.c.
References CAR, CDR, CONS, ENDP, ENTITY, module, NewVariableForModule(), and NIL.
Referenced by hpf_compile_sequential_loop().
Referenced by add_dynamic_synonym(), array_synonym_aligned_as(), generate_all_liveness_but(), generate_dynamic_liveness_for_primary(), hpfc_check_for_similarities(), new_synonym(), and template_synonym_distributed_as().
Referenced by update_common_rewrite(), and update_loop_rewrite().
Referenced by align_check(), alive_arrays(), array_distribution_similar_p(), array_ranges_to_template_ranges(), array_synonym_aligned_as(), ComputeNewSizeOfIthDimension(), continue_propagation_p(), create_init_common_param_for_arrays(), expr_compute_local_index(), generate_system_for_distributed_variable(), get_alignment(), hpfc_compute_align_constraints(), hpfc_compute_unicity_constraints(), hpfc_translate_call_with_distributed_args(), ith_dim_distributed_p(), ith_dim_overlapable_p(), one_distribute_directive(), print_aligns(), processors_dim_replicated_p(), references_aligned_p(), replicated_p(), and template_dimension_of_array_dimension().
distribute load_hpf_distribution | ( | entity | ) |
Referenced by array_distribution_similar_p(), ComputeNewSizeOfIthDimension(), conformant_templates_p(), create_init_common_param_for_arrays(), create_init_common_param_for_templates(), DistributionParameterOfArrayDim(), expr_compute_local_index(), generate_system_for_distributed_variable(), get_distribution(), hpfc_compute_distribute_constraints(), ith_dim_distributed_p(), ith_dim_overlapable_p(), print_distributes(), processor_number(), processors_dim_replicated_p(), replicated_p(), template_ranges_to_processors_ranges(), and template_synonym_distributed_as().
Referenced by compile_reduction(), create_init_common_param_for_arrays(), create_init_common_param_for_processors(), create_init_common_param_for_templates(), define_node_processor_id(), expr_compute_local_index(), generate_all_liveness_but(), generate_dynamic_liveness_for_primary(), generate_optimized_code_for_loop_nest(), generate_remapping_code(), generate_remapping_guard(), generate_subarray_shift(), hpfc_broadcast_buffers(), hpfc_compute_lid(), if_different_pe_and_not_twin(), make_guard_expression(), remapping_file_name(), set_array_status_to_target(), set_live_status(), st_compute_current_computer(), and st_compute_current_owners().
Referenced by handle_hpf_reduction(), and handle_reduction_directive().
Referenced by generate_dynamic_liveness_management(), and propagate_maybeuseful_mappings().
Referenced by add_declaration_to_host_and_link(), AddEntityToHostAndNodeModules(), debug_host_node_variables(), generate_read_of_ref_for_all(), generate_update_distributed_value_from_host(), generate_update_private_value_from_host(), init_host_and_node_entities(), NewVariableForModule(), put_generated_resources_for_common(), and update_object_for_module().
Referenced by AddEntityToHostAndNodeModules(), caller_list_of_bounds(), complementary_range(), compute_receive_content(), create_parameters_h(), debug_host_node_variables(), declaration_with_overlaps(), generate_c1_alpha(), generate_full_copy(), generate_get_value_locally(), generate_one_message(), generate_parallel_body(), generate_read_of_ref_for_all(), generate_read_of_ref_for_computer(), generate_receive_from_computer(), generate_send_to_computer(), generate_update_distributed_value_from_host(), generate_update_private_value_from_host(), generate_update_values_on_computer_and_nodes(), get_ith_dim_new_declaration(), init_host_and_node_entities(), NewDeclarationOfDistributedArray(), NewVariableForModule(), put_generated_resources_for_common(), set_similar_mappings_for_updates(), st_send_to_computer_if_necessary(), update_object_for_module(), and update_overlaps_in_caller().
Referenced by debug_host_node_variables(), old_name(), and STATIC_LIST_OF_HPF_OBJECTS().
Referenced by add_bound_arguments(), debug_host_node_variables(), old_name(), and STATIC_LIST_OF_HPF_OBJECTS().
Referenced by add_as_a_modified_variable(), add_as_a_used_dynamic_to_statement(), add_as_a_used_variable(), add_declaration_to_host_and_link(), add_dynamic_synonym(), alive_arrays(), array_distribution_similar_p(), create_init_common_param_for_arrays(), generate_copy_loop_nest(), generate_dynamic_liveness_management(), generate_remapping_code(), generate_remapping_guard(), initialize_reaching_propagation(), new_synonym(), propagation_on_remapping_graph(), regenerate_renamings(), reinitialize_reaching_mappings(), remapping_file_name(), remove_from_entities(), remove_not_remapped_leavings(), safe_load_primary_entity(), same_primary_entity_p(), set_array_status_to_target(), and update_runtime_for_remapping().
Referenced by clean_statement(), initial_alignment(), initialize_reaching_propagation(), one_align_directive(), one_distribute_directive(), regenerate_renamings(), remapping_compile(), and root_statement_remapping_inits().
Referenced by check_for_similarity(), create_parameters_h(), deal_with_similars(), generate_hpf_remapping_file(), hpfc_check_for_similarities(), set_live_status(), and set_similar_mappings_for_updates().
bool local_integer_constant_expression | ( | expression | e | ) |
true is the expression is locally constant, that is in the whole loop nest, the reference is not written.
??? not very portable thru pips...
Definition at line 64 of file align-checker.c.
References expression_normalized, expression_syntax, normalized_linear_p, reference_variable, syntax_reference, syntax_reference_p, and write_on_entity_p().
Referenced by align_check(), and simple_indices_p().
index | ndex |
Definition at line 390 of file compiler-util.c.
References current_loop_list, LOOP, loop_index, loop_range, MAP, and range_undefined.
Referenced by array_access_to_array_ranges(), and generate_one_message().
??? memory leak of some expressions
stat | tat |
lkref | kref |
lvref | vref |
Definition at line 793 of file message-utils.c.
References array, array_access_to_array_ranges(), array_ranges_to_template_ranges(), array_to_template, gen_free_list(), generate_guarded_statement(), reference_variable, template_ranges_to_processors_ranges(), and template_to_processors.
Referenced by Overlap_Analysis().
can look for formal equality...
??? something more intelligent could be expected
lr1 | r1 |
lr2 | r2 |
Definition at line 381 of file message-utils.c.
References assert, CAR, expression_equal_p(), gen_length(), hpfc_integer_constant_expression_p(), pips_debug, POP, RANGE, range_increment, range_lower, and range_upper.
Referenced by message_larger_p().
module | odule |
l | of anything |
Definition at line 256 of file host_node_entities.c.
References gen_full_copy_list(), module, and update_list_for_module().
Referenced by generate_c1_beta(), hpf_compile_call(), st_compute_current_computer(), and st_compute_current_owners().
used for compiling calls.
module | odule |
l | of expression |
Definition at line 237 of file host_node_entities.c.
References array_distributed_p(), CONS, copy_expression(), EXPRESSION, expression_to_entity(), gen_nreverse(), MAP, module, NIL, and update_list_for_module().
Referenced by hpf_compile_call().
bool make_guard_expression | ( | entity | proc, |
list | lrref, | ||
expression * | pguard | ||
) |
bool make_guard_expression(proc, lr, pguard)
compute the expression for the processors ranges lr guard. return true if not empty, false if empty.
empty match case
??? memory leak with the content of conjonction
MYPOS(i, procnum).EQ.nn
MYPOS(i, procnum).GE.(rloexpr)
MYPOS(i, procnum).LE.(rupexpr)
use of conjonction
no guard
proc | roc |
lrref | rref |
pguard | guard |
Definition at line 702 of file message-utils.c.
References CAR, CDR, CONS, dimension_lower, dimension_upper, entity_intrinsic(), entity_to_expression(), eq_expression, EXPRESSION, expression_list_to_conjonction(), expression_undefined, FindIthDimension(), ge_expression, gen_free_list(), gen_length(), HpfcExpressionToInt(), int_to_expression(), le_expression, load_hpf_number(), make_mypos_expression(), NIL, NumberOfDimension(), RANGE, range_lower, and range_upper.
Referenced by generate_guarded_statement().
void make_host_and_node_modules | ( | entity | module | ) |
compile.c
HOST and NODE empty routines...
Arity and result
then the variable corresponding to the function name must be created for those new functions. The overloaded basic is used to be sure that the variable will not be put in the declarations by the enforced coherency. ??? this issue could be managed by the coherency function ?
to allow the update of the call sites.
module | odule |
Definition at line 45 of file compile.c.
References bound_new_node_p(), concatenate(), entity_domain, entity_function_p(), entity_local_name(), entity_main_module_p(), entity_undefined_p, find_or_create_scalar_entity(), free(), gen_find_tabulated(), HOST_NAME, is_basic_overloaded, make_empty_subroutine(), make_language_fortran(), module, MODULE_SEP_STRING, node(), NODE_NAME, pips_assert, store_new_host_node_variable(), store_new_host_variable(), store_new_node_variable(), strdup(), and update_functional_as_model.
Referenced by compile_module().
void make_hpfc_current_mappings | ( | void | ) |
??? used with a temporary hack to differentiate array and templates
Definition at line 192 of file build-system.c.
Referenced by set_resources_for_module().
expression make_mypos_expression | ( | int | i, |
expression | exp | ||
) |
exp | xp |
Definition at line 782 of file message-utils.c.
References CONS, exp, EXPRESSION, hpfc_name_to_entity(), int_to_expression(), make_reference(), MYPOS, NIL, and reference_to_expression().
Referenced by make_guard_expression().
void make_only_io_map | ( | void | ) |
st | t |
var | ar |
Definition at line 597 of file special_cases.c.
References CONS, constraints_for_bounds(), constraints_to_loop_bound(), CONTRAINTE_UNDEFINED, contraintes_free(), entity_type, EXPRESSION, gen_length(), get_ith_region_dummy(), get_read_effect_area(), hpfc_name_to_entity(), IDIVIDE, load_statement_local_regions(), NIL, sc_dup(), sc_rm(), sc_transform_eg_in_ineg(), type_variable, and variable_dimensions.
Referenced by generate_subarray_shift().
expression make_reference_expression | ( | entity | , |
entity(*)(void) | |||
) |
void make_update_common_map | ( | void | ) |
Referenced by hpfc_ith_broadcast_function(), make_new_reduction_function(), and make_shift_subroutine().
creates a new statement for the given module that looks like the stat one, i.e.
same comment, same label, and so on. The goto table is updated. The instruction is also created. (is that really a good idea?)
stat | tat |
the_tag | he_tag |
Definition at line 203 of file hpfc-util.c.
References copy_extensions(), fix_statement_attributes_if_sequence(), is_instruction_sequence, loop_undefined, make_instruction(), make_sequence(), make_statement(), make_synchronization_none(), NIL, statement_comments, statement_extensions, statement_label, STATEMENT_NUMBER_UNDEFINED, STATEMENT_ORDERING_UNDEFINED, strdup(), string_undefined_p, and x.
Referenced by hpf_compile_block(), hpf_compile_call(), hpf_compile_parallel_loop(), hpf_compile_sequential_loop(), hpf_compile_test(), and hpf_compile_unstructured().
int max_size_of_processors | ( | void | ) |
Definition at line 120 of file inits.c.
References current_max, element_number(), ENTITY, entity_type, list_of_processors(), MAP, max, pips_assert, type_variable, type_variable_p, variable_basic, and variable_dimensions.
Referenced by create_common_parameters_h().
bool maybeuseful_mappings_undefined_p | ( | void | ) |
bool message_larger_p(m1, m2)
true if m1>=m2... (caution, it is only a partial order)
m1 | 1 |
m2 | 2 |
Definition at line 363 of file message-utils.c.
References lrange_larger_p(), message_array, message_content, message_dom, message_neighbour, TCST, value_ne, and vect_coeff().
Referenced by larger_message_in_list().
first kind of messages generation
a message is an array, a mixed content on the local array, a set of neighbours (in a Pvecteur) and an array section concerned.
here should be performed some message coalescing and/or aggregation: a first simple version could check for messages sent twice, and so on.
RECEIVE
Ro | o |
lRo | Ro |
Definition at line 724 of file messages.c.
References assert, debug(), fprint_lmessage(), fprintf(), gen_free_list(), gen_length(), gen_nconc(), generate_the_messages(), hpfc_warning, ifdebug, keep_non_empty_domain_messages(), keep_non_empty_messages_with_destination(), make_block_statement(), messages_atomization(), messages_generation(), messages_guards_and_neighbour(), messages_shaping(), NIL, RECEIVE, receive_messages_generation(), remove_stammering_messages(), and SEND.
Referenced by Overlap_Analysis().
Definition at line 474 of file dynamic.c.
References align_template, and copy_align().
Referenced by one_distribute_directive().
array | rray |
dim | im |
Definition at line 229 of file declarations.c.
References array, array_distributed_p(), entity_name, gen_nth(), HPF_NEWDECL, hpf_newdecl_tag, hpf_newdecls_dimensions, pips_assert, and pips_debug.
Referenced by block_distributed_p(), create_init_common_param_for_arrays(), expr_compute_local_index(), and hpfc_compute_entity_to_new_declaration().
bool new_host_undefined_p | ( | void | ) |
bool new_node_undefined_p | ( | void | ) |
void NewDeclarationsOfDistributedArrays | ( | void | ) |
this procedure generate the new declarations of every distributed arrays of the program, in order to minimize the amount of memory used.
The new declarations have to be suitable for the new index computation which is to be done dynamically...
Definition at line 676 of file declarations.c.
References array, ENTITY, entity_name, list_of_distributed_arrays(), MAP, NewDeclarationOfDistributedArray(), and pips_debug.
Referenced by init_host_and_node_entities().
module | odule |
Definition at line 283 of file host_node_entities.c.
References bound_new_host_p(), bound_new_node_p(), entity_name, entity_undefined, host_module, load_new_host(), load_new_node(), module, and pips_internal_error.
Referenced by hpf_compile_parallel_loop(), hpf_compile_sequential_loop(), and lNewVariableForModule().
void normalize_distribute | ( | entity | t, |
distribute | d | ||
) |
of distribution
Definition at line 408 of file declarations.c.
References distribute_distribution, distribute_processors, DISTRIBUTION, entity_name, MAP, normalize_first_expressions_of(), NormalizeOneTemplateDistribution(), NumberOfDimension(), and pips_user_error.
Referenced by one_distribute_directive().
void normalize_hpf_object | ( | entity | v | ) |
Definition at line 431 of file declarations.c.
References entity_type, and normalize_first_expressions_of().
void NormalizeCodeForHpfc | ( | statement | s | ) |
reference test
function call test
test condition test
range test
whileloop test
Definition at line 848 of file compile.c.
References atomize_as_required(), extract_distributed_non_constant_terms(), gen_false2(), hpfc_decision(), hpfc_new_variable(), normalize_all_expressions_of(), and test_atomization().
Referenced by compile_module().
the new entities for the common variables are created and inserted in the common. The declarations are updated.
the references within the program are updated with the new entities
module | odule |
stat | tat |
Definition at line 940 of file compile.c.
References AddEntityToModule(), area_layout, code_declarations, CONS, ENTITY, entity_code(), entity_in_common_p(), entity_name, entity_storage, entity_type, entity_undefined, gen_find_eq(), gen_free_list(), gen_insert_after(), MAP, module, NIL, pips_debug, ram_section, storage_ram, store_entity_update_common(), type_area, and update_common_references_in_obj().
Referenced by hpfc_directives_handler().
void NormalizeHpfDeclarations | ( | void | ) |
Definition at line 437 of file declarations.c.
References GiveToHpfObjectsTheirNumber(), ifdebug, and print_hpf_dir().
Referenced by compile_module().
int number_of_distributed_arrays | ( | void | ) |
declarations.c
Referenced by create_common_parameters_h().
int number_of_processors | ( | void | ) |
int number_of_templates | ( | void | ) |
bool old_host_undefined_p | ( | void | ) |
bool old_node_undefined_p | ( | void | ) |
void only_io_mapping_initialize | ( | statement | program | ) |
program | rogram |
Definition at line 163 of file io-util.c.
References debug_off, debug_on, MAKE_STATEMENT_MAPPING, only_io_mapping(), and set_only_io_map().
Referenced by set_resources_for_module().
check conditions and compile...
keeps only written references of which dimensions are block distributed, and indices simple enough (=> normalization of loops may be usefull). ??? bug: should also search for A(i,i) things that are forbidden...
ok distributed variable written !
must chose the computer among read references!
??? what about loop splitting
??? memory leak
??? memory leak
Now, we have the following situation: Wa: set of aligned written refs, the first of which is `‘the’' ref.
here is the situation now:
Wa set of aligned references written, Ra set of aligned references read, Ro set of nearly aligned references that suits the overlap analysis
messages handling
generate the local loop for every processor, given the global loop bounds. The former indexes have to be computed, and the loops are based upon new indexes, of which names have to be propagated in the body of the loop. This generation is to be based on the normalized form computed for every references of Ro, but it is direct for Ra and Wa, since new declarations implied that the alignment is performed for distributed indices. Not distributed dimensions indices have not to be touched, (at least if no new declarations are the common case)
stat | tat |
pstat | stat |
Definition at line 870 of file o-analysis.c.
References align_check(), aligned_p(), array, block_distributed_p(), CAR, CDR, choose_one_syntax_in_references_list(), CONS, CONSP, debug(), DEBUG_STAT, entity_empty_label(), entity_name, FindRefToDistArrayInStatement(), fprintf(), gen_free_list(), gen_length(), gen_nconc(), generate_optimized_code_for_loop_nest(), ifdebug, lblocks, LIST, lloop, loop_nest_guard(), lvect, make_block_statement(), make_continue_statement(), MAP, message_manageable_p(), messages_handling(), NIL, node_module, parallel_loop_nest_to_body(), pips_debug, pips_internal_error, print_reference(), reference_undefined, reference_variable, replicated_p(), RETURN, set_current_loops(), set_hpfc_current_statement(), simple_indices_p(), STATEMENT, SYNTAX, syntax_reference, and syntax_undefined.
Referenced by hpf_compile_loop().
bool overlap_status_undefined_p | ( | void | ) |
nothing was done for the first !
loop_nest | oop_nest |
pblocks | blocks |
ploops | loops |
Definition at line 336 of file compiler-util.c.
References blocks, CONS, gen_multi_recurse(), gen_true(), inner_body, instruction_loop_p, LIST, loop_domain, loop_filter(), loop_rewrite(), loops, n_levels, n_loops, NIL, pips_assert, sequence_domain, sequence_rewrite(), statement_instruction, and statement_undefined.
Referenced by full_copy_p(), and Overlap_Analysis().
bool primary_entity_undefined_p | ( | void | ) |
void print_align | ( | align | a | ) |
Fabien Coelho, May 1993.
Definition at line 38 of file debug-util.c.
References align_alignment, align_template, entity_name, fprintf(), gen_length(), gen_map(), and print_alignment().
Referenced by array_synonym_aligned_as(), ComputeNewSizeOfIthDimension(), one_align_directive(), and print_aligns().
void print_alignment | ( | alignment | a | ) |
Definition at line 47 of file debug-util.c.
References alignment_arraydim, alignment_constant, alignment_rate, alignment_templatedim, fprintf(), and print_expression().
Referenced by print_align().
void print_aligns | ( | void | ) |
Definition at line 61 of file debug-util.c.
References ENTITY, entity_name, fprintf(), list_of_distributed_arrays(), load_hpf_alignment(), MAP, and print_align().
Referenced by print_hpf_dir().
void print_distribute | ( | distribute | d | ) |
Definition at line 87 of file debug-util.c.
References distribute_distribution, distribute_processors, entity_name, fprintf(), gen_map(), and print_distribution().
Referenced by ComputeNewSizeOfIthDimension(), and print_distributes().
void print_distributed_arrays | ( | void | ) |
Definition at line 148 of file debug-util.c.
References fprintf(), gen_map(), list_of_distributed_arrays(), and print_entity_variable().
Referenced by print_hpf_dir().
void print_distributes | ( | void | ) |
Definition at line 73 of file debug-util.c.
References ENTITY, entity_name, fprintf(), list_of_templates(), load_hpf_distribution(), MAP, and print_distribute().
Referenced by print_hpf_dir().
void print_distribution | ( | distribution | d | ) |
Definition at line 97 of file debug-util.c.
References distribution_parameter, distribution_style, fprintf(), is_style_block, is_style_cyclic, is_style_none, pips_internal_error, print_expression(), and style_tag.
Referenced by print_distribute().
void print_hpf_dir | ( | void | ) |
Definition at line 121 of file debug-util.c.
References fprintf(), print_aligns(), print_distributed_arrays(), print_distributes(), print_processors(), and print_templates().
Referenced by NormalizeHpfDeclarations().
void print_processors | ( | void | ) |
Definition at line 142 of file debug-util.c.
References fprintf(), gen_map(), list_of_processors(), and print_entity_variable().
Referenced by print_hpf_dir().
void print_templates | ( | void | ) |
Definition at line 136 of file debug-util.c.
References fprintf(), gen_map(), list_of_templates(), and print_entity_variable().
Referenced by print_hpf_dir().
template | emplate |
dim | im |
Definition at line 462 of file hpfc-util.c.
References get_distribution().
int processor_number(template, tdim, tcell, pprocdim)
the processor number of a template cell, on dimension *pprocdim template dimension, template cell
just to avoid a gcc warning
template | emplate |
tdim | dim |
tcell | cell |
pprocdim | procdim |
Definition at line 492 of file hpfc-util.c.
References dimension_lower, distribute_distribution, distribute_processors, distribution_parameter, distribution_style, FindDistributionOfDim(), FindIthDimension(), HpfcExpressionToInt(), load_hpf_distribution(), SizeOfIthDimension(), style_block_p, style_cyclic_p, and style_none_p.
Referenced by aligned_p(), on_same_proc_p(), and template_ranges_to_processors_ranges().
old | ld |
new | ew |
is_array | s_array |
Definition at line 1096 of file dynamic.c.
References add_as_a_modified_variable(), add_as_a_used_variable(), array_modified, array_propagation, array_used, close_ctrl_graph_travel(), continue_propagation_p(), current, DEBUG_STAT, entity_name, entity_undefined, get_current_module_statement(), init_ctrl_graph_travel(), initial_statement, lazy_initialize_for_statement(), new_variable, next_ctrl_graph_travel(), old_variable, pips_debug, safe_load_primary_entity(), simple_switch_old_to_new(), and what_stat_debug.
Referenced by handle_prescriptive_directive(), initial_alignment(), one_align_directive(), and one_distribute_directive().
void put_generated_resources_for_common | ( | entity | common | ) |
common | ommon |
Definition at line 417 of file compile.c.
References create_init_common_param_for_arrays(), create_parameters_h(), db_get_current_workspace_directory(), entity_name, fprintf(), free(), full_name, HINC_SUFFIX, host_module, hpfc_fclose(), hpfc_fopen(), hpfc_print_common(), hpfc_print_file(), ifdebug, INIT_SUFFIX, load_new_host(), load_new_node(), module_local_name(), NINC_SUFFIX, node_module, PARM_SUFFIX, prefix, and src.
Referenced by compile_common().
void put_generated_resources_for_program | ( | string | ) |
expression pvm_what_option_expression | ( | entity | v | ) |
Definition at line 74 of file run-time.c.
References entity_basic(), entity_variable_p, MakeCharacterConstantExpression(), pips_assert, pvm_what_options(), and strdup().
Referenced by st_call_send_or_receive().
string pvm_what_options(b)
the pvm what option is given back as a string, fellowing the basic given.
Definition at line 86 of file run-time.c.
References basic_complex, basic_float, basic_int, basic_logical, basic_tag, is_basic_complex, is_basic_float, is_basic_int, is_basic_logical, is_basic_overloaded, is_basic_string, pips_internal_error, PVM_COMPLEX16, PVM_COMPLEX8, PVM_INTEGER2, PVM_INTEGER4, PVM_REAL4, PVM_REAL8, and PVM_STRING.
Referenced by hpfc_buffer_entity(), make_new_reduction_function(), make_packing_function(), make_reduction_function(), make_shift_subroutine(), and pvm_what_option_expression().
bool ref_to_dist_array_p | ( | void * | obj | ) |
Fabien Coelho, May 1993. Predicates true if there is a reference to a distributed array within obj
??? not very intelligent, should use the regions, the problem is that I should normalize the code before the pips analysis...
obj | bj |
Definition at line 48 of file hpfc-util.c.
References FindRefToDistArray(), gen_free_list(), and NIL.
Referenced by call_filter(), hpf_compile_call(), and test_atomization().
of expression
both references must be aligned to the same template and be of the same arity.
r1 | 1 |
r2 | 2 |
Definition at line 726 of file hpfc-util.c.
References align_template, alignments_compatible_p(), array_distributed_p(), EXPRESSION, expression_number_for_index(), expression_reference_p(), expression_syntax, gen_length(), load_hpf_alignment(), MAP, reference_indices, reference_variable, syntax_reference, and XDEBUG.
Referenced by full_copy_p().
list of already computed remappings...
exported interface
Definition at line 105 of file hpfc.c.
References MAP, REMAPPING, remapping_renaming, renaming_new, renaming_old, src, and x.
Referenced by remapping_compile().
void remapping_compile(s, hsp, nsp) statement s, *hsp, *nsp;
what: generates the remapping code for s. how: polyhedron technique. input: s, the statement. output: statements *hsp and *nsp, the host and SPMD node code. side effects: (none?) bugs or features: idem Node
of statements
nothing for host
comment at the end
dynamic liveness management if required
remapping codes (indirect thru include)
KILL => status update
comment at the beginning
block of remaps for the nodes
hsp | initial statement in the source code |
nsp | Host Statement Pointer |
Definition at line 1302 of file remapping.c.
References add_remapping_as_used(), comment(), concatenate(), CONS, debug_off, debug_on, DEBUG_STAT, entity_name, free(), generate_dynamic_liveness_management(), generate_hpf_remapping_file(), generate_remapping_include(), get_bool_property(), insert_comments_to_statement(), load_renamings(), make_block_statement(), make_empty_statement, MAP, NIL, pips_debug, remapping_already_computed_p(), RENAMING, renaming_new, renaming_old, set_array_status_to_target(), STATEMENT, strdup(), and what_stat_debug.
Referenced by hpf_compiler().
ps | s |
plv | lv |
Definition at line 345 of file io-compile.c.
References ENTITY, entity_local_name(), gen_free_list(), MAP, NIL, NO_OFL_CTRL, and pips_debug.
Referenced by clean_the_system().
psyst | syst |
plvars | lvars |
Definition at line 245 of file io-compile.c.
References BASE_NULLE, base_rm, CONS, contrainte_var_min_coeff(), ENTITY, entity_local_name(), gen_free_list(), MAP, NIL, NO_OFL_CTRL, pips_assert, pips_debug, sc_creer_base(), VALUE_MONE, VALUE_ONE, value_one_p, vect_new(), and vect_rm().
Referenced by clean_shared_io_system(), and clean_the_system().
bool renamings_undefined_p | ( | void | ) |
replicated_p
check whether the distributed array e is replicated or not.
Definition at line 96 of file hpfc-util.c.
References align_alignment, align_template, array_distributed_p(), CAR, distribute_distribution, DISTRIBUTION, ith_dim_replicated_p(), load_hpf_alignment(), load_hpf_distribution(), NumberOfDimension(), pips_assert, and POP.
Referenced by generate_update_distributed_value_from_host(), generate_update_values_on_computer_and_nodes(), generate_update_values_on_nodes(), hpfc_broadcast_buffers(), if_different_pe_and_not_twin(), io_efficient_compile(), Overlap_Analysis(), st_receive_from(), st_send_to_computer_if_necessary(), and st_send_to_host_and_nodes().
void reset_current_loops | ( | void | ) |
Definition at line 377 of file compiler-util.c.
References current_loop_list, gen_free_list(), and NIL.
void reset_data_status | ( | void | ) |
Definition at line 320 of file declarations.c.
References reset_hpf_alignment(), reset_hpf_distribution(), and reset_hpf_object_lists().
Referenced by reset_hpfc_status().
void reset_dynamic_hpf | ( | void | ) |
void reset_dynamic_status | ( | void | ) |
Definition at line 90 of file dynamic.c.
References reset_dynamic_hpf(), reset_maybeuseful_mappings(), reset_primary_entity(), and reset_renamings().
Referenced by reset_hpfc_status().
void reset_entity_status | ( | void | ) |
Definition at line 110 of file host_node_entities.c.
References reset_new_host(), reset_new_node(), reset_old_host(), and reset_old_node().
Referenced by reset_hpfc_status().
void reset_hpf_alignment | ( | void | ) |
void reset_hpf_distribution | ( | void | ) |
void reset_hpf_number | ( | void | ) |
void reset_hpf_number_status | ( | void | ) |
Definition at line 142 of file declarations.c.
References init_currents(), and reset_hpf_number().
Referenced by reset_hpfc_status().
void reset_hpf_object_lists | ( | void | ) |
Definition at line 91 of file declarations.c.
References NIL.
Referenced by free_hpf_object_lists(), init_data_status(), and reset_data_status().
void reset_hpf_reductions | ( | void | ) |
void reset_hpfc_current_statement | ( | void | ) |
void reset_maybeuseful_mappings | ( | void | ) |
void reset_new_host | ( | void | ) |
void reset_new_node | ( | void | ) |
void reset_old_host | ( | void | ) |
void reset_old_node | ( | void | ) |
void reset_only_io_map | ( | void | ) |
void reset_overlap_status | ( | void | ) |
void reset_primary_entity | ( | void | ) |
void reset_renamings | ( | void | ) |
void reset_similar_mapping | ( | void | ) |
void reset_the_dynamics | ( | void | ) |
void reset_update_common_map | ( | void | ) |
returns the initialization statement: must initialize the status and liveness of arrays
of statement
of entity
LIVENESS(...) = .TRUE. STATUS(...) = ...
LIVENESS(...) = .FALSE.
root | oot |
Definition at line 1265 of file remapping.c.
References array, bound_dynamic_hpf_p(), CONS, ENTITY, gen_free_list(), generate_all_liveness(), get_current_module_entity(), list_of_distributed_arrays_for_module(), load_renamings(), make_block_statement(), MAP, NIL, primary_entity_p, RENAMING, renaming_new, STATEMENT, and update_runtime_for_remapping().
Referenced by hpf_compiler().
HPFC module by Fabien COELHO.
This file provides functions used by directives.c to deal with dynamic mappings (re*). It includes keeping track of variables tagged as dynamic, and managing the static synonyms introduced to deal with them in HPFC. DYNAMIC MANAGEMENT
the synonyms of a given array are stored in a entities. What I intend as a synonym is a version of the array or template which is distributed or aligned in a different way. the renamings are associated to the remapping statements here.
Definition at line 61 of file dynamic.c.
References bound_dynamic_hpf_p(), entity_local_name(), load_primary_entity(), and pips_user_error.
Referenced by alive_arrays(), continue_propagation_p(), and propagate_synonym().
e1 | 1 |
e2 | 2 |
Definition at line 70 of file dynamic.c.
References bound_primary_entity_p(), and load_primary_entity().
Referenced by simple_switch_old_to_new().
void set_array_as_distributed | ( | entity | ) |
Referenced by array_as_template(), new_synonym_array(), and one_align_directive().
void set_current_loops | ( | statement | obj | ) |
obj | bj |
Definition at line 371 of file compiler-util.c.
References current_loop_list, gen_recurse, gen_true(), loop_domain, NIL, pips_assert, and set_current_loops_rewrite().
Referenced by Overlap_Analysis().
void set_data_status | ( | data_status | s | ) |
Definition at line 328 of file declarations.c.
References data_status_alignmap, data_status_arrays, data_status_distributemap, data_status_newdeclmap, data_status_processors, data_status_templates, set_hpf_alignment(), and set_hpf_distribution().
Referenced by load_hpfc_status().
void set_dynamic_hpf | ( | entity_entities | ) |
void set_dynamic_status | ( | dynamic_status | d | ) |
set_similar_mapping(...)
Definition at line 108 of file dynamic.c.
References dynamic_status_dynamics, dynamic_status_primary, dynamic_status_renamings, dynamic_status_tokeep, set_dynamic_hpf(), set_maybeuseful_mappings(), set_primary_entity(), and set_renamings().
Referenced by load_hpfc_status().
void set_entity_as_dynamic | ( | entity | e | ) |
a new dynamic entity is stored.
HPF allows arrays and templates as dynamic. ??? could be asserted, but not here. should be checked afterward.
else the entity was already declared as dynamic...
Definition at line 130 of file dynamic.c.
References bound_dynamic_hpf_p(), CONS, ENTITY, make_entities(), NIL, store_dynamic_hpf(), store_primary_entity(), and store_similar_mapping().
Referenced by hpfc_translate_call_with_distributed_args(), and new_dynamic().
void set_entity_status | ( | entity_status | s | ) |
Definition at line 102 of file host_node_entities.c.
References entity_status_new_host, entity_status_new_node, entity_status_old_host, entity_status_old_node, set_new_host(), set_new_node(), set_old_host(), and set_old_node().
Referenced by load_hpfc_status().
void set_hpf_alignment | ( | alignmap | ) |
void set_hpf_distribution | ( | distributemap | ) |
void set_hpf_number | ( | entity_int | ) |
void set_hpf_number_status | ( | numbers_status | s | ) |
Definition at line 148 of file declarations.c.
References current_array_index, current_processors_index, current_template_index, numbers_status_arrays, numbers_status_numbermap, numbers_status_processors, numbers_status_templates, and set_hpf_number().
Referenced by load_hpfc_status().
void set_hpf_reductions | ( | statement_entities | ) |
void set_hpfc_current_statement | ( | statement | ) |
void set_maybeuseful_mappings | ( | statement_entities | ) |
void set_new_host | ( | entitymap | ) |
void set_new_node | ( | entitymap | ) |
void set_old_host | ( | entitymap | ) |
void set_old_node | ( | entitymap | ) |
void set_only_io_map | ( | statement_mapping | ) |
set the overlap value for entity ent, on dimension dim, dans side side to width, which must be a positive integer.
if necessary, the overlap is updates with the value width.
set the overlap value for entity ent, on dimension dim, dans side side to width, which must be a positive integer.
set the overlap value for entity ent, on dimension dim, dans side side to width, which must be a positive integer. if necessary, the overlap is updates with the value width.
upper
lower
upper
lower
ent | nt |
dim | im |
side | ide |
width | idth |
Definition at line 713 of file declarations.c.
References assert, bound_overlap_status_p(), create_overlaps(), current, entity_name, gen_nth(), load_overlap_status(), OVERLAP, overlap_lower, overlap_upper, pips_assert, and pips_debug.
Referenced by deal_with_similars(), message_manageable_p(), and update_overlaps_of().
void set_overlap_status | ( | overlapsmap | ) |
void set_primary_entity | ( | entitymap | ) |
void set_processor | ( | entity | ) |
void set_renamings | ( | statement_renamings | ) |
void set_similar_mapping | ( | entitymap | ) |
void set_similar_mappings_for_updates | ( | void | ) |
??? for final update after compilation! hummm....
??? should not deal with the same array twice...
may be in another module
Definition at line 162 of file dynamic.c.
References array, bound_new_node_p(), bound_similar_mapping_p(), dynamic_entity_p, ENTITY, entity_name, list_of_distributed_arrays(), load_new_node(), load_similar_mapping(), MAP, pips_debug, and store_new_node_variable().
Referenced by compile_module().
void set_template | ( | entity | ) |
Referenced by array_as_template(), new_synonym_template(), and new_template().
void set_the_dynamics | ( | list | ) |
void set_update_common_map | ( | entity_mapping | ) |
Definition at line 173 of file build-system.c.
References sc_rename_variables().
Referenced by generate_remapping_system(), and processor_loop().
bool similar_mapping_undefined_p | ( | void | ) |
Definition at line 735 of file special_cases.c.
References call_domain, check_simple(), expression_domain, gen_false(), gen_multi_recurse(), gen_null(), loop_domain, not_simple(), ok, simple_found, statement_domain, and test_domain.
Referenced by full_copy_p().
list simplify_deducable_variables(syst, vars, pleftvars) Psysteme syst; list vars, *pleftvars;
variables from entity list vars that can be rebuilt by the Psysteme syst are removed from it and stored as an expression list which is returned. The variables that are not removed are returned as another entity list, *pleftvars. of expression
syst | yst |
vars | ars |
pleftvars | leftvars |
Definition at line 562 of file io-compile.c.
References BASE_NULLE, base_rm, CONS, CONTRAINTE_UNDEFINED, ENTITY, eq, EXPRESSION, FWD_OFL_CTRL, is_normalized_linear, is_syntax_reference, make_expression(), make_normalized(), make_reference(), make_syntax(), MAP, NIL, sc_creer_base(), value_one_p, VALUE_ZERO, vect_dup(), and Scontrainte::vecteur.
Referenced by extract_lattice(), hpf_remapping(), and put_variables_in_ordered_lists().
void simplify_remapping_graph | ( | void | ) |
void simplify_remapping_graph()
what: simplifies the remapping graph. how: propagate unused reaching mappings to the next remappings, and remove unnecessary remappings. input: none. output: none. side effects: all is there!
of statements
Definition at line 1467 of file dynamic.c.
References dump_remapping_graph(), gen_closure(), gen_free_list(), gen_map(), get_current_module_statement(), ifdebug, initialize_maybeuseful_mappings(), initialize_reaching_propagation(), list_of_remapping_statements(), pips_debug, propagate_maybeuseful_mappings(), propagate_used_arrays(), regenerate_renamings(), reinitialize_reaching_mappings(), remove_not_remapped_leavings(), remove_unused_remappings(), and what_stat_debug.
Referenced by handle_hpf_directives().
str | tr |
Definition at line 217 of file message-utils.c.
References MAP, RANGE, and sprint_range().
Referenced by st_one_message().
str | tr |
Definition at line 242 of file message-utils.c.
References hpfc_integer_constant_expression_p(), range_increment, range_lower, and range_upper.
Referenced by sprint_lrange().
Sends.
Definition at line 138 of file run-time.c.
References CONS, EXPRESSION, f(), hpfc_make_call_statement(), NIL, pvm_what_option_expression(), reference_to_expression(), and reference_variable.
Computes.
ref | ef |
Definition at line 151 of file run-time.c.
References CMP_COMPUTER, CONS, EXPRESSION, gen_length(), gen_nconc(), get_bool_property(), hpfc_make_call_statement(), hpfc_name_to_entity(), int_to_expression(), load_hpf_number(), lUpdateExpr(), make_list_of_constant(), NIL, node_module, ref, reference_indices, reference_to_expression(), and reference_variable.
Referenced by generate_c1_alpha(), and generate_parallel_body().
ref | ef |
Definition at line 173 of file run-time.c.
References CMP_OWNERS, CONS, EXPRESSION, gen_length(), gen_nconc(), get_bool_property(), hpfc_make_call_statement(), hpfc_name_to_entity(), int_to_expression(), load_hpf_number(), lUpdateExpr(), make_list_of_constant(), NIL, node_module, ref, reference_indices, reference_to_expression(), and reference_variable.
Referenced by generate_read_of_ref_for_all(), generate_read_of_ref_for_computer(), generate_update_distributed_value_from_host(), generate_update_values_on_computer_and_nodes(), and generate_update_values_on_nodes().
statement st_compute_ith_local_index | ( | entity | array, |
int | i, | ||
expression | expr, | ||
syntax * | sp | ||
) |
the returned expression is translated into variables of the node module.
the necessity is not checked, but it could be done, looking that the new declaration of the given array is smaller or not on the given dimension...
array | rray |
expr | xpr |
sp | p |
Definition at line 775 of file generate.c.
References AddEntityToCurrentModule(), array, expr_compute_local_index(), instruction_to_statement(), is_basic_int, is_syntax_reference, make_assign_instruction(), make_new_scalar_variable(), make_reference(), make_syntax(), MakeBasic(), NIL, node_module, reference_to_expression(), and UpdateExpressionForModule().
Referenced by generate_compute_local_indices().
call to the runtime support function HPFC_CMPNEIGHBOUR(d)
Definition at line 394 of file run-time.c.
References CMP_NEIGHBOUR, CONS, EXPRESSION, hpfc_make_call_statement(), hpfc_name_to_entity(), int_to_expression(), and NIL.
Referenced by st_one_message().
statement st_generate_packing_and_passing(array, content, bsend)
dimension bounds are refered to as parameters, since we do not know yet what is the lower and upper of each dimension...
larg content:
array, dim [lower, upper]*len, range [lower, upper, increment]*len
array | rray |
content | ontent |
bsend | send |
Definition at line 422 of file run-time.c.
References array, array_lower_upper_bounds_list(), CONS, entity_basic(), entity_to_expression(), EXPRESSION, gen_length(), gen_nconc(), hpfc_make_call_statement(), make_packing_function(), MAP, NIL, NumberOfDimension(), pips_assert, RANGE, range_increment, range_lower, and range_upper.
Referenced by st_one_message().
ref | ef |
goal | oal |
Definition at line 842 of file generate.c.
References condition_ownerp, CONS, NIL, ref, st_get_value_locally_and_send(), st_make_nice_test(), st_receive_from(), and STATEMENT.
Referenced by generate_read_of_ref_for_all().
ref | ef |
goal | oal |
Definition at line 850 of file generate.c.
References condition_ownerp, CONS, generate_get_value_locally(), NIL, ref, st_make_nice_test(), st_receive_from_sender, and STATEMENT.
Referenced by generate_read_of_ref_for_computer().
ref | ef |
goal | oal |
Definition at line 760 of file generate.c.
References CONS, gen_nconc(), generate_get_value_locally(), make_block_statement(), NIL, ref, st_send_to_host_and_nodes(), and STATEMENT.
Referenced by st_get_value_for_all().
if ref is replicated: goal = Receive_From_Sender()
if ref is not replicated goal = Receive_Multi_Cast_From_Sender()
ref | ef |
goal | oal |
Definition at line 865 of file generate.c.
References ref, reference_variable, replicated_p(), st_receive_from_sender, and st_receive_mcast_from_sender.
Referenced by generate_read_of_ref_for_all(), and st_get_value_for_all().
ref | ef |
Definition at line 817 of file generate.c.
References AND_OPERATOR_NAME, array, condition_not_computer_in_owners, condition_senderp, CONS, entity_intrinsic(), gen_nconc(), generate_compute_local_indices(), load_new_node(), make_reference(), MakeBinaryCall(), NIL, ref, reference_variable, replicated_p(), st_make_nice_test(), st_send_to_computer, and STATEMENT.
Referenced by generate_read_of_ref_for_computer().
ref | ef |
val | al |
Definition at line 804 of file generate.c.
References condition_senderp, CONS, NIL, ref, reference_variable, replicated_p(), st_make_nice_test(), st_send_to_host_and_all_nodes, st_send_to_host_and_not_owners, and STATEMENT.
Referenced by st_get_value_locally_and_send().
void statement_structural_cleaning | ( | statement | s | ) |
Definition at line 847 of file hpfc-util.c.
References gen_multi_recurse(), gen_true(), loop_domain, loop_rewrite(), statement_domain, test_domain, and test_rewrite().
Referenced by compile_module().
Referenced by add_dynamic_synonym(), and set_entity_as_dynamic().
Referenced by array_as_template(), new_synonym_array(), and one_align_directive().
void store_hpf_distribution | ( | entity | , |
distribute | |||
) |
Referenced by new_synonym_template(), and one_distribute_directive().
neh | eh |
nen | en |
old | ld |
Definition at line 73 of file host_node_entities.c.
References store_new_host_variable(), and store_new_node_variable().
Referenced by make_host_and_node_modules().
new | ew |
old | ld |
Definition at line 64 of file host_node_entities.c.
References entity_undefined_p, pips_assert, store_or_update_new_host(), and store_or_update_old_host().
Referenced by add_declaration_to_host_and_link(), AddCommonToHostAndNodeModules(), AddEntityToHostAndNodeModules(), automatic_translation(), hpfc_compile(), make_host_and_node_modules(), and store_new_host_node_variable().
new | ew |
old | ld |
Definition at line 55 of file host_node_entities.c.
References entity_undefined_p, pips_assert, store_or_update_new_node(), and store_or_update_old_node().
Referenced by AddCommonToHostAndNodeModules(), AddEntityToHostAndNodeModules(), automatic_translation(), hpfc_compile(), make_host_and_node_modules(), set_similar_mappings_for_updates(), and store_new_host_node_variable().
void store_or_update_hpf_distribution | ( | entity | , |
distribute | |||
) |
Referenced by add_dynamic_synonym(), and set_entity_as_dynamic().
Referenced by handle_align_and_realign_directive(), handle_distribute_and_redistribute_directive(), handle_hpf_directives(), and handle_prescriptive_directive().
Referenced by check_for_similarity(), and set_entity_as_dynamic().
pe | e |
plvect | lvect |
Definition at line 530 of file special_cases.c.
References array, call_domain, call_filter(), cannot_be_a_shift(), current_regions, DEBUG_STAT, entity_undefined, entity_undefined_p, expression_domain, free_vector_list(), gen_false(), gen_multi_recurse(), gen_null(), load_statement_local_regions(), loop_domain, loop_filter(), lvect, NIL, pips_debug, rectangular_must_region_p(), subarray_shift_ok, and test_domain.
Referenced by hpf_compile_loop().
int template_cell_local_mapping(array, dim, tc)
??? should check that it is indeed block distributed ! or should implement all the formulas...
array | rray |
dim | im |
tc | c |
Definition at line 532 of file hpfc-util.c.
References alignment_templatedim, array, array_to_template, dimension_lower, DistributionParameterOfArrayDim(), FindArrayDimAlignmentOfArray, FindIthDimension(), HpfcExpressionToInt(), and tc.
Referenced by generate_one_message(), global_array_cell_to_local_array_cell(), and update_indices_for_local_computation().
array | rray |
dim | im |
Definition at line 448 of file hpfc-util.c.
References align_alignment, alignment_templatedim, alignment_undefined, array, FindAlignmentOfDim(), and load_hpf_alignment().
Referenced by aligned_p(), get_alignment(), and message_manageable_p().
??? another increment could be computed?
template | emplate |
lrt | rt |
Definition at line 498 of file message-utils.c.
References CONS, dimension_lower, dimension_size(), dimension_upper, distribute_distribution, distribute_processors, distribution_parameter, distribution_style, FindDistributionOfProcessorDim(), FindIthDimension(), gen_nconc(), gen_nth(), HpfcExpressionToInt(), int_to_expression(), is_style_block, is_style_cyclic, is_style_none, load_hpf_distribution(), make_range(), NIL, NumberOfDimension(), pips_internal_error, pl, processor_number(), RANGE, range_lower, range_upper, and style_tag.
Referenced by loop_nest_guard(), and one_message_guards_and_neighbour().
entity template_synonym_distributed_as | ( | entity | temp, |
distribute | d | ||
) |
what: finds or creates a new entity distributed as needed.
input: an template (which must be dynamic) and a distribute output: returns a template distributed as specified by d side effects:
the one found is returned
else no compatible template does exist, so one must be created
temp | emp |
Definition at line 491 of file dynamic.c.
References entities_list, ENTITY, free_distribute(), load_dynamic_hpf(), load_hpf_distribution(), MAP, new_synonym_template(), and same_distribute_p().
Referenced by one_distribute_directive().
bool the_dynamics_undefined_p | ( | void | ) |
end of it
cproto-generated files directives.c
Fabien Coelho, August 1993 returns the index of an affine vector
v0 | 0 |
Definition at line 37 of file message-utils.c.
References assert, DELTAV, TCST, TEMPLATEV, TSHIFTV, vect_del_var(), vect_erase_var(), and vect_size().
Referenced by generate_one_message(), and update_indices_for_local_computation().
!!! means sharing
Definition at line 30 of file local-ri-util.c.
References ldimensions_dup(), MakeTypeVariable(), type_variable, type_variable_p, variable_basic, and variable_dimensions.
bool update_common_map_undefined_p | ( | void | ) |
void update_common_references_in_obj | ( | void * | obj | ) |
obj | bj |
Definition at line 911 of file compile.c.
References debug_print_referenced_entities(), gen_multi_recurse(), gen_true(), ifdebug, loop_domain, reference_domain, update_common_rewrite(), and update_loop_rewrite().
Referenced by NormalizeCommonVariables().
void update_common_references_in_regions | ( | void | ) |
Definition at line 921 of file compile.c.
References EFFECT, effect_any_reference, effects_effects, gen_length(), get_rw_effects(), MAP, pips_debug, STATEMENT_EFFECTS_MAP, and update_common_rewrite().
void update_control_lists | ( | control | c, |
control_mapping | map | ||
) |
Fabien Coelho, May 1993
map | ap |
Definition at line 36 of file compiler-util.c.
References control_predecessors, control_successors, GET_CONTROL_MAPPING, NIL, pips_assert, and updated_control_list().
Referenced by hpf_compile_unstructured().
void update_hpf_distribution | ( | entity | , |
distribute | |||
) |
module | odule |
Definition at line 215 of file host_node_entities.c.
References CAR, CHUNK, MAPL, module, and update_object_for_module().
Referenced by lUpdateExpr(), and lUpdateExpr_but_distributed().
void update_object_for_module | ( | void * | obj, |
entity | module | ||
) |
push the current functions
pop the initial functions
obj | bj |
module | odule |
Definition at line 180 of file host_node_entities.c.
References bound_new_host_p(), bound_new_node_p(), bound_p, call_domain, code_domain, gen_domain_name(), gen_multi_recurse(), gen_true(), gen_type(), host_module, load, load_new_host(), load_new_node(), loop_domain, module, pips_debug, reference_domain, update_call_for_module_rewrite(), update_code_for_module_rewrite(), update_loop_for_module_rewrite(), and update_reference_for_module_rewrite().
Referenced by compile_module(), generate_hpf_remapping_file(), hpf_compile_call(), update_list_for_module(), UpdateExpressionForModule(), and UpdateStatementForModule().
the overlaps of the actual parameters are updated according to the formal requirements.
fun | un |
le | e |
Definition at line 864 of file declarations.c.
References array_distributed_p(), bound_new_node_p(), CAR, entity_name, EXPRESSION, expression_to_entity(), find_ith_parameter(), gen_length(), load_new_node(), pips_assert, pips_debug, POP, and update_overlaps_of().
Referenced by hpf_compile_call().
Referenced by initial_alignment(), one_align_directive(), one_distribute_directive(), and regenerate_renamings().
list updated_control_list | ( | list | lc, |
control_mapping | map | ||
) |
lc | c |
map | ap |
Definition at line 52 of file compiler-util.c.
References CONS, CONTROL, control_undefined, control_undefined_p, current, gen_nreverse(), GET_CONTROL_MAPPING, MAP, NIL, and pips_assert.
Referenced by update_control_lists().
expression UpdateExpressionForModule | ( | entity | module, |
expression | ex | ||
) |
this function creates a new expression using the mapping of old to new variables map.
some of the structures generated may be shared...
module | odule |
ex | x |
Definition at line 225 of file host_node_entities.c.
References copy_expression(), module, and update_object_for_module().
Referenced by generate_c1_alpha(), generate_compute_local_indices(), hpf_compile_parallel_loop(), hpf_compile_sequential_loop(), hpf_compile_test(), and st_compute_ith_local_index().
module | odule |
stat | tat |
Definition at line 303 of file host_node_entities.c.
References copy_statement(), module, and update_object_for_module().
Referenced by generate_parallel_body().
written_effects_to_dist_arrays_p
var | ar |
le | e |
Definition at line 58 of file hpfc-util.c.
References action_write_p, EFFECT, effect_action, effect_any_reference, FOREACH, reference_variable, and store_effect_p().
Referenced by locally_constant_vector_p().
bool written_effects_to_dist_arrays_p | ( | expression | expr | ) |
expr | xpr |
Definition at line 73 of file hpfc-util.c.
References action_write_p, CAR, DistArraysEffects(), EFFECT, effect_action, ENDP, gen_free_list(), POP, and store_effect_p().
as expected, true if entity e is dynamic.
it is just a function name nicer than bound_...
Definition at line 145 of file dynamic.c.
Referenced by add_declaration_to_host_and_link(), add_dynamic_synonym(), create_init_common_param_for_arrays(), create_parameters_h(), one_align_directive(), one_distribute_directive(), and set_similar_mappings_for_updates().
|
extern |
Compiler
stat is the current statement to be compiled, and there are pointers to the current statement building of the node and host codes. the module of these are also kept in order to add the needed declarations generated by the compilation.
however, every entities of the compiled program, and of both generated programs will be mixed, due to the tabulated nature of these objects. some objects will be shared. I don't think this is a problem. global variables
Definition at line 47 of file compiler.c.
Referenced by add_declaration_to_host_and_link(), AddCommonToHostAndNodeModules(), AddEntityToHostAndNodeModules(), compile_module(), generate_c1_beta(), generate_read_of_ref_for_all(), hpf_compile_block(), hpf_compile_call(), hpf_compile_sequential_loop(), hpf_compile_test(), hpfc_common_hook(), hpfc_module_suffix(), init_host_and_node_entities(), NewVariableForModule(), old_name(), put_generated_resources_for_common(), put_generated_resources_for_module(), and update_object_for_module().
|
extern |
Definition at line 47 of file compiler.c.
Referenced by AddCommonToHostAndNodeModules(), AddEntityToHostAndNodeModules(), compile_module(), extract_lattice(), generate_c1_alpha(), generate_c1_beta(), generate_compute_local_indices(), generate_get_value_locally(), generate_hpf_remapping_file(), generate_optimized_code_for_loop_nest(), generate_parallel_body(), generate_read_of_ref_for_all(), generate_receive_from_computer(), generate_send_to_computer(), hpf_compile_block(), hpf_compile_call(), hpf_compile_parallel_loop(), hpf_compile_sequential_loop(), hpf_compile_test(), hpfc_module_suffix(), init_host_and_node_entities(), Overlap_Analysis(), put_generated_resources_for_common(), put_generated_resources_for_module(), st_compute_current_computer(), st_compute_current_owners(), and st_compute_ith_local_index().