[MPICH] Problems with allreduce

Luiz Mendes luizmendesw at gmail.com
Tue Jan 23 16:56:07 CST 2007


Hi all, i am with a problem in operation MPI_Allreduce.

The code is the following below:

int main(int argc, char *argv[])
{
    int opcao, dimensao,nome_tamanho, processo, num_procs;
    int coluna, contador_bytes, contador_bytes_parcial, interacao,
contador_total_bytes;
    char  *palavra = NULL, *arquivo_nome;
        char *arquivo_pv;
    char procname[MPI_MAX_PROCESSOR_NAME];
    double inicio, termino, tempo_parcial, soma_tempo_total, valor;
    long long offset;
    MPI_Datatype linhaMatriz;
    MPI_File arquivo;
    MPI_Status status;

    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &processo);
    MPI_Comm_size(MPI_COMM_WORLD, &num_procs);
    MPI_Get_processor_name(procname,&nome_tamanho);

    while ((opcao = getopt(argc, argv, "A:D:P:h")) != EOF)
    {
        switch(opcao)
        {
            case 'A':
                arquivo_pv =optarg;
                sprintf(arquivo_nome,"%s",arquivo_pv);
                break;
            case 'D':
                sscanf (optarg, "%d", &dimensao);
                break;
            case 'P':
                sprintf(arquivo_nome,"pvfs2:/mnt/pvfs2/%s",arquivo_pv);
        }
    }


    MPI_Type_contiguous(dimensao,MPI_DOUBLE,&linhaMatriz);
    MPI_Type_commit(&linhaMatriz);

    MPI_File_open(MPI_COMM_WORLD, arquivo_nome, MPI_MODE_CREATE |
MPI_MODE_WRONLY, MPI_INFO_NULL, &arquivo);

    for(interacao=0; interacao<(dimensao/num_procs);interacao++)
    {
        double matrizlocal[dimensao];
        valor=processo*(dimensao/num_procs)*dimensao+interacao*dimensao;
        offset=valor*sizeof(double);
        for(coluna=0; coluna<dimensao; coluna++)
        {
            matrizlocal[coluna]=valor+coluna;
        }

        MPI_File_set_view(arquivo, offset, MPI_DOUBLE, linhaMatriz,
"native", MPI_INFO_NULL);
        inicio=MPI_Wtime();
        MPI_File_write(arquivo, matrizlocal, 1, linhaMatriz, &status);
        termino=MPI_Wtime();
        tempo_parcial=termino-inicio;
        contador_bytes_parcial+=sizeof(matrizlocal);
        soma_tempo_total+=tempo_parcial;
    }
    MPI_File_close(&arquivo);
    MPI_Allreduce(&soma_tempo_total, &tempo, dimensao, MPI_DOUBLE,
MPI_MAX,MPI_COMM_WORLD);
    MPI_Finalize();
.......


Do you know what could be happening?

Thanks

Luiz Mendes
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20070123/ab9db1ab/attachment.htm>


More information about the mpich-discuss mailing list