Announcement

Collapse
No announcement yet.

New test-set (md-gromacs) & suite (molecular-dynamics)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • New test-set (md-gromacs) & suite (molecular-dynamics)

    I've put together a test-set for the GROMACS molecular dynamics package for benchmarking processors (and memory subsystems to some extent) since this interests me.

    Description:
    This test runs a series of molecular dynamics simulations using the GROMACS MD package. This benchmark is capable of running on multiple cores by using the MPICH2 library, and is similar in configuration to the SMP GROMACS cores (FahCore_a1) used by the Folding@home distributed computing project.
    The test-set includes 4 molecules that can be simulated, and the tests can be run in single or multiprocessor modes.

    The molecular-dynamics test suite runs 4 tests from the md-gromacs test-set at present. 2 single and 2 multiprocessor.

    Notes:
    * This version still appears to have a bug in its result parsing. Sometimes the parser doesn't read (or doesn't actually get passed) the results. The tests run 3 times each, so even with this bug you should at least get 1 result back.
    * The software used requires a fortran compiler. I'm not sure how to add that the the prerequisites of the tests.

    Link to v0.1 of this test-set/suite: http://fire-salamander.co.uk/pts-tes...cs-0.1.tar.bz2

  • #2
    Originally posted by uncle_fungus View Post
    * The software used requires a fortran compiler. I'm not sure how to add that the the prerequisites of the tests.
    This is how:

    http://phorogit.com/index.php?p=phor...279688926a78c5

    The profile ExternalDependencies just then needs to mention fortran-compiler.

    Right now though only Ubuntu (and generic) support for external dependencies.

    I'll push your code up shortly, thanks!
    Michael Larabel
    http://www.michaellarabel.com/

    Comment


    • #3
      Originally posted by uncle_fungus View Post
      I
      Notes:
      * This version still appears to have a bug in its result parsing. Sometimes the parser doesn't read (or doesn't actually get passed) the results. The tests run 3 times each, so even with this bug you should at least get 1 result back
      I believe I know the bug in your test profile. I'll look into it tomorrow (morning) / a fix. Much too tired right now.

      Your scripts though should now be in the git tree.
      Michael Larabel
      http://www.michaellarabel.com/

      Comment


      • #4
        Thanks Michael!

        I've noticed a typo in the md-gromacs test profile though:
        Code:
        --- a/md-gromacs.xml    2008-05-07 07:03:54.000000000 +0100
        +++ b/md-gromacs.xml    2008-05-07 06:36:42.000000000 +0100
        @@ -17,7 +17,7 @@
                 <ResultScale>Gflops</ResultScale>
                 <Proportion>HIB</Proportion>
                 <Description>This test runs a series of molecular dynamics simulations using the GROMACS MD package. This benchmark is capable of running on multiple cores by using the MPICH2 library, and is similar in configuration to the SMP GROMACS cores (FahCore_a1) used by the Folding@home distributed computing project.</Description>
        -        <ExxternalDependencies>build-utilities</ExternalDependencies>
        +        <ExternalDependencies>build-utilities</ExternalDependencies>
             </TestInformation>
             <TestSettings>
                 <Option>

        Comment


        • #5
          Fixed in git.

          I still haven't experienced the results parsing bug that you mentioned occurs sometimes at random. However, what I believe it may be attributed to is everything that's printed out to stdout. If you look at the other tests, there isn't much printed out (and what's printed out is what's sent to your parse results). If you add some greps to your install.sh in the creation of your md-gromacs file, to have it only grep like the performance: line or to just make it not print so much to the screen that isn't needed to parse the results, that would probably address the issue if this is indeed the problem.
          Michael Larabel
          http://www.michaellarabel.com/

          Comment


          • #6
            Yes, I thought that might be the reason, since both programs that have to be run are very verbose.

            There might be another change I need to make in the parser too, as the result from this test: http://global.phoronix-test-suite.co...574-12613-5219 is impossible. The magnitude of the flop counter changes according to the results of the simulation. In the case above, it was reporting Mflops not Gflops.

            I feel a 0.2 release coming on

            Comment


            • #7
              Also, is there a reason why:

              Run-type:

              1: Single Node (1 thread)
              2: Parallel (multiple threads)


              isn't automatic depending upon the number of CPU cores?
              Michael Larabel
              http://www.michaellarabel.com/

              Comment


              • #8
                From the point of view of benchmarking maybe there isn't a need for the selection to be manual, but from the point of view of running GROMACS there are instances when running multiple single-node runs would be preferable to one parallel run. This is mostly because the current release of GROMACS doesn't scale perfectly in parallel runs (CVS versions are much better, but that is beyond the scope of this benchmark).

                The parallel runs aren't really "threading," they're launching n copies of GROMACS and communicating via MPI.

                Comment


                • #9
                  Originally posted by uncle_fungus View Post
                  There might be another change I need to make in the parser too, as the result from this test: http://global.phoronix-test-suite.co...574-12613-5219 is impossible. The magnitude of the flop counter changes according to the results of the simulation. In the case above, it was reporting Mflops not Gflops.

                  I feel a 0.2 release coming on
                  Supported in git is now:

                  Allow the test results scale to be defined outside of the XML test profile and inside the test's benchmarking environment directory with the scale being the contents of pts-results-scale file
                  So if inside your script, you have it "echo gflops > pts-results-scale" inside of your testing directory of where the files are saved at, etc. and it's not defined inside the XML file, it will use that for your scale. So then you would print out mflops or gflops when the test runs. Got it?
                  Michael Larabel
                  http://www.michaellarabel.com/

                  Comment


                  • #10
                    What happens if I run a test on two different machines and they report different scales (1 reports Mflops, the other Gflops)?

                    Comment


                    • #11
                      Originally posted by uncle_fungus View Post
                      What happens if I run a test on two different machines and they report different scales (1 reports Mflops, the other Gflops)?
                      Hmmm good question. At this point there is no support in the merge results functionality for converting result formats..... Though you could just turn all md-gromacs results into mflops or gflops in the results parser and then just have them all be the same. I haven't run into a test yet aside from this where there have been two different scales, but always convert back to one.
                      Michael Larabel
                      http://www.michaellarabel.com/

                      Comment


                      • #12
                        I think for the moment I'll just convert everything to Gflops in the parser and see what happens.
                        I've managed to clean up the output, and I haven't had the parser fail on me yet, so I think that bug is fixed.

                        Comment


                        • #13
                          Ok v0.3 with fixed flop counting, verbosity and result parsing.

                          Patch:
                          Code:
                          diff --git a/pts/test-profiles/md-gromacs.xml b/pts/test-profiles/md-gromacs.xml
                          index 548a63d..20da79f 100644
                          --- a/pts/test-profiles/md-gromacs.xml
                          +++ b/pts/test-profiles/md-gromacs.xml
                          @@ -1,6 +1,6 @@
                           <PhoronixTestSuite>
                                  <TestProfile>
                          -               <Version>0.2</Version>
                          +               <Version>0.3</Version>
                                          <TestType>Processor</TestType>
                                          <SoftwareType>Scientific</SoftwareType>
                                          <License>FREE</License>
                          @@ -13,7 +13,7 @@
                                          <Version>3.3.3</Version>
                                          <TimesToRun>3</TimesToRun>
                                          <Executable>gromacs</Executable>
                          -               <ResultScale>Gflops</ResultScale>
                          +               <ResultScale>GFLOPS</ResultScale>
                                          <Proportion>HIB</Proportion>
                                          <Description>This test runs a series of molecular dynamics simulations using the GROMACS MD package. This test is capable of running on multiple cores by using the MPICH2 library, and is similar in configuration to the SMP GROMACS cores (FahCore_a1) used by the Folding@HOME distributed computing project.</Description>
                                          <ExternalDependencies>build-utilities, fortran-compiler</ExternalDependencies>
                          diff --git a/pts/test-resources/md-gromacs/install.sh b/pts/test-resources/md-gromacs/install.sh
                          index 2e0e375..21ff98f 100644
                          --- a/pts/test-resources/md-gromacs/install.sh
                          +++ b/pts/test-resources/md-gromacs/install.sh
                          @@ -44,8 +44,12 @@ if [ -d $THIS_DIR/gmxbench ]
                             then
                               rm -rf $THIS_DIR/gmxbench/
                           fi
                          +if [ -f $THIS_DIR/flopcount ]
                          +  then
                          +    rm -f $THIS_DIR/flopcount
                          +fi
                           mkdir $THIS_DIR/gmxbench
                          -tar -xvf gmxbench-3.0.tar.gz -C $THIS_DIR/gmxbench/
                          +tar -xvf gmxbench-3.0.tar.gz -C $THIS_DIR/gmxbench/ &>/dev/null
                          
                           case "\$1" in
                           \"villin\")
                          @@ -71,18 +75,20 @@ esac
                          
                           case "\$2" in
                           \"mpi\")
                          -       $THIS_DIR/gromacs333_/bin/grompp -np \$NUM_CPU_CORES
                          -       $THIS_DIR/mpich2_/bin/mpiexec -np \$NUM_CPU_CORES $THIS_DIR/gromacs333_/bin/mdrun 2>&1
                          +       $THIS_DIR/gromacs333_/bin/grompp -np \$NUM_CPU_CORES -nov &>/dev/null
                          +       $THIS_DIR/mpich2_/bin/mpiexec -np \$NUM_CPU_CORES $THIS_DIR/gromacs333_/bin/mdrun &> $THIS_DIR/flopcount
                                  ;;
                           \"single-node\")
                          -       $THIS_DIR/gromacs333_/bin/grompp
                          -       $THIS_DIR/gromacs333_/bin/mdrun_single 2>&1
                          +       $THIS_DIR/gromacs333_/bin/grompp -nov &>/dev/null
                          +       $THIS_DIR/gromacs333_/bin/mdrun_single &> $THIS_DIR/flopcount
                                  ;;
                           *)
                                  exit
                                  ;;
                           esac
                          
                          +grep -C 1 'Performance:' $THIS_DIR/flopcount
                          +
                           cd $THIS_DIR/
                           sleep 3" > gromacs
                           chmod +x gromacs
                          diff --git a/pts/test-resources/md-gromacs/parse-results.php b/pts/test-resources/md-gromacs/parse-results.php
                          index c9b3c9f..74f622a 100644
                          --- a/pts/test-resources/md-gromacs/parse-results.php
                          +++ b/pts/test-resources/md-gromacs/parse-results.php
                          @@ -1,5 +1,29 @@
                           <?php
                          
                          +preg_match("/\((.{0,1})Flops\)/", $argv[1], $match);
                          +
                          +switch($match[1])
                          +{
                          +       case 'K':
                          +               $factor = 0.000001;
                          +               break;
                          +       case 'M':
                          +               $factor = 0.001;
                          +               break;
                          +       case 'G':
                          +               $factor = 1;
                          +               break;
                          +       case 'T':
                          +               $factor = 1000;
                          +               break;
                          +       case 'P':
                          +               $factor = 1000000;
                          +               break;
                          +       default:
                          +               $factor = 0.000000001; //nothing detected, therefore flops
                          +               break;
                          +}
                          +
                           $BENCHMARK_RESULTS = substr($argv[1], strpos($argv[1], "Performance:"));
                           $BENCHMARK_RESULTS = substr($BENCHMARK_RESULTS, 0, strpos($BENCHMARK_RESULTS, "\n"));
                           $array = explode(" ", $BENCHMARK_RESULTS);
                          @@ -10,5 +34,5 @@ foreach($array as $value)
                                          array_push($array2, $value);
                          
                           if(!empty($array2[2]))
                          -       echo $array2[2];
                          +       echo $array2[2] * $factor;
                           ?>
                          Full download http://fire-salamander.co.uk/pts-tes...cs-0.3.tar.bz2

                          Comment


                          • #14
                            Pushed it into git, but it seems broken for at least the test I tried:

                            -------------------------------------------------------
                            Program grompp, VERSION 3.3.3
                            Source code file: futil.c, line: 345

                            File input/output error:
                            grompp.mdp
                            -------------------------------------------------------

                            "Got Coffee, Got Donuts, Got Wasted" (F. Black)

                            :-) G R O M A C S (-:

                            God Rules Over Mankind, Animals, Cosmos and Such

                            :-) VERSION 3.3.3 (-:


                            Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
                            Copyright (c) 1991-2000, University of Groningen, The Netherlands.
                            Copyright (c) 2001-2008, The GROMACS development team,
                            check out http://www.gromacs.org for more information.

                            This program is free software; you can redistribute it and/or
                            modify it under the terms of the GNU General Public License
                            as published by the Free Software Foundation; either version 2
                            of the License, or (at your option) any later version.

                            :-) /home/michael/pts-benchmark-env/md-gromacs/gromacs333_/bin/mdrun_single (-:

                            Option Filename Type Description
                            ------------------------------------------------------------
                            -s topol.tpr Input Generic run input: tpr tpb tpa xml
                            -o traj.trr Output Full precision trajectory: trr trj
                            -x traj.xtc Output, Opt. Compressed trajectory (portable xdr format)
                            -c confout.gro Output Generic structure: gro g96 pdb xml
                            -e ener.edr Output Generic energy: edr ene
                            -g md.log Output Log file
                            -dgdl dgdl.xvg Output, Opt. xvgr/xmgr file
                            -field field.xvg Output, Opt. xvgr/xmgr file
                            -table table.xvg Input, Opt. xvgr/xmgr file
                            -tablep tablep.xvg Input, Opt. xvgr/xmgr file
                            -rerun rerun.xtc Input, Opt. Generic trajectory: xtc trr trj gro g96 pdb
                            -tpi tpi.xvg Output, Opt. xvgr/xmgr file
                            -ei sam.edi Input, Opt. ED sampling input
                            -eo sam.edo Output, Opt. ED sampling output
                            -j wham.gct Input, Opt. General coupling stuff
                            -jo bam.gct Output, Opt. General coupling stuff
                            -ffout gct.xvg Output, Opt. xvgr/xmgr file
                            -devout deviatie.xvg Output, Opt. xvgr/xmgr file
                            -runav runaver.xvg Output, Opt. xvgr/xmgr file
                            -pi pull.ppa Input, Opt. Pull parameters
                            -po pullout.ppa Output, Opt. Pull parameters
                            -pd pull.pdo Output, Opt. Pull data output
                            -pn pull.ndx Input, Opt. Index file
                            -mtx nm.mtx Output, Opt. Hessian matrix
                            -dn dipole.ndx Output, Opt. Index file

                            Option Type Value Description
                            ------------------------------------------------------
                            -[no]h bool no Print help info and quit
                            -nice int 19 Set the nicelevel
                            -deffnm string Set the default filename for all file options
                            -[no]xvgr bool yes Add specific codes (legends etc.) in the output
                            xvg files for the xmgrace program
                            -np int 1 Number of nodes, must be the same as used for
                            grompp
                            -nt int 1 Number of threads to start on each node
                            -[no]v bool no Be loud and noisy
                            -[no]compact bool yes Write a compact log file
                            -[no]sepdvdl bool no Write separate V and dVdl terms for each
                            interaction type and node to the log file(s)
                            -[no]multi bool no Do multiple simulations in parallel (only with
                            -np > 1)
                            -replex int 0 Attempt replica exchange every # steps
                            -reseed int -1 Seed for replica exchange, -1 is generate a seed
                            -[no]glas bool no Do glass simulation with special long range
                            corrections
                            -[no]ionize bool no Do a simulation including the effect of an X-Ray
                            bombardment on your system


                            Back Off! I just backed up md.log to ./#md.log.1#

                            -------------------------------------------------------
                            Program mdrun_single, VERSION 3.3.3
                            Source code file: gmxfio.c, line: 706

                            Can not open file:
                            topol.tpr
                            -------------------------------------------------------

                            "Got Coffee, Got Donuts, Got Wasted" (F. Black)

                            :-) G R O M A C S (-:

                            God Rules Over Mankind, Animals, Cosmos and Such

                            :-) VERSION 3.3.3 (-:


                            Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
                            Copyright (c) 1991-2000, University of Groningen, The Netherlands.
                            Copyright (c) 2001-2008, The GROMACS development team,
                            check out http://www.gromacs.org for more information.

                            This program is free software; you can redistribute it and/or
                            modify it under the terms of the GNU General Public License
                            as published by the Free Software Foundation; either version 2
                            of the License, or (at your option) any later version.

                            :-) /home/michael/pts-benchmark-env/md-gromacs/gromacs333_/bin/grompp (-:

                            creating statusfile for 1 node...
                            d.dppc/
                            d.dppc/conf.gro
                            d.dppc/grompp.mdp
                            d.dppc/topol.top
                            d.lzm/
                            d.lzm/conf.gro
                            d.lzm/cutoff.mdp
                            d.lzm/topol.top
                            d.lzm/pme.mdp
                            d.poly-ch2/
                            d.poly-ch2/grompp.mdp
                            d.poly-ch2/conf.gro
                            d.poly-ch2/topol.top
                            d.villin/
                            d.villin/conf.gro
                            d.villin/topol.top
                            d.villin/grompp.mdp

                            ====================================
                            GROMACS MD Benchmark (Run 3 of 3)
                            ====================================

                            cd: 30: can't cd to /home/michael/pts-benchmark-env/md-gromacs/gmxbench/d.poly-ch2/
                            Option Filename Type Description
                            ------------------------------------------------------------
                            -f grompp.mdp Input, Opt. grompp input file with MD parameters
                            -po mdout.mdp Output grompp input file with MD parameters
                            -c conf.gro Input Generic structure: gro g96 pdb tpr tpb tpa
                            xml
                            -r conf.gro Input, Opt. Generic structure: gro g96 pdb tpr tpb tpa
                            xml
                            -rb conf.gro Input, Opt. Generic structure: gro g96 pdb tpr tpb tpa
                            xml
                            -n index.ndx Input, Opt. Index file
                            -deshuf deshuf.ndx Output, Opt. Index file
                            -p topol.top Input Topology file
                            -pp processed.top Output, Opt. Topology file
                            -o topol.tpr Output Generic run input: tpr tpb tpa xml
                            -t traj.trr Input, Opt. Full precision trajectory: trr trj
                            -e ener.edr Input, Opt. Generic energy: edr ene

                            Option Type Value Description
                            ------------------------------------------------------
                            -[no]h bool no Print help info and quit
                            -nice int 0 Set the nicelevel
                            -[no]v bool no Be loud and noisy
                            -time real -1 Take frame at or first after this time.
                            -np int 1 Generate statusfile for # nodes
                            -[no]shuffle bool no Shuffle molecules over nodes
                            -[no]sort bool no Sort molecules according to X coordinate
                            -[no]rmvsbds bool yes Remove constant bonded interactions with virtual
                            sites
                            -load string Releative load capacity of each node on a
                            parallel machine. Be sure to use quotes around
                            the string, which should contain a number for
                            each node
                            -maxwarn int 10 Number of warnings after which input processing
                            stops
                            -[no]check14 bool no Remove 1-4 interactions without Van der Waals
                            -[no]zero bool no Set parameters for bonded interactions without
                            defaults to zero instead of generating an error
                            -[no]renum bool yes Renumber atomtypes and minimize number of
                            atomtypes


                            -------------------------------------------------------
                            Program grompp, VERSION 3.3.3
                            Source code file: futil.c, line: 345

                            File input/output error:
                            grompp.mdp
                            -------------------------------------------------------
                            Michael Larabel
                            http://www.michaellarabel.com/

                            Comment


                            • #15
                              Which test did you try to run?

                              Comment

                              Working...
                              X