Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: [OMPI users] 3D domain decomposition with MPI
From: Cole, Derek E (derek.e.cole_at_[hidden])
Date: 2010-03-10 15:54:27

Hi all. I am relatively new to MPI, and so this may be covered somewhere else, but I can't seem to find any links to tutorials mentioning any specifics, so perhaps someone here can help.

In C, I have a 3D array that I have dynamically allocated and access like Array[x][y][z]. I was hoping to calculate a subsection for each processor to work on, of size nx in the x dimension, ny in the y dimension, and the full Z dimension. Starting at Array[sx][sy][0] and going to Array[ex][ey][z] where ey-sy=ny.

What is the best way to do this? I am able to calculate the neighboring processors and assign a sub-section of the XY dimensions to each processor, however I am having problems with sharing the border information of the arrays with the other processors. I don't really want to have to do a MPI_Send for each of the 0..Z slices's border information. I'd kind of like to process all of the Z, then share the full "face" of the border information with the neighbor processor. For example, if process 1 was the right neighbor of process zero, I'd want process zero to send Subarray[0..nx][ny][0..Z](the right most face) to processor 1's left-most face..assuming the X-Y plane was your screen, and the Z dimension extended into the screen.

If anyone has any information that talks about how to use the MPI data types, or some other method, or wants to talk about how this might be done, I'm all ears.

I know it is hard to talk about without pictures, so if you all like, I can post a picture explaning what I want to do. Thanks!