Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • aa3bfd61480bde974fa129db1229dd9e9104f93e
  • master par défaut protégée
  • postdominancefrontier
  • Rapport_presentation
4 résultats

MPI_functions.c

Blame
  • 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)