Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Source Code
subroutine run(spec,rc)type(GathervSpec),intent(in)::specinteger,optional,intent(out)::rcinteger::statusreal::tot_timereal::tot_time_sqreal::avg_timereal::rel_std_timetype(GathervKernel)::kernelinteger::writer_comminteger::gather_comminteger::ireal::tinteger::color,rank,npescall MPI_Comm_rank(MPI_COMM_WORLD,rank,_IERROR)call MPI_Comm_size(MPI_COMM_WORLD,npes,_IERROR)color=(rank*spec%n_writers)/npescall MPI_Comm_split(MPI_COMM_WORLD,color,0,gather_comm,_IERROR)call MPI_Comm_rank(gather_comm,rank,_IERROR)call MPI_Comm_split(MPI_COMM_WORLD,rank,0,writer_comm,_IERROR)kernel=make_GathervKernel(spec,gather_comm,_RC)call write_header(MPI_COMM_WORLD,_RC)tot_time=0tot_time_sq=0associate(n=>spec%n_tries)do i=1,nt=time(kernel,writer_comm,_RC)tot_time=tot_time+ttot_time_sq=tot_time_sq+t**2end doavg_time=tot_time/nrel_std_time=-1! unlessif(n>1)thenrel_std_time=sqrt((tot_time_sq-spec%n_tries*avg_time**2)/(n-1))/avg_timeend if end associate call report(spec,avg_time,rel_std_time,MPI_COMM_WORLD,_RC)_RETURN(_SUCCESS)end subroutine run