PIPS
|
#include "defines-local.h"
#include "conversion.h"
#include "effects-generic.h"
#include "effects-simple.h"
#include "effects-convex.h"
Go to the source code of this file.
Macros | |
#define | Load(stat) ((bool)(intptr_t) (hash_get(stat_bool_map, stat))) |
#define | Store(stat, val) (hash_put(stat_bool_map, (void*)stat, (void*) (val))) |
#define | GENERATION(NAME, COLLECT, UPDATE) |
Variables | |
static statement_mapping | stat_bool_map = hash_table_undefined |
HPFC module by Fabien COELHO. More... | |
#define GENERATION | ( | NAME, | |
COLLECT, | |||
UPDATE | |||
) |
#define Load | ( | stat | ) | ((bool)(intptr_t) (hash_get(stat_bool_map, stat))) |
#define Store | ( | stat, | |
val | |||
) | (hash_put(stat_bool_map, (void*)stat, (void*) (val))) |
void generate_io_statements_for_shared_arrays | ( | entity | array, |
tag | move, | ||
Psysteme | condition, | ||
Psysteme | echelon, | ||
_UNUSED_ list | parameters, | ||
list | scanners, | ||
list | rebuild, | ||
statement * | psh, | ||
statement * | psn | ||
) |
generate_io_statements_for_shared_arrays
code to be generated:
Host:
[ IF condition then ] init_send DO scanners rebuild pack ENDDO host_cast [ ENDIF ]
Node:
[ IF condition then ] receive_hcast DO scanners rebuild unpack ENDDO [ ENDIF ]
some comments are generated to help understand the code
Definition at line 438 of file io-util.c.
References array, comment(), concatenate(), CONS, divide, entity_local_name(), free(), generate_deducables(), generate_optional_if(), get_ith_array_dummy(), get_ith_local_dummy(), hpfc_buffer_initialization(), hpfc_buffer_packing(), hpfc_hcast(), hpfc_name_to_entity(), hpfc_nrecv(), IDIVIDE, insert_comments_to_statement(), make_block_statement(), make_empty_statement, movement_update_p, NIL, pips_assert, STATEMENT, strdup(), and systeme_to_loop_nest().
GENERATION | ( | node_pre_io | , |
hpfc_buffer_initialization(true, false, true) | , | ||
hpfc_nrecv(array, false) | |||
) |
proc_cond computation: well, it may have been kept before the new loop bound computation?
Do not forget to move forbidden information associated with block:
Definition at line 262 of file io-util.c.
References array, array_to_processors, comment(), concatenate(), CONS, DEBUG_STAT, define_node_processor_id(), divide, entity_local_name(), entity_to_declaration_constraints(), extract_nredund_subsystem(), free(), generate_deducables(), generate_optional_if(), get_ith_processor_dummy(), hpfc_name_to_entity(), IDIVIDE, insert_comments_to_statement(), make_block_statement(), make_empty_statement, movement_update_p, NIL, sc_dup(), sc_rm(), STATEMENT, statement_undefined, strdup(), and systeme_to_loop_nest().
true if the first statement of a block is a host section marker.
looks like a hack. should be managed in directives.c...
ls | of statement |
Definition at line 63 of file io-util.c.
References call_function, CAR, entity_local_name(), gen_length(), HOSTSECTION_SUFFIX, HPF_PREFIX, instruction_call, instruction_call_p, same_string_p, STATEMENT, and statement_instruction.
Referenced by only_io_sequence().
static statement hpfc_hcast()
PVM_CAST(NBTASKS, NODETIDS, MCASTHOST, INFO) MCASTHOST = MCASTHOST + 2
Definition at line 247 of file io-util.c.
References array, CONS, HPFC_HCAST, hpfc_make_call_statement(), hpfc_name_to_entity(), hpfc_packing_of_current__buffer(), make_block_statement(), NIL, and STATEMENT.
Referenced by generate_io_statements_for_shared_arrays().
T_LID=CMP_LID(pn, pi...) ? init buffer...
/ CALL (type) PACK... CALL HPFC {SND TO,RCV FROM} NODE(T_LID) / CALL (type) UPCK...
statement
Definition at line 181 of file io-util.c.
References array, CONS, entity_to_expression(), EXPRESSION, gen_nconc(), get_ith_processor_dummy(), hpfc_buffer_initialization(), hpfc_compute_lid(), hpfc_make_call_statement(), hpfc_name_to_entity(), hpfc_packing_of_current__buffer(), HPFC_rN2H, HPFC_sH2N, make_block_statement(), NIL, STATEMENT, and T_LID.
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().
! init buffer CALL HPFC {RCV FROM HOST, NCAST} CALL (type) BUFFER UNPACK
from host
Definition at line 218 of file io-util.c.
References array, CONS, hpfc_buffer_initialization(), hpfc_make_call_statement(), hpfc_name_to_entity(), HPFC_NCAST, hpfc_packing_of_current__buffer(), HPFC_rH2N, make_block_statement(), NIL, and STATEMENT.
Referenced by generate_io_statements_for_shared_arrays().
PVM_SEND(HOST_TID, HOST SND CHANNEL, INFO) HOST SND CHANNEL += 2.
Definition at line 233 of file io-util.c.
References array, CONS, hpfc_make_call_statement(), hpfc_name_to_entity(), hpfc_packing_of_current__buffer(), HPFC_sN2H, make_block_statement(), NIL, and STATEMENT.
|
static |
Fortran IO intrinsics
declared with FCD
runtime managed
Definition at line 117 of file io-util.c.
References call_function, entity_continue_p(), entity_name, f(), hpfc_io_like_function(), hpfc_special_io(), intptr_t, io_intrinsic_p(), pips_debug, and Store.
Referenced by only_io_mapping().
|
static |
Definition at line 110 of file io-util.c.
References intptr_t, Load, loop_body, pips_debug, and Store.
Referenced by only_io_mapping().
|
static |
Definition at line 142 of file io-util.c.
References call_domain, expression_domain, gen_false(), gen_multi_recurse(), gen_null(), gen_true(), loop_domain, only_io_call(), only_io_loop(), only_io_sequence(), only_io_test(), only_io_unstructured(), sequence_domain, stat_bool_map, statement_domain, test_domain, and unstructured_domain.
Referenced by only_io_mapping_initialize().
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().
|
static |
Definition at line 87 of file io-util.c.
References host_section_p(), intptr_t, Load, MAP, pips_debug, sequence_statements, STATEMENT, and Store.
Referenced by only_io_mapping().
|
static |
Definition at line 102 of file io-util.c.
References intptr_t, Load, pips_debug, Store, test_false, and test_true.
Referenced by only_io_mapping().
|
static |
Definition at line 129 of file io-util.c.
References blocks, CONTROL_MAP, control_statement, gen_free_list(), intptr_t, Load, NIL, pips_debug, Store, and unstructured_control.
Referenced by only_io_mapping().
|
static |
HPFC module by Fabien COELHO.
this is enough for the distribution purpose, because more clever analysis would be as checking for the distributablity of the enclosed code. A distribution code dedicated to IO will be implemented later on. only io encoding: 0 - not an IO 1 - is an IO 3 - may be considered as an IO along real IO functions...
Definition at line 51 of file io-util.c.
Referenced by only_io_mapping().