Jeff, thank you for the feedback! All of mentioned issues are clear and I
will fix them shortly.

One important thing that needs additional discussion is compile-time vs
runtime selection. Ralph, what do you think about that? Several of issues
depends on that decision.

2014-09-18 20:09 GMT+07:00 Jeff Squyres (jsquyres) <jsquy...@cisco.com>:

> I have a few comments:
>
> - This looks nice.  Thanks for the contribution.
>
> - I notice that the ORTE timing stuff is now a compile-time decision, not
> a run-time decision.  Do we care that we've now taken away the ability for
> users to do timings in a production build?

- "clksync" -- can we use "clocksync"?  It's only 2 letters.  We tend to
> use real words in the OMPI code base; unnecessary abbreviation should be
> avoided.


> - r32738 introduced a several files into the code base that have no
> copyrights, and do not have the standard OMPI copyright header block.
> Please fix.
>
> - There's no documentation on how to use mpisync, mpirun_prof, or
> ompi_timing_post, even though they're installed when you --enable-timing.
> What are these 3 executables?  Can we get man pages?
>
I post their description in the first e-mail. Sure I can prepare man pages
for them,


>
> - What's the purpose of the MCA param orte_rml_base_timing?  A *quick*
> look through the code seems to indicate that it is ignored.
>
> - What's the purpose of the MCA params opal_clksync_file,
> opal_timing_file, and opal_timing_overhead?  E.g., what is a "clksync"
> file, what is it for, and what is its format?  Does the user have to
> provide one?  If so, how to you get one?  Or is it an output file?
> ...etc.  The brief descriptions given in the MCA help strings don't really
> provide enough information for someone who has no idea what the timing
> stuff is.  Also, can those 3 params have a common prefix?  I.e., it's not
> obvious that opal_clksync_file is related to opal_timing_* at all.


> - A *quick* look at ompi/tools/mpisync shows that a bunch of that code
> came from an external project.  Is the license compatible with OMPI's
> license?  What do we need to do to conform to their license?
>
> - opal/util/timings.h is protected by OPAL_SYS_TIMING_H -- shouldn't it be
> OPAL_UTIL_TIMINGS_H?
>
> - There's commented-out code in opal/util/timings.h.
>
> - There's no doxygen-style documentation in opal/util/timings.h to tell
> developers how to use it.
>
> - There's "TODO" comments in opal/util/timings.c; should those be fixed?
>
> - opal_config.h should be the first include in opal/util/timings.c.
>
> - If timing support is not to be compiled in, then opal/util/timings.c
> should not be be compiled via the Makefile.am (rather than entirely #if'ed
> out).
>
> It looks like this work is about 95% complete.  Finishing the remaining 5%
> would make it great and genuinely useful to the rest of the code base.
>
> Thanks!
>
>
>
> On Sep 16, 2014, at 10:20 AM, Artem Polyakov <artpo...@gmail.com> wrote:
>
> > Hello,
> >
> > I would like to introduce OMPI timing framework that was included into
> the trunk yesterday (r32738). The code is new so if you'll hit some bugs -
> just let me know.
> >
> > The framework consists of the set of macro's and routines for internal
> OMPI usage + standalone tool mpisync and few additional scripts:
> mpirun_prof and ompi_timing_post. The set of features is very basic and I
> am open for discussion of new things that are desirable there.
> >
> > To enable framework compilation you should configure OMPI with
> --enable-timing option. If the option was passed to ./configure, standalone
> tools and scripts will be installed into <prefix>/bin.
> >
> > The timing code is located in OPAL (opal/utils/timing.[ch]). There is a
> set of macro's that should be used to preprocess out all mentions of the
> timing code in case it wasn't requested with --enable-timing:
> > OPAL_TIMING_DECLARE(t) - declare timing handler structure with name "t".
> > OPAL_TIMING_DECLARE_EXT(x, t) - external declaration of a timing handler
> "t".
> > OPAL_TIMING_INIT(t) - initialize timing handler "t"
> > OPAL_TIMING_EVENT(x) - printf-like event declaration similar to
> OPAL_OUTPUT.
> > The information about the event will be quickly inserted into the linked
> list. Maximum event description is limited by OPAL_TIMING_DESCR_MAX.
> > The malloc is performed in buckets (OPAL_TIMING_BUFSIZE at once) and
> overhead (time to malloc and prepare the bucket) is accounted in
> corresponding list element. It might be excluded from the timing results
> (controlled by OMPI_MCA_opal_timing_overhead parameter).
> > OPAL_TIMING_REPORT(enable, t, prefix) - prepare and print out timing
> information. If OMPI_MCA_opal_timing_file was specified the output will go
> to that file. In other case the output will be directed using opal_output,
> each line will be prefixed with "prefix" to ease grep'ing. "enable" is a
> boolean/integer variable that is used for runtime selection of what should
> be reported.
> > OPAL_TIMING_RELEASE(t) - the counterpart for OPAL_TIMING_INIT.
> >
> > There are several examples in OMPI code. And here is another simple
> example:
> >     OPAL_TIMING_DECLARE(tm);
> >     OPAL_TIMING_INIT(&tm);
> >     ...
> >     OPAL_TIMING_EVENT((&tm,"Begin of timing: %s",
> ORTE_NAME_PRINT(&(peer->name)) ));
> >     ....
> >     OPAL_TIMING_EVENT((&tm,"Next timing event with condition x = %d", x
> ));
> >     ...
> >     OPAL_TIMING_EVENT((&tm,"Finish"));
> >     OPAL_TIMING_REPORT(enable_var, &tm,"MPI Init");
> >     OPAL_TIMING_RELEASE(&tm);
> >
> >
> > An output from all OMPI processes (mpirun, orted's, user processes) is
> merged together. NTP provides 1 millisecond - 100 microsecond level of
> precision. This may not be sufficient to order events globally.
> > To help developers extract the most realistic picture of what is going
> on, additional time synchronisation might be performed before profiling.
> The mpisync program should be runned 1-user-process-per-node to acquire the
> file with time offsets relative to HNP of each node. If the cluster runs
> over Gig Ethernet the precision will be 30-50 microseconds, in case of
> Infiniband - 4 microseconds. mpisync produces output file that might be
> readed and used by timing framework (OMPI_MCA_opal_clksync_file parameter).
> The bad news is that this synchronisation is not enough because of
> different clock skew on different nodes. Additional periodical
> synchronisation is needed. This is planned for the near future (me and
> Ralph discussing possible ways now).
> >
> > the mpirun_prof & ompi_timing_post script may be used to automate clock
> synchronisation in following manner:
> > export OMPI_MCA_ompi_timing=true
> > export OMPI_MCA_orte_oob_timing=true
> > export OMPI_MCA_orte_rml_timing=true
> > export OMPI_MCA_opal_timing_file=timing.out
> > mpirun_prof <ompi-params> ./mpiprog
> > ompi_timing_post timing.out
> >
> > ompi_timing_post will simply sort the events and made all times to be
> relative to the first one.
> >
> > --
> > С Уважением, Поляков Артем Юрьевич
> > Best regards, Artem Y. Polyakov
> > _______________________________________________
> > devel mailing list
> > de...@open-mpi.org
> > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> > Link to this post:
> http://www.open-mpi.org/community/lists/devel/2014/09/15837.php
>
>
> --
> Jeff Squyres
> jsquy...@cisco.com
> For corporate legal information go to:
> http://www.cisco.com/web/about/doing_business/legal/cri/
>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2014/09/15869.php




-- 
С Уважением, Поляков Артем Юрьевич
Best regards, Artem Y. Polyakov

Reply via email to