Re: [mpich-discuss] Error: "MPIR_Get_contextid_sparse_group(1193): Too many communicators (0/2048)"
I don't fully understand your use case, but: The window memory passed to MPI_Win_create on each process must be a contiguous memory. You can internally manage it in whatever way. If you create a datatype on a process, the datatype is local to that process. Other processes can't use that datatype. Also the MPI standard says the following about the target datatype passed to put/get/accumulate (MPI-3, pg 420, line 33): "The target datatype must contain only relative displacements, not absolute addresses." Rajeev On May 23, 2014, at 9:44 AM, Ted Sariyski <[email protected]> wrote:
I need a little bit more help. My question relates to the structure of the array (referred below as A), for which a window object will be created.
Let say that particles are of type particle_t:
type particle_t integer :: host, id,... real,pointer :: data(:)=>null() end type particle_t
I built two corresponding mpi types, one with data allocated, mpi_particles_t, and mpi_particles_null_t, when p%data=>null().
What I want to do is the following: • All processes allocates an array of type particles_t for all particles, but data is allocated only if a particle is assigned to the domain: allocate(A(tot_num_particles)) do n=1,tot_num_particles if ( particle(n)%host == myid) allocate(particle(n)%data(data_size)) enddo
2. All processes create their mpi data type mpi_A_t:
do n=1,tot_num_particles
if ( particle(n)%host == myid) then blockcounts(n) = 1 ; oldtypes(n) = mpi_particles_t else blockcounts(n) = 1 ; oldtypes(n) = mpi_particles_null_t endif call MPI_GET_ADDRESS(A(n), offsets(n), ierr) enddo
call mpi_type_create_struct(tot_num_particles,blockcounts,offsets,oldtypes,mpi_A_myid_t,ierr) call mpi_type_commit(mpi_A_myid_t,ierr)
I gave a try but it fails. Before I proceed I want to make sure that there is nothing fundamentally wrong with this approach. Besides, even if it is correct, I am not sure that this is the 'best' solution. I will highly appreciate your comments.
Thanks in advance, --Ted
On 05/22/2014 03:31 PM, Ted Sariyski wrote:
I see. Thanks a lot. --Ted
On 05/22/2014 03:15 PM, Rajeev Thakur wrote:
What do you mean with: "Why can’t all processes open one large window?" I guess I miss something. If each process has an array of objects that belong to it (called array A say) , then with a single call to MPI_Win_create you can create a window object that has everyone's A arrays in it.
Rajeev
On May 22, 2014, at 9:46 AM, Ted Sariyski <[email protected]> wrote:
It is about MPI_win. Here is the problem as it relates to MPI (it is a Boltzmann type equation).
There are N particles interacting with each other. Interaction is directional, so that a particle interacts only with those particles, which are within a narrow cone. The first step is to segregate the initial set of N particles into subsets of particles (I called it 'objects'), which interact with each other. Here is what I do: • Assign each object to a process. • The process which owns a object: • Makes a guess for the maximum number of particles expected in this object. • Allocates memory for it. • Opens a shared window. • All processes • Each particle identify which object it belongs to, and PUTs its data there. • After assembly is done, objects are passed to a solver. • Repeat What do you mean with: "Why can’t all processes open one large window?" I guess I miss something. Thanks, --Ted
On 05/21/2014 11:03 PM, Balaji, Pavan wrote:
On May 21, 2014, at 6:02 PM, Ted Sariyski <[email protected]> wrote:
Memory limitations. With one large window all processes have to allocate memory for the objects they own as well as for objects assigned to other process.
Are we talking about the same thing here? I’m referring to an MPI_Win. What objects do processes need to keep track of?
— Pavan
_______________________________________________ discuss mailing list [email protected]
To manage subscription options or unsubscribe:
discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
_______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
participants (1)
-
Rajeev Thakur