Fixes #3065: Integrate fca v2.2 support fix into v1.5 v1.5 v1.5.5
authorjsquyres
Tue Mar 20 19:27:13 2012 +0000 (15 months ago)
branchv1.5
changeset 1962233626c91f987
parent 19619 9af32e82fd46
child 19623 505ed1dd90a2
Fixes #3065: Integrate fca v2.2 support fix into v1.5

---svn-pre-commit-ignore-below---
r26166
fix support for fca 2.2, warning fixes on rhel 6.x
ompi/mca/coll/fca/coll_fca_api.h
ompi/mca/coll/fca/coll_fca_component.c
ompi/mca/coll/fca/coll_fca_module.c
ompi/mca/coll/fca/coll_fca_ops.c
     1.1 --- a/ompi/mca/coll/fca/coll_fca_api.h	Mon Mar 19 16:16:10 2012 +0000
     1.2 +++ b/ompi/mca/coll/fca/coll_fca_api.h	Tue Mar 20 19:27:13 2012 +0000
     1.3 @@ -113,18 +113,12 @@
     1.4      spec->is_root = root_rank == my_rank;
     1.5  }
     1.6  
     1.7 -#elif OMPI_FCA_VERSION == 20 || OMPI_FCA_VERSION == 21
     1.8 +#elif OMPI_FCA_VERSION == 20 || OMPI_FCA_VERSION == 21 || OMPI_FCA_VERSION == 22
     1.9  
    1.10  #define OMPI_FCA_ALLGATHER          1
    1.11 +#define OMPI_FCA_ALLGATHERV         1
    1.12  #define OMPI_FCA_PROGRESS           1
    1.13  
    1.14 -#define FCA_API_ABI_MAJOR           2
    1.15 -#if OMPI_FCA_VERSION == 20
    1.16 -#  define FCA_API_ABI_MINOR         0
    1.17 -#else
    1.18 -#  define FCA_API_ABI_MINOR         1
    1.19 -#endif
    1.20 -
    1.21  typedef struct mca_coll_fca_ops_t {
    1.22  
    1.23      /* FCA Context operations */
     2.1 --- a/ompi/mca/coll/fca/coll_fca_component.c	Mon Mar 19 16:16:10 2012 +0000
     2.2 +++ b/ompi/mca/coll/fca/coll_fca_component.c	Tue Mar 20 19:27:13 2012 +0000
     2.3 @@ -128,7 +128,8 @@
     2.4  {
     2.5      struct fca_init_spec *spec;
     2.6      int ret;
     2.7 -    unsigned long fca_ver;
     2.8 +    unsigned long fca_ver, major, minor, detected_ver;
     2.9 +    char x[3];
    2.10  
    2.11      if (mca_coll_fca_component.fca_lib_handle)
    2.12          return OMPI_SUCCESS;
    2.13 @@ -145,12 +146,19 @@
    2.14      GET_FCA_SYM(get_version);
    2.15      GET_FCA_SYM(get_version_string);
    2.16  
    2.17 +
    2.18      fca_ver = FCA_API_CLEAR_MICRO(mca_coll_fca_component.fca_ops.get_version());
    2.19 -    if (fca_ver != FCA_API_VER(FCA_API_ABI_MAJOR,FCA_API_ABI_MINOR)) {
    2.20 -        FCA_ERROR("Unsupported FCA version: %s, please update FCA to v%d.%d",
    2.21 +    major = (fca_ver>>FCA_MAJOR_BIT);
    2.22 +    minor = (fca_ver>>FCA_MINOR_BIT) & 0xf;
    2.23 +    sprintf(x, "%ld%ld", major, minor);
    2.24 +    detected_ver = atol(x);
    2.25 +
    2.26 +    FCA_VERBOSE(1, "FCA ABI version: %ld supported: %d", detected_ver, OMPI_FCA_VERSION);
    2.27 +
    2.28 +    if (detected_ver != OMPI_FCA_VERSION) {
    2.29 +        FCA_ERROR("Unsupported FCA version: %s, please update FCA to v%d, now v%ld",
    2.30                    mca_coll_fca_component.fca_ops.get_version_string(),
    2.31 -                  FCA_API_ABI_MAJOR,
    2.32 -                  FCA_API_ABI_MINOR);
    2.33 +                  OMPI_FCA_VERSION, fca_ver);
    2.34          return OMPI_ERROR;
    2.35      }
    2.36  
    2.37 @@ -296,7 +304,7 @@
    2.38      mca_base_param_reg_int(c, "enable_allgatherv",
    2.39                             "[1|0|] Enable/Disable FCA Allgatherv support",
    2.40                             false, false,
    2.41 -                           OMPI_FCA_ALLGATHER,
    2.42 +                           OMPI_FCA_ALLGATHERV,
    2.43                             &mca_coll_fca_component.fca_enable_allgatherv);
    2.44  
    2.45      mca_base_param_reg_int(c, "enable_gather",
     3.1 --- a/ompi/mca/coll/fca/coll_fca_module.c	Mon Mar 19 16:16:10 2012 +0000
     3.2 +++ b/ompi/mca/coll/fca/coll_fca_module.c	Tue Mar 20 19:27:13 2012 +0000
     3.3 @@ -122,8 +122,8 @@
     3.4  
     3.5      /* Allocate buffer for gathering rank information on rank0 */
     3.6      if (fca_module->rank == 0) {
     3.7 +        all_info_size = 0;
     3.8          FCA_MODULE_VERBOSE(fca_module, 1, "Total rank_info size: %d", all_info_size);
     3.9 -        all_info_size = 0;
    3.10          disps = calloc(ompi_comm_size(comm), sizeof *disps);
    3.11          for (i = 0; i < ompi_comm_size(comm); ++i) {
    3.12              disps[i] = all_info_size;
     4.1 --- a/ompi/mca/coll/fca/coll_fca_ops.c	Mon Mar 19 16:16:10 2012 +0000
     4.2 +++ b/ompi/mca/coll/fca/coll_fca_ops.c	Tue Mar 20 19:27:13 2012 +0000
     4.3 @@ -189,7 +189,7 @@
     4.4      /* Setup exchange buffer */
     4.5      spec.root = root;
     4.6      if (mca_coll_fca_array_size(datatype, count, &gap, &size)) {
     4.7 -        spec.buf = buff + gap;
     4.8 +        spec.buf = (char*)buff + gap;
     4.9      } else {
    4.10          mca_coll_fca_convertor_create(&conv, datatype, count, buff,
    4.11                                        (root == fca_module->rank)
    4.12 @@ -336,7 +336,7 @@
    4.13      size_t gap, ssize;
    4.14  
    4.15      if (mca_coll_fca_array_size(sdtype, scount, &gap, &ssize)) {
    4.16 -        *real_sendbuf = ((MPI_IN_PLACE == sbuf) ? inplace_sbuf : sbuf) + gap;
    4.17 +        *real_sendbuf = (char*)((MPI_IN_PLACE == sbuf) ? inplace_sbuf : sbuf) + gap;
    4.18      } else {
    4.19          FCA_VERBOSE(5, "Packing send buffer");
    4.20          if (MPI_IN_PLACE == sbuf) {