<div dir="ltr">Dear MMTK users,<br><br>I want to perform an all-atom normal mode calculation with MMTK. For that reason I need to perform a minimization which takes some time on a single CPU. I therefore tried to build MMTK with the MPI module of Scientific python in the hope of running on several CPU&#39;s. The installation went fine, and I can successfully run the MPI example that is attached with MMTK. I then built my own MPI minimization script. It works fine, except that I get no speed-up. I would try to get a speed up of the MPI example, but I guess the system is too small to get a speed-up on more CPU&#39;s. I guess whats happening is that I run 4 identical jobs instead of one job in parallel... :-(&nbsp; Details about the versions used, and the script is attached below.  <br>
<br>Any tips are highly appreciated. <br><br>Best regards,<br>Lars Skjaerven<br>Phd-student<br>University of Bergen, Norway<br><br>--------------------------<br>Execute the script:<br>mpirun -n 4 mpipython mpi_minimization.py<br>
----------------------------<br><br>The following versions were used:<br>openmpi 1.3<br>
Python 2.5.2<br>Numeric 23.8.2<br>netcdf 3.6.2<br>Scientific python 2.6.2<br>MMTK 2.4.10 (built with mpipython)<br>----------------------------<br><br>The following minimization script was used:<br>------------------------------<br>
if world.rank == 0:<br>
&nbsp;&nbsp;&nbsp; universe = InfiniteUniverse(Amber94ForceField())<br>&nbsp;&nbsp;&nbsp; universe.protein = Protein(pdbfile)<br>&nbsp;&nbsp;&nbsp; save(universe, &#39;mpi.setup&#39;)<br><br>world.barrier()<br>universe = load(&#39;mpi.setup&#39;)<br><br># Minimize<br>

minimizer = SteepestDescentMinimizer(universe, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mpi_communicator = world )<br><br>if world.rank == 0:<br>&nbsp;&nbsp;&nbsp; output_actions = [StandardLogOutput(10)]<br>else:<br>&nbsp;&nbsp;&nbsp; # Nothing for the other processors<br>

&nbsp;&nbsp;&nbsp; output_actions = []<br>&nbsp;&nbsp;&nbsp; <br>minimizer( convergence = 1.e-3, steps = 1000, actions=output_actions )<br><br>if world.rank == 0:<br>&nbsp;&nbsp;&nbsp; b=time.time()<br>&nbsp;&nbsp;&nbsp; print &quot;Total time elapsed: &quot; + str(b-a)<br><br># Synchronize<br>

world.barrier()<br>--------------------------------------<br><br><br><br></div>