Looks good to me, Roy. 

While we are at it, I have one more observation: 

Consider the global comm with ranks {0, 1, 2, 3}. 

Then, after the following intended split: {0}, which requires rank {0} to 
request split with a color and ranks {1, 2, 3} with MPI_UNDEFINED, the 
mpi_communicator on the latter set will have a value MPI_COMM_NULL. 

The method Communicator::assign(), compares the value of the new comm against 
MPI_COMM_NULL. If a valid comm is found, then the rank and size are set 
consistently, otherwise they are set to 0 and 1. So, in the above simple case, 
a call to comm.rank() and comm.size() on all cpus for the new subcomm will 
always return 0 and 1.

Of course, the use can explicitly check comm.get() == MPI_COMM_NULL to see if a 
communicator is valid or not. But, I am not sure if this is intended. In any 
case, I wanted to point this out. 


Thanks,
Manav




> On Mar 11, 2016, at 8:24 AM, Roy Stogner <royst...@ices.utexas.edu> wrote:
> 
> 
> On Fri, 11 Mar 2016, Manav Bhatia wrote:
> 
>> From the current status of the code in parallel.h, it looks like
>> mpi_comm_free is called only when _I_duped_it is true, which is
>> true only when Communicator::duplicate() is called.
>> 
>> I think the communicator created using split() also needs to be
>> destroyed using comm_free. But since _I_duped_it is not set to true
>> with split(), it does not seem like comm_free would be called when
>> the communicator goes out of scope.
>> 
>> I would appreciate if someone could confirm this.
> 
> This appears to be correct.  In my defense, some of the MPI
> documentation examples don't free the results of an MPI_Comm_split
> either.  In the offense, others of the MPI examples do free the
> MPI_Comm_split output, and I probably should have read through more
> than one example before writing the code.
> 
> I'll put in a PR to fix it now.
> 
> Thanks,
> ---
> Roy


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to