Skip to content

Do We Still Need OFI CXI (FI_DELIVERY_COMPLETE and FI_ATOMIC_READ) Work Arounds? #1196

@markbrown314

Description

@markbrown314

In transport_ofi.h we have the following workaround:

static inline
void shmem_transport_atomic_fetch(shmem_transport_ctx_t* ctx, void *target,
                                  const void *source, size_t len, int pe,
                                  int datatype)
{
#ifdef ENABLE_MR_ENDPOINT
    /* CXI provider currently does not support fetch atomics with FI_DELIVERY_COMPLETE
     * That is why non-blocking API is used which uses FI_INJECT. FI_ATOMIC_READ is
     * also not supported currently */
    long long dummy = 0;
    shmem_transport_fetch_atomic_nbi(ctx, (void *) source, (const void *) &dummy,
                                     target, len, pe, FI_SUM, datatype);
#else
    shmem_transport_fetch_atomic_nbi(ctx, (void *) source, (const void *) NULL,
                                     target, len, pe, FI_ATOMIC_READ, datatype);
#endif
}

Is this still necessary? Needs testing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions