PIPS
|
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "boolean.h"
#include <stdbool.h>
#include "genC.h"
#include "linear.h"
#include "ri.h"
#include "c_syntax.h"
#include "effects.h"
#include "database.h"
#include "misc.h"
#include "text.h"
#include "text-util.h"
#include "ri-util.h"
#include "prettyprint.h"
#include "effects-util.h"
#include "accel-util.h"
#include "effects-generic.h"
#include "effects-simple.h"
#include "pipsdbm.h"
#include "resources.h"
#include "control.h"
#include "conversion.h"
#include "properties.h"
#include "transformations.h"
#include "effects-convex.h"
#include "syntax.h"
#include "bootstrap.h"
#include "complexity_ri.h"
#include "dg.h"
#include "graph.h"
#include "ricedg.h"
#include "chains.h"
#include "task_parallelization.h"
Go to the source code of this file.
Macros | |
#define | FortranImplicitType(x) ImplicitType(x) |
ImplicitType uses data structures of the Fortran parser. More... | |
Typedefs | |
typedef dg_arc_label | arc_label |
Instantiation of the dependence graph: More... | |
typedef dg_vertex_label | vertex_label |
Functions | |
static bool | com_statement_p (statement s) |
static void | gen_mpi_send_recv (statement stmt) |
static void | gen_if_rank (statement stmt, synchronization sync) |
static int | gen_mpi (statement stmt, int nesting_level) |
nesting_level is used to generate only a flat MPI (nesting_level = 1) hierarchical mpi is not implemented yet (nesting_level = 2) More... | |
static void | gen_flat_mpi (statement stmt, int nesting_level) |
static statement | mpi_initialize (statement stmt, entity module) |
Generate int rank0; MPI_Status status0; MPI_Request *request0; ierr = MPI_Init( &argc, &argv ); ierr = MPI_Comm_rank( MPI_COMM_WORLD, &rank );. More... | |
static void | mpi_finalize (statement stmt) |
bool | mpi_task_generation (char *module_name) |
mpi_generation.c More... | |
Variables | |
static statement | init_stmt = statement_undefined |
static entity | rank |
static entity | mpi_status |
static entity | mpi_request |
#define FortranImplicitType | ( | x | ) | ImplicitType(x) |
ImplicitType uses data structures of the Fortran parser.
It may fail because these data structures are not initialized, or return unexpected results if a Fortran IMPLICIT statement has been recently parsed.
Definition at line 57 of file mpi_generation.c.
typedef dg_arc_label arc_label |
Instantiation of the dependence graph:
Definition at line 45 of file mpi_generation.c.
typedef dg_vertex_label vertex_label |
Definition at line 46 of file mpi_generation.c.
Definition at line 63 of file mpi_generation.c.
References loop_body, native_instruction_p(), RECV_FUNCTION_NAME, SEND_FUNCTION_NAME, statement_instruction, statement_loop(), and statement_loop_p().
Referenced by gen_flat_mpi().
Definition at line 171 of file mpi_generation.c.
References CAR, com_statement_p(), gen_mpi(), gen_mpi_send_recv(), instruction_block, instruction_tag, instruction_test, is_instruction_block, is_instruction_call, is_instruction_loop, is_instruction_test, loop_body, make_continue_instruction(), MAPL, STATEMENT, statement_instruction, statement_loop(), test_false, test_true, and update_statement_instruction().
Referenced by mpi_task_generation().
|
static |
Definition at line 130 of file mpi_generation.c.
References copy_instruction(), empty_comments, empty_extensions(), entity_intrinsic(), entity_to_expression(), EQUAL_OPERATOR_NAME, is_instruction_test, make_empty_statement, make_instruction(), make_statement(), make_synchronization_none(), make_test(), MakeBinaryCall(), NIL, rank, statement_comments, statement_extensions, statement_instruction, statement_label, STATEMENT_NUMBER_UNDEFINED, STATEMENT_ORDERING_UNDEFINED, statement_synchronization, synchronization_spawn, and test_condition.
Referenced by gen_mpi().
nesting_level is used to generate only a flat MPI (nesting_level = 1) hierarchical mpi is not implemented yet (nesting_level = 2)
Definition at line 154 of file mpi_generation.c.
References gen_if_rank(), is_synchronization_barrier, is_synchronization_spawn, statement_synchronization, and synchronization_tag.
Referenced by gen_flat_mpi().
|
static |
Definition at line 76 of file mpi_generation.c.
References basic_tag, call_arguments, CAR, CDR, com_call(), CONS, copy_expression(), empty_comments, empty_extensions(), entity_empty_label(), entity_type, EXPRESSION, expression_to_entity(), gen_nreverse(), instruction_call, int_to_expression(), is_basic_float, is_basic_int, is_basic_string, is_instruction_call, make_address_of_expression(), make_call(), make_constant_entity(), make_entity_expression(), make_instruction(), make_instruction_sequence(), make_sequence(), make_statement(), make_synchronization_none(), mpi_request, mpi_status, native_instruction_p(), NIL, pips_user_warning, SEND_FUNCTION_NAME, STATEMENT, statement_comments, statement_extensions, statement_instruction, STATEMENT_NUMBER_UNDEFINED, STATEMENT_ORDERING_UNDEFINED, statement_synchronization, type_variable, and variable_basic.
Referenced by gen_flat_mpi().
|
static |
Definition at line 335 of file mpi_generation.c.
References CONS, copy_statement(), empty_comments, entity_undefined, EXPRESSION, gen_nreverse(), is_basic_string, make_call_statement(), make_constant_entity(), make_entity_expression(), make_instruction_sequence(), make_sequence(), make_synchronization_none(), MPI_FINALIZE_FUNCTION_NAME, NIL, return_st, STATEMENT, statement_comments, statement_extensions, statement_instruction, statement_synchronization, statement_undefined_p, and string_undefined.
Referenced by mpi_task_generation().
Generate int rank0; MPI_Status status0; MPI_Request *request0; ierr = MPI_Init( &argc, &argv ); ierr = MPI_Comm_rank( MPI_COMM_WORLD, &rank );.
Definition at line 230 of file mpi_generation.c.
References AddLocalEntityToDeclarations(), CONS, copy_entity(), copy_instruction(), declaration_statement_p(), empty_comments, empty_extensions(), entity_storage, entity_to_expression(), entity_type, EXPRESSION, FindOrCreateEntity(), FOREACH, FortranImplicitType, gen_consistent_p(), gen_length(), gen_nreverse(), is_basic_int, is_basic_string, is_instruction_call, make_address_of_expression(), make_basic_typedef(), make_block_statement(), make_call(), make_constant_entity(), make_entity_expression(), make_instruction(), make_instruction_sequence(), make_new_scalar_variable_with_prefix(), make_sequence(), make_statement(), make_storage_rom(), make_synchronization_none(), MakeBasic(), MakeTypeVariable(), module, MPI_REQUEST, mpi_request, MPI_STATUS, mpi_status, NIL, print_statement(), put_new_typedef(), rank, return_st, return_statement_p(), sequence_statements, STATEMENT, statement_comments, statement_extensions, statement_instruction, statement_label, STATEMENT_NUMBER_UNDEFINED, STATEMENT_ORDERING_UNDEFINED, statement_sequence(), statement_sequence_p(), statement_synchronization, statement_undefined, statement_undefined_p, storage_undefined_p, TOP_LEVEL_MODULE_NAME, and type_undefined_p.
Referenced by mpi_task_generation().
bool mpi_task_generation | ( | char * | module_name | ) |
module_name | odule_name |
Definition at line 348 of file mpi_generation.c.
References copy_statement(), db_get_memory_resource(), DB_PUT_MEMORY_RESOURCE, gen_consistent_p(), gen_flat_mpi(), init_stmt, local_name_to_top_level_entity(), module, module_name(), module_name_to_entity(), module_reorder(), mpi_finalize(), mpi_initialize(), reset_current_module_entity(), reset_current_module_statement(), reset_ordering_to_statement(), set_current_module_entity(), set_current_module_statement(), and set_ordering_to_statement().
|
static |
Definition at line 60 of file mpi_generation.c.
Referenced by mpi_task_generation(), ProcessEntry(), and step_compile_analysed_module().
|
static |
Definition at line 61 of file mpi_generation.c.
Referenced by gen_mpi_send_recv(), and mpi_initialize().
|
static |
Definition at line 61 of file mpi_generation.c.
Referenced by gen_mpi_send_recv(), and mpi_initialize().
|
static |
Definition at line 61 of file mpi_generation.c.
Referenced by add_test_successor(), base_find_variable_rank(), bound_distribution(), clean_up_control_test(), compile_master(), complex_bound_computation(), constraint_distribution(), constraint_integer_combination(), constraint_rank(), constraints_sort_info(), contrainte_extract(), effect_field_dimension_entity(), egalite_distribution(), egalites_to_matrice(), entity_field_rank(), find_ith_formal_parameter(), gauss(), gen_if_rank(), gen_position(), generate_call_get_rank(), get_final_offset(), hash_delget(), hash_enlarge_table(), hash_put(), highest_rank_pvector(), make_loop_indice_equation(), make_movements_loop_body_wp65(), mpi_initialize(), mpic_make_mpi_comm_rank(), offset_in_caller(), points_to_rank(), rank_of_variable(), supported_ref_p(), test_bound_generation(), transformer_to_1D_lattice(), UpdateEntity2(), and variable_of_rank().