PDA

View Full Version : New test-set (md-gromacs) & suite (molecular-dynamics)


uncle_fungus
05-06-2008, 07:20 PM
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-tests/md-gromacs-0.1.tar.bz2

Michael
05-06-2008, 09:00 PM
* 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=phoronix-test-suite.git&a=commitdiff&h=c526bc91d5e97691acadf8ab1e664bf33ab99c16&hb=d889468b75e942b86401ce4fad279688926a78c5

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
05-06-2008, 09:20 PM
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.

uncle_fungus
05-07-2008, 01:11 AM
Thanks Michael!

I've noticed a typo in the md-gromacs test profile though:
--- 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>

Michael
05-07-2008, 06:32 AM
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.

uncle_fungus
05-07-2008, 07:17 AM
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.com/index.php?k=profile&u=michael-5574-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 :)

Michael
05-07-2008, 09:07 AM
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?

uncle_fungus
05-07-2008, 09:47 AM
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.

Michael
05-07-2008, 09:54 AM
There might be another change I need to make in the parser too, as the result from this test: http://global.phoronix-test-suite.com/index.php?k=profile&u=michael-5574-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?

uncle_fungus
05-07-2008, 10:07 AM
What happens if I run a test on two different machines and they report different scales (1 reports Mflops, the other Gflops)?

Michael
05-07-2008, 10:14 AM
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.

uncle_fungus
05-07-2008, 10:18 AM
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.

uncle_fungus
05-07-2008, 11:52 AM
Ok v0.3 with fixed flop counting, verbosity and result parsing.

Patch:
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-tests/md-gromacs-0.3.tar.bz2

Michael
05-07-2008, 12:24 PM
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
-------------------------------------------------------

uncle_fungus
05-07-2008, 12:34 PM
Which test did you try to run?

Michael
05-07-2008, 12:37 PM
Poly-CH2 single threaded

and it also occurs with the villin.

Michael
05-07-2008, 12:38 PM
-------------------------------------------------------
Program mdrun_single, VERSION 3.3.3
Source code file: gmxfio.c, line: 706

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



Err I've now tried it with all four and they all fail.

uncle_fungus
05-07-2008, 12:40 PM
Oh dear. I'm not sure what's broken that.

uncle_fungus
05-07-2008, 12:48 PM
The tests all work for me.

This is the problem:
cd: 30: can't cd to /home/michael/pts-benchmark-env/md-gromacs/gmxbench/d.poly-ch2/It looks like the gmxbench-3.0.tar.gz isn't being extracted to the right place.

Edit: I've tried it on another machine which is using the latest git code and it works fine too.

Michael
05-08-2008, 07:54 AM
Hmmm I still can't get it working for me. I've wiped out everything and did a fresh install, etc.

uncle_fungus
05-08-2008, 08:06 AM
OK. I'll try it on a fresh install from git later on today.

uncle_fungus
05-08-2008, 02:41 PM
Just installed afresh from the latest git code and all the tests work fine for me.

Michael
05-09-2008, 06:54 AM
So no other ideas then? I tried it on another box too and experienced the same failures.

uncle_fungus
05-09-2008, 07:10 AM
What distro are you using to test on?

Michael
05-09-2008, 07:10 AM
Ubuntu and it had worked in the same configuration with 0.1 and 0.2 of md-gromacs

uncle_fungus
05-09-2008, 07:21 AM
OK, I know why. Ubuntu uses dash as it's /bin/sh and it looks like it doesn't support something I added in 0.3 (not sure what yet).

Edit: I know what the problem is, it's I/O redirection. Patch coming shortly.

uncle_fungus
05-09-2008, 07:39 AM
Patch for dash I/O redirection:

diff --git a/pts/test-resources/md-gromacs/install.sh b/pts/test-resources/md-gromacs/install.sh
index 40d3ec5..491f218 100644
--- a/pts/test-resources/md-gromacs/install.sh
+++ b/pts/test-resources/md-gromacs/install.sh
@@ -49,7 +49,7 @@ if [ -f $THIS_DIR/flopcount ]
rm -f $THIS_DIR/flopcount
fi
mkdir $THIS_DIR/gmxbench
-tar -xvf gmxbench-3.0.tar.gz -C $THIS_DIR/gmxbench/ &>/dev/null
+tar -xvf gmxbench-3.0.tar.gz -C $THIS_DIR/gmxbench/ 1>/dev/null 2>&1

case "\$1" in
\"villin\")
@@ -75,12 +75,12 @@ esac

case "\$2" in
\"mpi\")
- $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
+ $THIS_DIR/gromacs333_/bin/grompp -np \$NUM_CPU_CORES -nov 1>/dev/null 2>&1
+ $THIS_DIR/mpich2_/bin/mpiexec -np \$NUM_CPU_CORES $THIS_DIR/gromacs333_/bin/mdrun 1>$THIS_DIR/flopcount 2>&1
;;
\"single-node\")
- $THIS_DIR/gromacs333_/bin/grompp -nov &>/dev/null
- $THIS_DIR/gromacs333_/bin/mdrun_single &> $THIS_DIR/flopcount
+ $THIS_DIR/gromacs333_/bin/grompp -nov 1>/dev/null 2>&1
+ $THIS_DIR/gromacs333_/bin/mdrun_single 1>$THIS_DIR/flopcount 2>&1
;;
*)
exit

Michael
05-09-2008, 08:28 AM
Looks like that fixed it, thanks: http://global.phoronix-test-suite.com/index.php?k=profile&u=michael-10513-17000-220

uncle_fungus
05-15-2008, 05:42 PM
Patch to add new *size info to profile (and change state to verified if that's ok).
diff --git a/pts/test-profiles/md-gromacs.xml b/pts/test-profiles/md-gromacs.xml
index 20da79f..bc08eea 100644
--- a/pts/test-profiles/md-gromacs.xml
+++ b/pts/test-profiles/md-gromacs.xml
@@ -4,8 +4,10 @@
<TestType>Processor</TestType>
<SoftwareType>Scientific</SoftwareType>
<License>FREE</License>
- <Status>UNVERIFIED</Status>
+ <Status>VERIFIED</Status>
<Maintainer>Andrew Schofield</Maintainer>
+ <DownloadSize>30</DownloadSize>
+ <EnvironmentSize>231</EnvironmentSize>
</TestProfile>
<TestInformation>
<Title>GROMACS MD Benchmark</Title>

Michael
05-16-2008, 05:34 AM
Should be in git shortly.

uncle_fungus
08-11-2008, 12:46 PM
Update for md-gromacs test profile and molecular-dynamics test suite.
Reduces overall environment size by removing redundant binaries and adds double precision tests to the profile and suite.

diff --git a/pts/test-profiles/md-gromacs.xml b/pts/test-profiles/md-gromacs.xml
index 833f9bb..5bb56cc 100644
--- a/pts/test-profiles/md-gromacs.xml
+++ b/pts/test-profiles/md-gromacs.xml
@@ -1,13 +1,13 @@
<PhoronixTestSuite>
<TestProfile>
- <Version>1.0.0</Version>
+ <Version>1.1.0</Version>
<TestType>Processor</TestType>
<SoftwareType>Scientific</SoftwareType>
<License>FREE</License>
<Status>VERIFIED</Status>
<Maintainer>Andrew Schofield</Maintainer>
<DownloadSize>30</DownloadSize>
- <EnvironmentSize>247</EnvironmentSize>
+ <EnvironmentSize>106</EnvironmentSize>
</TestProfile>
<TestInformation>
<Title>GROMACS MD Benchmark</Title>
@@ -59,5 +59,20 @@
</Entry>
</Menu>
</Option>
+ <Option>
+ <DisplayName>Precision</DisplayName>
+ <Identifier>precision</Identifier>
+ <ArgumentName></ArgumentName>
+ <Menu>
+ <Entry>
+ <Name>Single Precision (SSE)</Name>
+ <Value>single</Value>
+ </Entry>
+ <Entry>
+ <Name>Double Precision (SSE2)</Name>
+ <Value>double</Value>
+ </Entry>
+ </Menu>
+ </Option>
</TestSettings>
</PhoronixTestSuite>
diff --git a/pts/test-resources/md-gromacs/install.sh b/pts/test-resources/md-gromacs/install.sh
index c343439..5c10044 100644
--- a/pts/test-resources/md-gromacs/install.sh
+++ b/pts/test-resources/md-gromacs/install.sh
@@ -1,6 +1,9 @@
#!/bin/sh

THIS_DIR=$(pwd)
+rm -rf $THIS_DIR/fftw_
+rm -rf $THIS_DIR/mpich2_
+rm -rf $THIS_DIR/gromacs333_
mkdir $THIS_DIR/fftw_
mkdir $THIS_DIR/mpich2_
mkdir $THIS_DIR/gromacs333_
@@ -27,16 +30,28 @@ rm -rf mpich2-1.0.7/

tar -xvf gromacs-3.3.3.tar.gz
cd gromacs-3.3.3/
-./configure --prefix=$THIS_DIR/gromacs333_ --enable-mpi CPPFLAGS=-I$THIS_DIR/fftw_/include LDFLAGS=-L$THIS_DIR/fftw_/lib PATH=$THIS_DIR/mpich2_/bin/:$PATH
+./configure --prefix=$THIS_DIR/gromacs333_ --enable-mpi --program-suffix="_SSE_MPI" CPPFLAGS=-I$THIS_DIR/fftw_/include LDFLAGS=-L$THIS_DIR/fftw_/lib PATH=$THIS_DIR/mpich2_/bin/:$PATH
make -j $NUM_CPU_JOBS PATH=$THIS_DIR/mpich2_/bin/:$PATH
make install
make clean
-./configure --prefix=$THIS_DIR/gromacs333_ CPPFLAGS=-I$THIS_DIR/fftw_/include LDFLAGS=-L$THIS_DIR/fftw_/lib --program-suffix="_single"
-make mdrun
-make install-mdrun
+./configure --prefix=$THIS_DIR/gromacs333_ CPPFLAGS=-I$THIS_DIR/fftw_/include LDFLAGS=-L$THIS_DIR/fftw_/lib --program-suffix="_SSE"
+make -j $NUM_CPU_JOBS
+make install
+make clean
+./configure --prefix=$THIS_DIR/gromacs333_ --enable-mpi --disable-float --program-suffix="_SSE2_MPI" CPPFLAGS=-I$THIS_DIR/fftw_/include LDFLAGS=-L$THIS_DIR/fftw_/lib PATH=$THIS_DIR/mpich2_/bin/:$PATH
+make -j $NUM_CPU_JOBS PATH=$THIS_DIR/mpich2_/bin/:$PATH
+make install
+make clean
+./configure --prefix=$THIS_DIR/gromacs333_ CPPFLAGS=-I$THIS_DIR/fftw_/include LDFLAGS=-L$THIS_DIR/fftw_/lib --disable-float --program-suffix="_SSE2"
+make -j $NUM_CPU_JOBS
+make install
cd ..
rm -rf gromacs-3.3.3/

+cd gromacs333_/bin
+ls --indicator-style=none | grep -i -v -e "grompp\|mdrun" | xargs rm
+cd ../..
+
echo "#!/bin/sh
if [ -d $THIS_DIR/gmxbench ]
then
@@ -49,6 +64,18 @@ fi
mkdir $THIS_DIR/gmxbench
tar -xvf gmxbench-3.0.tar.gz -C $THIS_DIR/gmxbench/ 1>/dev/null 2>&1

+case "\$3" in
+\"single\")
+ PRECISION=\"SSE\"
+ ;;
+\"double\")
+ PRECISION=\"SSE2\"
+ ;;
+*)
+ exit
+ ;;
+esac
+
case "\$1" in
\"villin\")
cd $THIS_DIR/gmxbench/d.villin/
@@ -67,18 +94,15 @@ case "\$1" in
exit
;;
esac
-#cat grompp.mdp | sed 's/nsteps = 5000/nsteps = 5000/' > grompp.mdp.new
-#rm -f grompp.mdp
-#mv grompp.mdp.new grompp.mdp

case "\$2" in
\"mpi\")
- $THIS_DIR/gromacs333_/bin/grompp -np \$NUM_CPU_CORES -nov 1>/dev/null 2>&1
- $THIS_DIR/mpich2_/bin/mpiexec -np \$NUM_CPU_CORES $THIS_DIR/gromacs333_/bin/mdrun 1>$THIS_DIR/flopcount 2>&1
+ $THIS_DIR/gromacs333_/bin/grompp_\$PRECISION\_MPI -np \$NUM_CPU_CORES -nov 1>/dev/null 2>&1
+ $THIS_DIR/mpich2_/bin/mpiexec -np \$NUM_CPU_CORES $THIS_DIR/gromacs333_/bin/mdrun_\$PRECISION\_MPI 1>$THIS_DIR/flopcount 2>&1
;;
\"single-node\")
- $THIS_DIR/gromacs333_/bin/grompp -nov 1>/dev/null 2>&1
- $THIS_DIR/gromacs333_/bin/mdrun_single 1>$THIS_DIR/flopcount 2>&1
+ $THIS_DIR/gromacs333_/bin/grompp_\$PRECISION -nov 1>/dev/null 2>&1
+ $THIS_DIR/gromacs333_/bin/mdrun_\$PRECISION 1>$THIS_DIR/flopcount 2>&1
;;
*)
exit
diff --git a/pts/test-suites/molecular-dynamics.xml b/pts/test-suites/molecular-dynamics.xml
index 2f12809..4714a4a 100644
--- a/pts/test-suites/molecular-dynamics.xml
+++ b/pts/test-suites/molecular-dynamics.xml
@@ -1,6 +1,6 @@
<PhoronixTestSuite>
<SuiteInformation>
- <Version>1.0.0</Version>
+ <Version>1.1.0</Version>
<TestType>Processor</TestType>
<Title>Molecular Dynamics Test Suite</Title>
<Maintainer>Andrew Schofield</Maintainer>
@@ -8,22 +8,42 @@
</SuiteInformation>
<RunTest>
<Test>md-gromacs</Test>
- <Arguments>villin single-node</Arguments>
- <Description>Single-node Villin</Description>
+ <Arguments>villin single-node single</Arguments>
+ <Description>Single-node Villin with Single Precision</Description>
</RunTest>
<RunTest>
<Test>md-gromacs</Test>
- <Arguments>villin mpi</Arguments>
- <Description>Parallel Villin</Description>
+ <Arguments>villin single-node double</Arguments>
+ <Description>Single-node Villin with Double Precision</Description>
</RunTest>
<RunTest>
<Test>md-gromacs</Test>
- <Arguments>lzm single-node</Arguments>
- <Description>Single-node Lysozyme</Description>
+ <Arguments>villin mpi single</Arguments>
+ <Description>Parallel Villin with Single Precision</Description>
</RunTest>
<RunTest>
<Test>md-gromacs</Test>
- <Arguments>lzm mpi</Arguments>
- <Description>Parallel Lysozyme</Description>
+ <Arguments>villin mpi double</Arguments>
+ <Description>Parallel Villin with Double Precision</Description>
+ </RunTest>
+ <RunTest>
+ <Test>md-gromacs</Test>
+ <Arguments>lzm single-node single</Arguments>
+ <Description>Single-node Lysozyme with Single Precision</Description>
+ </RunTest>
+ <RunTest>
+ <Test>md-gromacs</Test>
+ <Arguments>lzm single-node double</Arguments>
+ <Description>Single-node Lysozyme with Double Precision</Description>
+ </RunTest>
+ <RunTest>
+ <Test>md-gromacs</Test>
+ <Arguments>lzm mpi single</Arguments>
+ <Description>Parallel Lysozyme with Single Precision</Description>
+ </RunTest>
+ <RunTest>
+ <Test>md-gromacs</Test>
+ <Arguments>lzm mpi double</Arguments>
+ <Description>Parallel Lysozyme with Double Precision</Description>
</RunTest>
</PhoronixTestSuite>

Michael
08-11-2008, 05:03 PM
Thanks, as always, the updated test profile and suite are now in git. If you could test it out, that would be great. There was a problem applying the patch so I had to do it manually.

uncle_fungus
08-11-2008, 06:04 PM
The patch seems to have worked. Thanks.