ompi
ompi copied to clipboard
Update collective framework count/disp arrays for bigcount
This updates the collective framework functions using count/displacement arrays to support bigcount. Instead of directly using pointers to bigcount and non-bigcount arrays, this adds special descriptor types, ompi_count_array and ompi_disp_array, that internally hold a union of either type. Collective components can now access count and displacement values through inline get functions on the descriptors, allowing use of both bigcount/non-bigcount arrays, depending on how the descriptors were initialized.
I believe hcoll is being replaced by UCC so i don't think there's going to be an investement of time in embiggening hcoll unless it already is.
well the suggested code doesn't even compile but I'll see about using the idea
make[2]: Entering directory '/usr/projects/artab/users/hpp/ompi/ompi/datatype'
CC ompi_datatype_module.lo
In file included from ../../ompi/mca/coll/coll.h:85,
from ../../ompi/instance/instance.h:22,
from ompi_datatype_module.c:42:
../../ompi/util/count_disp_array.h: In function 'ompi_count_array_init':
../../ompi/util/count_disp_array.h:26:48: error: invalid operands to binary | (have 'const int *' and 'int')
26 | array->data.int_array = (const int *)(data | 0x1);
| ^
../../ompi/util/count_disp_array.h: In function 'ompi_count_array_is_64bit':
../../ompi/util/count_disp_array.h:55:39: error: invalid operands to binary & (have 'const size_t *' {aka 'const long unsigned int *'} and 'int')
55 | return !(array->data.size_t_array & 0x1);
| ~~~~~~~~~~~~~~~~~~~~~~~~ ^
| |
| const size_t * {aka const long unsigned int *}
@bosilca okay there's a commit with your suggested change - modified so its compilable and correct. @devreal what do you think of this?