[dcmf] [PATCH] This test will repeatedly call the low-level critical-section functions for performance testing.

Douglas Miller dougmill at us.ibm.com
Tue Feb 5 15:21:02 CST 2008


If you are referring to the LwarxStwcxMutex class in MutexImpl.h, that is
an example of how one might make another implementation of a mutex. It is
simply a sketch of possible future code. It has not even been tested to see
if it compiles, plus there are complications with actually having more than
one implementation that need to be worked out.

hope this helps.


_______________________________________________
Douglas Miller                   BlueGene Messaging Development
IBM Corp., Rochester, MN USA                     Bldg 030-2 C214
dougmill at us.ibm.com               Douglas Miller/Rochester/IBM




                                                                           
             Kazutomo Yoshii                                               
             <kazutomo at mcs.anl                                             
             .gov>                                                      To 
             Sent by:                  Joseph                              
             dcmf-bounces at list         Ratterman/Rochester/IBM at IBMUS       
             s.anl-external.or                                          cc 
             g                         DCMF <dcmf at lists.anl-external.org>  
                                                                   Subject 
                                       Re: [dcmf] [PATCH] This test will   
             02/05/2008 11:27          repeatedly call the   low-level     
             AM                        critical-section functions for      
                                       performance testing.                
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           





I noticed that there is a code fragment
that lwarx/stwarx is used for CriticalSection().
( sys/messaging/sysdep/prod/BGP/MutexImpl.h )
it's not used now.  Is this a plan for future release?
or just test code?

Do you have any performance comparison
between lockbox device and lwarx/stwarx instruction?

- kaz

> This is helpful when trying to understand performance degradations in
MPI_THREAD_MULTIPLE.
>
> Signed-off-by: Joe Ratterman <jratt at us.ibm.com>
> ---
>  sys/tests/perf/Makefile.in            |    2 +-
>  sys/tests/perf/dcmf/CS.c              |   64
+++++++++++++++++++++++++++++++++
>  sys/tests/perf/{ => dcmf}/Makefile.in |    4 +-
>  3 files changed, 67 insertions(+), 3 deletions(-)
>  create mode 100644 sys/tests/perf/dcmf/CS.c
>  copy sys/tests/perf/{ => dcmf}/Makefile.in (96%)
>
> diff --git a/sys/tests/perf/Makefile.in b/sys/tests/perf/Makefile.in
> index 22a7ac7..4266989 100644
> --- a/sys/tests/perf/Makefile.in
> +++ b/sys/tests/perf/Makefile.in
> @@ -12,6 +12,6 @@
>  # end_generated_IBM_copyright_prolog                               #
>
>  VPATH                       = @abs_srcdir@
> -SUBDIRS                     = mpi spi mpid
> +SUBDIRS                     = mpi spi mpid dcmf
>  TESTS                       =
>  include @abs_top_builddir@/Make.rules
> diff --git a/sys/tests/perf/dcmf/CS.c b/sys/tests/perf/dcmf/CS.c
> new file mode 100644
> index 0000000..080f5df
> --- /dev/null
> +++ b/sys/tests/perf/dcmf/CS.c
> @@ -0,0 +1,64 @@
> +/* begin_generated_IBM_copyright_prolog                             */
> +/*                                                                  */
> +/* ---------------------------------------------------------------- */
> +/* (C)Copyright IBM Corp.  2007, 2008                               */
> +/* IBM CPL License                                                  */
> +/* ---------------------------------------------------------------- */
> +/*                                                                  */
> +/* end_generated_IBM_copyright_prolog                               */
> +/**
> + * \file perf/dcmf/CS.c
> + * \brief Test the performance of the low-level critical-section
functions
> + */
> +
> +
> +#include <tests.h>
> +#define NUM 10000
> +DCMF_Configure_t config;
> +
> +
> +double time_CS(uint32_t x)
> +{
> +  uint64_t start, stop;
> +  uint32_t i;
> +
> +  start = DCMF_Timebase();
> +  for (i=0; i<x; ++i) {
> +    DCMF_CriticalSection_enter(0);
> +    DCMF_CriticalSection_exit(0);
> +  }
> +  stop  = DCMF_Timebase();
> +
> +  return (double)(stop-start)/(double)x;
> +}
> +
> +
> +#define time_run(c) time_run_long(c, #c)
> +void time_run_long(DCMF_Thread thread_level, char* thread_string)
> +{
> +  double time;
> +  DCMF_Result rc;
> +
> +  config.thread_level = thread_level;
> +  rc = DCMF_Messager_configure (&config, &config);
> +  assert(rc == DCMF_SUCCESS);
> +  assert(config.thread_level == thread_level);
> +  time = time_CS(NUM);
> +  printf("%s: Called Enter/Exit %u times at %g cycles each.\n",
thread_string, NUM, time);
> +}
> +
> +
> +int main()
> +{
> +  config.interrupts = DCMF_INTERRUPTS_OFF;
> +
> +  MPI_INIT;
> +
> +  time_run(DCMF_THREAD_SINGLE);
> +  time_run(DCMF_THREAD_FUNNELED);
> +  time_run(DCMF_THREAD_SERIALIZED);
> +  time_run(DCMF_THREAD_MULTIPLE);
> +
> +  MPI_FINALIZE;
> +  return (0);
> +}
> diff --git a/sys/tests/perf/Makefile.in b/sys/tests/perf/dcmf/Makefile.in
> similarity index 96%
> copy from sys/tests/perf/Makefile.in
> copy to sys/tests/perf/dcmf/Makefile.in
> index 22a7ac7..4c474b6 100644
> --- a/sys/tests/perf/Makefile.in
> +++ b/sys/tests/perf/dcmf/Makefile.in
> @@ -12,6 +12,6 @@
>  # end_generated_IBM_copyright_prolog                               #
>
>  VPATH                       = @abs_srcdir@
> -SUBDIRS                     = mpi spi mpid
> -TESTS                       =
> +SUBDIRS                     =
> +TESTS                       = CS.c
>  include @abs_top_builddir@/Make.rules

_______________________________________________
dcmf mailing list
dcmf at lists.anl-external.org
http://lists.anl-external.org/cgi-bin/mailman/listinfo/dcmf





More information about the dcmf mailing list