This user email requires special attention, as it highlighted some issues
with our MPI_T variables.

I wrote a short application to list all pvar and cvar available.
Unexpectedly, listing the cvars leads to a lot of failures, 138 over 1035
cvars. If a cvar is broken I would have expected (based on the reading of
the MPI_T chapter) not to be able to iterate over them instead of getting
an error. The tester is attached.

  George.


---------- Forwarded message ----------
From: Khalid Hasanov <xali...@gmail.com>
List-Post: devel@lists.open-mpi.org
Date: Fri, Aug 14, 2015 at 11:14 AM
Subject: [OMPI users] open mpi 1.8.6. MPI_T
To: Open MPI Users <us...@open-mpi.org>


Hello,

I am trying to use MPI_T interface to set *coll_tuned_bcast_algorithm* mca
parameter during run time, however I was not successful to do that.

I wonder if is it currently supported in Open MPI.

I had the same problem with setting *btl_self_eager_limit *parameter.

The code I am using attached below.


Thanks.


-- 
Best Regards,
Khalid

_______________________________________________
users mailing list
us...@open-mpi.org
Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
Link to this post:
http://www.open-mpi.org/community/lists/users/2015/08/27470.php
#include <stdio.h>
#include <string.h>
#include "mpi.h"

int main( int argc, char* argv[] )
{
    int provided, err, scope;
    int numPvar, numCvar, nameLen, descLen, verbosity, varClass;
    int binding, isReadonly, isContinous, isAtomic, i;
    char name[128], desc[1024];
    MPI_T_enum enumtype;
    MPI_Datatype datatype;

    MPI_Init_thread(0, 0, MPI_THREAD_SINGLE, &provided);
    err = MPI_T_init_thread(MPI_THREAD_SINGLE, &provided);
    if(err) MPI_Abort(MPI_COMM_WORLD, 0);

    err = MPI_T_pvar_get_num(&numPvar);
    if(err) MPI_Abort(MPI_COMM_WORLD, 0);
    printf("%d MPI Performance Variables\n", numPvar);

    for(i = 0; i < numPvar; i++) {
      nameLen = sizeof(name);
      descLen = sizeof(desc);
      err = MPI_T_pvar_get_info(i, name, &nameLen, &verbosity,
                                &varClass, &datatype, &enumtype, desc,
                                &descLen, &binding, &isReadonly,
                                &isContinous, &isAtomic);
      if(err) {
        printf("Failed to read Pvar %d/%d\n", i, numPvar);
        MPI_Abort(MPI_COMM_WORLD, 0);
      }
      printf("\t%s\tClass-%d\tReadonly-%s\tContinous-%s\tAtomic-%s\t%s\n",
             name, varClass, isReadonly ? "T" : "F",
             isContinous ? "T" : "F", isAtomic ? "T" : "F", desc);
    }

    err = MPI_T_cvar_get_num(&numCvar);
    if(err) MPI_Abort(MPI_COMM_WORLD, 0);
    printf("\n%d MPI Control Variables\n", numCvar);

    for(i = 0; i < numCvar; i++) {
      nameLen = sizeof(name);
      descLen = sizeof(desc);
      err = MPI_T_cvar_get_info(i, name, &nameLen, &verbosity,
                                &datatype, &enumtype, desc,
                                &descLen, &binding, &scope);
      if(err) {
        printf("Failed to read Cvar %d/%d\n", i, numCvar);
      }
      printf("\t%s\tClass-%d\tScope-%d\t%s\n",
             name, varClass, scope, desc);
    }

    MPI_T_finalize();
    MPI_Finalize();
    return 0;
}

Reply via email to