Sélectionner une révision Git
-
Alexandre Morignot a rédigéAlexandre Morignot a rédigé
MPI_functions.c 4,63 Kio
#include "MPI_functions.h"
void write_mpi_code(function * fun)
{
basic_block bb;
gimple_stmt_iterator gsi;
FOR_EACH_BB_FN( bb,fun )
{
for (gsi = gsi_start_bb(bb); !gsi_end_p (gsi); gsi_next(&gsi))
{
gimple *stmt = gsi_stmt(gsi);
mpi_collective_code *current_enum = (mpi_collective_code*)xmalloc(sizeof (mpi_collective_code));
*current_enum = get_mpi_code(stmt);
//printf("current_enum : %i\n",*((int*)current_enum));
if (*current_enum != LAST_AND_UNUSED_MPI_COLLECTIVE_CODE)
{
edit_aux_value(bb,(int*)current_enum);
}
}
}
}
void detect_same_bb_mpi_call(function * fun)
{
basic_block bb;
gimple_stmt_iterator gsi;
FOR_EACH_BB_FN(bb,fun)
{
int call_counter = 0;
for (gsi = gsi_start_bb(bb); !gsi_end_p (gsi); gsi_next(&gsi))
{
gimple *stmt = gsi_stmt(gsi);
mpi_collective_code *current_enum = (mpi_collective_code*)xmalloc(sizeof (mpi_collective_code));
*current_enum = get_mpi_code(stmt);
if (*current_enum != LAST_AND_UNUSED_MPI_COLLECTIVE_CODE)
{
//printf("Current mpi code : %i\n",(int)*current_enum);
call_counter++;
}
}
printf("number of MPI calls in current basic_block : %i\n",call_counter);
}
}
int are_there_several_mpi_call(function * fun)
{
basic_block bb;
gimple_stmt_iterator gsi;
FOR_EACH_BB_FN(bb,fun)
{
int call_counter = 0;
for (gsi = gsi_start_bb(bb); !gsi_end_p (gsi); gsi_next(&gsi))
{
gimple *stmt = gsi_stmt(gsi);
mpi_collective_code *current_enum = (mpi_collective_code*)xmalloc(sizeof (mpi_collective_code));
*current_enum = get_mpi_code(stmt);
if (*current_enum != LAST_AND_UNUSED_MPI_COLLECTIVE_CODE)
{
call_counter++;
}
}
if (call_counter >= 2)