(j3.2006) this_image( team=zzz), for zzz not current or an ancestor
Wed Jun 7 04:39:31 EDT 2017
>From: Bill Long <longb at cray.com>
>> On May 31, 2017, at 4:38 AM, Anton Shterenlikht <mexas at BRIS.AC.UK> wrote:
>> use iso_fortran_env
>> type( team_type ) :: team_new
>> form team( 1 + mod(this_image(),2), team_new )
>> print *, this_image( team_new )
>> I think this program is not conforming because
>> CD 16.9.190p3 [435:10-11] has:
>> "TEAM ... scalar ... whose value identifies
>> the current or an ancestor team."
>> In this case team_new is neither.
And this modified program:
type( team_type ) :: team_new
form team( 1 + mod(this_image(),2), team_new )
print *, team_number( team_new )
is probably also not conforming because
CD 16.9.189p3 [434:21] has the same text:
"TEAM ... scalar ... whose value identifies
the current or an ancestor team."
I'm just thinking about the implications
of the fact that team-variable becomes
defined after a successful execution of
a FORM TEAM, but is essentially unusable until
Are nested CHANGE TEAM statements conforming?
type( team_type ) :: t1, t2
form team( 1 + mod(this_image(), 2 ), t1 )
form team( 1 + mod(this_image(), 3 ), t2 )
print *, team_number(t2) ! not conforming?
! t2 neither current nor ancestor
print *, team_number(t1) ! conforming?
! t1 is an ancestor
I find the first 2 sentences of
CD 18.104.22.168p1 [188:4-7] confusing:
"The team-values on the active images that
execute the CHANGE TEAM statement shall
be those of team variables defined by corresponding
executions of the same FORM TEAM statement (11.6.9).
When the CHANGE TEAM statement is executed,
the current team shall be the team that was current
when those team variables were defined."
My feeling is that nested CHANGE TEAM statements
violate somehow the above CD text, but I'm not sure.
More information about the J3