:orphan: # PetscGatherMessageLengths Computes information about messages that an MPI rank will receive, including (from-id,length) pairs for each message. ## Synopsis ``` #include "petscsys.h" PetscErrorCode PetscGatherMessageLengths(MPI_Comm comm, PetscMPIInt nsends, PetscMPIInt nrecvs, const PetscMPIInt ilengths[], PetscMPIInt **onodes, PetscMPIInt **olengths) ``` Collective ## Input Parameters - ***comm -*** Communicator - ***nsends -*** number of messages that are to be sent. - ***nrecvs -*** number of messages being received - ***ilengths -*** an array of integers of length sizeof(comm) a non zero `ilengths`[i] represent a message to i of length `ilengths`[i] ## Output Parameters - ***onodes -*** list of ranks from which messages are expected - ***olengths -*** corresponding message lengths ## Notes With this info, the correct `MPI_Irecv()` can be posted with the correct from-id, with a buffer with the right amount of memory required. The calling function deallocates the memory in onodes and olengths To determine `nrecvs`, one can use `PetscGatherNumberOfMessages()` ## See Also `PetscGatherNumberOfMessages()`, `PetscGatherMessageLengths2()`, `PetscCommBuildTwoSided()` ## Level developer ## Location src/sys/utils/mpimesg.c --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/sys/utils/mpimesg.c) [Index of all Sys routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)