| mpits.c (dce90f5d4aacb1dc7e712e67c7a5cd27edf1733c) | mpits.c (4f02bc6a7df4e4b03c783003a8e0899ee35fcb05) |
|---|---|
| 1#include <petscsys.h> /*I "petscsys.h" I*/ 2 3PetscLogEvent PETSC_BuildTwoSided,PETSC_BuildTwoSidedF; 4 5const char *const PetscBuildTwoSidedTypes[] = { 6 "ALLREDUCE", 7 "IBARRIER", 8 "REDSCATTER", --- 264 unchanged lines hidden (view full) --- 273 274 Notes: 275 This memory-scalable interface is an alternative to calling PetscGatherNumberOfMessages() and 276 PetscGatherMessageLengths(), possibly with a subsequent round of communication to send other constant-size data. 277 278 Basic data types as well as contiguous types are supported, but non-contiguous (e.g., strided) types are not. 279 280 References: | 1#include <petscsys.h> /*I "petscsys.h" I*/ 2 3PetscLogEvent PETSC_BuildTwoSided,PETSC_BuildTwoSidedF; 4 5const char *const PetscBuildTwoSidedTypes[] = { 6 "ALLREDUCE", 7 "IBARRIER", 8 "REDSCATTER", --- 264 unchanged lines hidden (view full) --- 273 274 Notes: 275 This memory-scalable interface is an alternative to calling PetscGatherNumberOfMessages() and 276 PetscGatherMessageLengths(), possibly with a subsequent round of communication to send other constant-size data. 277 278 Basic data types as well as contiguous types are supported, but non-contiguous (e.g., strided) types are not. 279 280 References: |
| 281 The MPI_Ibarrier implementation uses the algorithm in 282 Hoefler, Siebert and Lumsdaine, Scalable communication protocols for dynamic sparse data exchange, 2010. | 281 Hoefler, Siebert and Lumsdaine, The MPI_Ibarrier implementation uses the algorithm in 282 Scalable communication protocols for dynamic sparse data exchange, 2010. |
| 283 284.seealso: PetscGatherNumberOfMessages(), PetscGatherMessageLengths() 285@*/ 286PetscErrorCode PetscCommBuildTwoSided(MPI_Comm comm,PetscMPIInt count,MPI_Datatype dtype,PetscMPIInt nto,const PetscMPIInt *toranks,const void *todata,PetscMPIInt *nfrom,PetscMPIInt **fromranks,void *fromdata) 287{ 288 PetscErrorCode ierr; 289 PetscBuildTwoSidedType buildtype = PETSC_BUILDTWOSIDED_NOTSET; 290 --- 196 unchanged lines hidden (view full) --- 487 488 Notes: 489 This memory-scalable interface is an alternative to calling PetscGatherNumberOfMessages() and 490 PetscGatherMessageLengths(), possibly with a subsequent round of communication to send other data. 491 492 Basic data types as well as contiguous types are supported, but non-contiguous (e.g., strided) types are not. 493 494 References: | 283 284.seealso: PetscGatherNumberOfMessages(), PetscGatherMessageLengths() 285@*/ 286PetscErrorCode PetscCommBuildTwoSided(MPI_Comm comm,PetscMPIInt count,MPI_Datatype dtype,PetscMPIInt nto,const PetscMPIInt *toranks,const void *todata,PetscMPIInt *nfrom,PetscMPIInt **fromranks,void *fromdata) 287{ 288 PetscErrorCode ierr; 289 PetscBuildTwoSidedType buildtype = PETSC_BUILDTWOSIDED_NOTSET; 290 --- 196 unchanged lines hidden (view full) --- 487 488 Notes: 489 This memory-scalable interface is an alternative to calling PetscGatherNumberOfMessages() and 490 PetscGatherMessageLengths(), possibly with a subsequent round of communication to send other data. 491 492 Basic data types as well as contiguous types are supported, but non-contiguous (e.g., strided) types are not. 493 494 References: |
| 495 The MPI_Ibarrier implementation uses the algorithm in 496 Hoefler, Siebert and Lumsdaine, Scalable communication protocols for dynamic sparse data exchange, 2010. | 495 Hoefler, Siebert and Lumsdaine, The MPI_Ibarrier implementation uses the algorithm in 496 Scalable communication protocols for dynamic sparse data exchange, 2010. |
| 497 498.seealso: PetscCommBuildTwoSided(), PetscCommBuildTwoSidedFReq(), PetscGatherNumberOfMessages(), PetscGatherMessageLengths() 499@*/ 500PetscErrorCode PetscCommBuildTwoSidedF(MPI_Comm comm,PetscMPIInt count,MPI_Datatype dtype,PetscMPIInt nto,const PetscMPIInt *toranks,const void *todata,PetscMPIInt *nfrom,PetscMPIInt **fromranks,void *fromdata,PetscMPIInt ntags, 501 PetscErrorCode (*send)(MPI_Comm,const PetscMPIInt[],PetscMPIInt,PetscMPIInt,void*,MPI_Request[],void*), 502 PetscErrorCode (*recv)(MPI_Comm,const PetscMPIInt[],PetscMPIInt,void*,MPI_Request[],void*),void *ctx) 503{ 504 PetscErrorCode ierr; --- 38 unchanged lines hidden (view full) --- 543 544 Notes: 545 This memory-scalable interface is an alternative to calling PetscGatherNumberOfMessages() and 546 PetscGatherMessageLengths(), possibly with a subsequent round of communication to send other data. 547 548 Basic data types as well as contiguous types are supported, but non-contiguous (e.g., strided) types are not. 549 550 References: | 497 498.seealso: PetscCommBuildTwoSided(), PetscCommBuildTwoSidedFReq(), PetscGatherNumberOfMessages(), PetscGatherMessageLengths() 499@*/ 500PetscErrorCode PetscCommBuildTwoSidedF(MPI_Comm comm,PetscMPIInt count,MPI_Datatype dtype,PetscMPIInt nto,const PetscMPIInt *toranks,const void *todata,PetscMPIInt *nfrom,PetscMPIInt **fromranks,void *fromdata,PetscMPIInt ntags, 501 PetscErrorCode (*send)(MPI_Comm,const PetscMPIInt[],PetscMPIInt,PetscMPIInt,void*,MPI_Request[],void*), 502 PetscErrorCode (*recv)(MPI_Comm,const PetscMPIInt[],PetscMPIInt,void*,MPI_Request[],void*),void *ctx) 503{ 504 PetscErrorCode ierr; --- 38 unchanged lines hidden (view full) --- 543 544 Notes: 545 This memory-scalable interface is an alternative to calling PetscGatherNumberOfMessages() and 546 PetscGatherMessageLengths(), possibly with a subsequent round of communication to send other data. 547 548 Basic data types as well as contiguous types are supported, but non-contiguous (e.g., strided) types are not. 549 550 References: |
| 551 The MPI_Ibarrier implementation uses the algorithm in 552 Hoefler, Siebert and Lumsdaine, Scalable communication protocols for dynamic sparse data exchange, 2010. | 551 Hoefler, Siebert and Lumsdaine, The MPI_Ibarrier implementation uses the algorithm in 552 Scalable communication protocols for dynamic sparse data exchange, 2010. |
| 553 554.seealso: PetscCommBuildTwoSided(), PetscCommBuildTwoSidedF(), PetscGatherNumberOfMessages(), PetscGatherMessageLengths() 555@*/ 556PetscErrorCode PetscCommBuildTwoSidedFReq(MPI_Comm comm,PetscMPIInt count,MPI_Datatype dtype,PetscMPIInt nto,const PetscMPIInt *toranks,const void *todata, 557 PetscMPIInt *nfrom,PetscMPIInt **fromranks,void *fromdata,PetscMPIInt ntags,MPI_Request **toreqs,MPI_Request **fromreqs, 558 PetscErrorCode (*send)(MPI_Comm,const PetscMPIInt[],PetscMPIInt,PetscMPIInt,void*,MPI_Request[],void*), 559 PetscErrorCode (*recv)(MPI_Comm,const PetscMPIInt[],PetscMPIInt,void*,MPI_Request[],void*),void *ctx) 560{ --- 33 unchanged lines hidden --- | 553 554.seealso: PetscCommBuildTwoSided(), PetscCommBuildTwoSidedF(), PetscGatherNumberOfMessages(), PetscGatherMessageLengths() 555@*/ 556PetscErrorCode PetscCommBuildTwoSidedFReq(MPI_Comm comm,PetscMPIInt count,MPI_Datatype dtype,PetscMPIInt nto,const PetscMPIInt *toranks,const void *todata, 557 PetscMPIInt *nfrom,PetscMPIInt **fromranks,void *fromdata,PetscMPIInt ntags,MPI_Request **toreqs,MPI_Request **fromreqs, 558 PetscErrorCode (*send)(MPI_Comm,const PetscMPIInt[],PetscMPIInt,PetscMPIInt,void*,MPI_Request[],void*), 559 PetscErrorCode (*recv)(MPI_Comm,const PetscMPIInt[],PetscMPIInt,void*,MPI_Request[],void*),void *ctx) 560{ --- 33 unchanged lines hidden --- |