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) {