Return value of MPI_Dims_create()


Return value of MPI_Dims_create()



Assuming I have 64 processes and I want to create an MPI Cartesian Topology in 3-D, the default topology returned by MPI_Dims_create() is 4x4x4. Why is it 4x4x4 and why not 8x4x2 or 4x8x2 or 16x2x2 or any other combination that is possible ?


64


3-D


MPI_Dims_create()


4x4x4


4x4x4


8x4x2


4x8x2


16x2x2




1 Answer
1



MPI_Dims_create is specifically made as convenience function to create a balanced topology.


MPI_Dims_create



A balanced topology, i.e. ideally cube has a certain optimal properties. Consider you are doing a simulation on a 160x160x160 grid with your processes.


160x160x160



With 4x4x4 each processor gets 40x40x40 to work on and in case of a simple border exchange has to send 40x40 to each of the 6 neighbors (9600 in total)


4x4x4


40x40x40


40x40


9600



With 8x4x2 each processor gets 20x40x80, the border is 2x20x40 + 2x20x80 + 2x40x80 = 11200


8x4x2


20x40x80


2x20x40 + 2x20x80 + 2x40x80 = 11200



With 16x2x2 each processor gets 10x80x80, the border is 4x10x80 + 2x80x80 = 16000


16x2x2


10x80x80


4x10x80 + 2x80x80 = 16000



As you can see, the border size that needs to be exchanged is the smallest for the cube. Generally, a balanced topology is a good default.



You can also set constraints with MPI_Dims_create or use MPI_Cart_create to create flexible Cartesian topologies.


MPI_Dims_create


MPI_Cart_create






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Popular posts from this blog

.

How to generate build files in next js

Delphi Android file open failure with API 26