mailRe: r27843 - /trunk/pipe_control/minimise.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Edward d'Auvergne on June 08, 2015 - 17:11:
Hi Troels,

Unfortunately this commit introduces a bug:


On 27 May 2015 at 03:09,  <tlinnet@xxxxxxxxxxxxx> wrote:
Author: tlinnet
Date: Wed May 27 03:09:55 2015
New Revision: 27843

URL: http://svn.gna.org/viewcvs/relax?rev=27843&view=rev
Log:
In pipe_control of minimise, adding the possibility to control verbosity in 
multi processor mode.

Modified:
    trunk/pipe_control/minimise.py

Modified: trunk/pipe_control/minimise.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/pipe_control/minimise.py?rev=27843&r1=27842&r2=27843&view=diff
==============================================================================
--- trunk/pipe_control/minimise.py      (original)
+++ trunk/pipe_control/minimise.py      Wed May 27 03:09:55 2015
@@ -31,6 +31,7 @@
 from lib.float import isNaN
 from lib.io import write_data
 from multi import Processor_box
+from multi.misc import Verbosity; mverbosity = Verbosity()
 from pipe_control.mol_res_spin import return_spin, spin_loop
 from pipe_control import pipes
 from pipe_control.pipes import check_pipe
@@ -428,7 +429,7 @@
     cdp.grid_zoom_level = level


-def minimise(min_algor=None, line_search=None, hessian_mod=None, 
hessian_type=None, func_tol=None, grad_tol=None, max_iter=None, 
constraints=True, scaling=True, verbosity=1, sim_index=None):
+def minimise(min_algor=None, line_search=None, hessian_mod=None, 
hessian_type=None, func_tol=None, grad_tol=None, max_iter=None, 
constraints=True, scaling=True, verbosity=1, mp_verbosity=0, 
sim_index=None):
     """Minimisation function.

     @keyword min_algor:         The minimisation algorithm to use.
@@ -451,6 +452,8 @@
     @type scaling:              bool
     @keyword verbosity:         The amount of information to print.  The 
higher the value, the greater the verbosity.
     @type verbosity:            int
+    @keyword mp_verbosity:      The amount of information to print from 
the multi processor module.  The higher the value, the greater the 
verbosity.
+    @type mp_verbosity:         int
     @keyword sim_index:         The index of the simulation to optimise.  
This should be None if normal optimisation is desired.
     @type sim_index:            None or int
     """
@@ -487,6 +490,9 @@
     processor_box = Processor_box()
     processor = processor_box.processor

+    # Store the verbosity level for the multiprocessor.
+    mverbosity.set(mp_verbosity)
+
     # Single Monte Carlo simulation.
     if sim_index != None:
         # Reset the minimisation statistics.
@@ -511,8 +517,8 @@
             api.minimise(min_algor=min_algor, min_options=min_options, 
func_tol=func_tol, grad_tol=grad_tol, max_iterations=max_iter, 
constraints=constraints, scaling_matrix=scaling_matrix, 
verbosity=verbosity-1, sim_index=i)

             # Print out.
-            if verbosity and not processor.is_queued():
-                print("Simulation " + repr(i+1))
+            if verbosity and processor.is_queued():
+                print("Queueing Simulation nr:" + repr(i+1))

The first print statement should not have been deleted!  In the
uni-processor mode, it is required to print out the currently
completed MC simulation.  For example before:

"""
$ ./relax -sd Mf.test_opt_constr_newton_gmw_mt_S2_0_970_te_2048_Rex_0_149
[snip]
relax> monte_carlo.setup(number=3)

relax> monte_carlo.create_data(method='back_calc',
distribution='measured', fixed_error=None)

relax> monte_carlo.initial_values()

relax> minimise.execute(min_algor='newton', line_search=None,
hessian_mod=None, hessian_type=None, func_tol=1e-25, grad_tol=None,
max_iter=10000000, constraints=True, scaling=True, verbosity=1)

Over-fit spin deselection:
No spins have been deselected.
Simulation 1
Simulation 2
Simulation 3

relax> monte_carlo.error_analysis()
"""

And after:

"""
$ ./relax -sd Mf.test_opt_constr_newton_gmw_mt_S2_0_970_te_2048_Rex_0_149
[snip]
relax> monte_carlo.setup(number=3)

relax> monte_carlo.create_data(method='back_calc',
distribution='measured', fixed_error=None)

relax> monte_carlo.initial_values()

relax> minimise.execute(min_algor='newton', line_search=None,
hessian_mod=None, hessian_type=None, func_tol=1e-25, grad_tol=None,
max_iter=10000000, constraints=True, scaling=True, verbosity=1,
mp_verbosity=0)

Over-fit spin deselection:
No spins have been deselected.

relax> monte_carlo.error_analysis()
"""

The second printout might be better if the mp_verbosity flag is set,
rather than verbosity.  This is not needed for normal analysis, as the
aim is to have the same output and behaviour from the uni-processor
and multi-processor, i.e. before the change:

"""
$ mpirun -np 6 relax -sd
Mf.test_opt_constr_newton_gmw_mt_S2_0_970_te_2048_Rex_0_149
--multi=mpi4py
[snip]
relax> monte_carlo.setup(number=3)

relax> monte_carlo.create_data(method='back_calc',
distribution='measured', fixed_error=None)

relax> monte_carlo.initial_values()

relax> minimise.execute(min_algor='newton', line_search=None,
hessian_mod=None, hessian_type=None, func_tol=1e-25, grad_tol=None,
max_iter=10000000, constraints=True, scaling=True, verbosity=1)

Over-fit spin deselection:
No spins have been deselected.

Idle set:    set([2, 3, 4, 5])
Running set: set([1])
Simulation 1

Idle set:    set([2, 3, 4, 5])
Running set: set([1])
Simulation 2

Idle set:    set([2, 3, 4, 5])
Running set: set([1])
Simulation 3

relax> monte_carlo.error_analysis()
"""

Currently the muti-processor output is delayed until the end, but all
the "Queuing..." statements will pop out at the start before anything
is run.  Neither is ideal.

Also, I would suggest having instead:

+            if mp_verbosity and processor.is_queued():
+                print("Queueing simulation " + repr(i+1))

This is to maintain the same format.  Also note that these print
statements are in all of the functions of pipe_control.minimise,
however this change is only for one of the functions.  So if you would
like to keep this, then please extend to all the functions.

Cheers,

Edward



Related Messages


Powered by MHonArc, Updated Thu Jun 11 14:20:05 2015