Skip to content

[Question]: Ambiguity in nvshmem4py nvshmem.core.rma.quiet documentation #60

@BenBrock

Description

@BenBrock

Question

The documentation for nvshmem.core.rma.quiet states:

Note that this function will return when local (the PE this is called from) operations are completed. Remote operations may not yet be. Other synchronizations are required

To me this implies that nvshmem.core.rma.quiet only ensures the completion of the local component of RMA operations, not the remote component. This is different from the OpenSHMEM spec's shmem_quiet and also (in my reading) the NVSHMEM C API's nvshmem_quiet, where a quiet ensures remote completion.

More concretely, taking put as an example, there are two important synchronization points:

  1. After "local completion," the user is free to modify the local source buffer without affecting the put. However, remote completion is not guaranteed. "Local completion" is guaranteed after shmem_put returns in OpenSHMEM, but not after shmem_put_nbi returns.
  2. After "remote completion," the put is complete and the remote data is visible to all processes. This is guaranteed after shmem_quiet returns for both shmem_put or shmem_put_nbi operations (and indeed all outstanding operations).

The documentation sounds to me like nvshmem.core.rma.quiet only gives the first guarantee. However, this seems unlikely, since I'm assuming nvshmem.core.rma.quiet just calls nvshmem_quiet? My assumption is that local completion is guaranteed after stream synchronization and remote completion is guaranteed by a quiet?

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdocumentationImprovements or additions to documentationquestionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions