Skip to content

yalla with irregular contig datatypes #3566

Closed
@markalle

Description

@markalle

Yalla has a macro PML_YALLA_INIT_MXM_REQ_DATA that checks if a datatype is contiguous via opal_datatype_is_contiguous_memory_layout(dt,count) and if so it selects a size and lb that presumably is what will rdma, as
ompi_datatype_type_size(_dtype, &size);
ompi_datatype_type_lb(_dtype, &lb); \

This failed when I gave it a datatype constructed as [ ...] with extent 4. What I mean by that datatype is

        lens[0] = 3;
        disps[0] = 1;
        types[0] = MPI_CHAR;
        MPI_Type_struct(1, lens, disps, types, &tmpdt);
        MPI_Type_create_resized(tmpdt, 0, 4, &mydt);

So there are 3 chars at offset 1, and the LB is 0 and the UB is 4.

So their macro decides that size=4 and lb=0 and later I suppose size is getting updated to 3 for the final rdma, and so a send of a buffer [ 0 1 2 3 ] gets recved as [ 0 1 2 x ].

If size and lb in that macro are to represent the offset and size of the contiguous thing to be sent, then I think the true lb and true extent would be the proper items to use.

In the normal case of "regular" contiguous datatypes it would all be the same. But in the case of irregular offsets/LB/UB I think the true lb and true extent are always the right thing to use for any datatype,count that could have conceivably been identified as contiguous by opal_datatype_is_contiguous_memory_layout().

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions