mailRe: I am now faster than trunk per spin calc.


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

Header


Content

Posted by Edward d'Auvergne on June 11, 2014 - 18:52:
Hi,

You may have some processes running in the background.  If something
is using up the CPU, then the profile timings will not be very
accurate.  They will be more accurate than numerical timing of code
execution, but they are still affected.  You should try to fix this
issue, as you may miss a large speed up resulting from a series of
small speed ups not being applied.  Especially if one of those small
speed ups eliminates a bottleneck which would allow other speed ups to
really make things faster.

Regards,

Edward


On 11 June 2014 18:29, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx> wrote:
Hi.

My mac is shifting times around.
I have killed my dropbox, and google drive.

But, I cant get the timings stable.

If I do 10X profiling, the times shift!


2014-06-11 17:42 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:
Hi,

Do you have the timing numbers?  Also, the asarray() function should
not be used within the target function as these should already be
numpy array structures - this just slows down the proposed speed up.
My timings are for the 'disp_spin_speed' branch at r23844:

"""
Wed Jun 11 17:13:36 2014    /tmp/tmpcQ4dOK

         783029 function calls (783016 primitive calls) in 2.395 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    2.395    2.395 <string>:1(<module>)
        1    0.011    0.011    2.395    2.395 profiling_cr72.py:427(single)
    10000    0.009    0.000    2.379    0.000 profiling_cr72.py:413(calc)
    10000    0.070    0.000    2.370    0.000 
relax_disp.py:996(func_CR72_full)
    10000    0.163    0.000    2.263    0.000 
relax_disp.py:550(calc_CR72_chi2)
    10003    0.965    0.000    1.726    0.000 cr72.py:101(r2eff_CR72)
    70047    0.400    0.000    0.400    0.000 {method 'reduce' of
'numpy.ufunc' objects}
    10002    0.027    0.000    0.346    0.000 core.py:1701(masked_where)
    30006    0.038    0.000    0.255    0.000 fromnumeric.py:1621(sum)
    30006    0.026    0.000    0.196    0.000 _methods.py:23(_sum)
    10000    0.087    0.000    0.169    0.000 chi2.py:72(chi2_rankN)
    20006    0.021    0.000    0.153    0.000 fromnumeric.py:2132(amin)
    10008    0.017    0.000    0.150    0.000 {method 'view' of
'numpy.ndarray' objects}
    30000    0.142    0.000    0.142    0.000 {method 'outer' of
'numpy.ufunc' objects}
    10002    0.021    0.000    0.137    0.000 core.py:1426(make_mask)
    10004    0.021    0.000    0.133    0.000 
core.py:2774(__array_finalize__)
    20006    0.018    0.000    0.131    0.000 _methods.py:19(_amin)
    10004    0.052    0.000    0.106    0.000 core.py:2749(_update_from)
"""

From the same revision with the patch but not using asarray(), I see:

"""
Wed Jun 11 17:18:38 2014    /tmp/tmpi1KoO4

         423026 function calls (423013 primitive calls) in 1.902 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    1.902    1.902 <string>:1(<module>)
        1    0.010    0.010    1.902    1.902 profiling_cr72.py:427(single)
    10000    0.009    0.000    1.888    0.000 profiling_cr72.py:413(calc)
    10000    0.070    0.000    1.880    0.000 
relax_disp.py:996(func_CR72_full)
    10000    0.162    0.000    1.772    0.000 
relax_disp.py:550(calc_CR72_chi2)
    10003    0.853    0.000    1.234    0.000 cr72.py:101(r2eff_CR72)
    60047    0.319    0.000    0.319    0.000 {method 'reduce' of
'numpy.ufunc' objects}
    30006    0.040    0.000    0.248    0.000 fromnumeric.py:1621(sum)
    30006    0.024    0.000    0.185    0.000 _methods.py:23(_sum)
    10000    0.084    0.000    0.170    0.000 chi2.py:72(chi2_rankN)
    30000    0.143    0.000    0.143    0.000 {method 'outer' of
'numpy.ufunc' objects}
    20006    0.022    0.000    0.134    0.000 fromnumeric.py:2132(amin)
    20006    0.018    0.000    0.111    0.000 _methods.py:19(_amin)
    10004    0.011    0.000    0.084    0.000 fromnumeric.py:2048(amax)
    10004    0.010    0.000    0.073    0.000 _methods.py:15(_amax)
    30004    0.018    0.000    0.044    0.000 numeric.py:392(asarray)
    20002    0.029    0.000    0.029    0.000 {method 'flatten' of
'numpy.ndarray' objects}
    40001    0.026    0.000    0.026    0.000 {method 'reshape' of
'numpy.ndarray' objects}
    30041    0.025    0.000    0.025    0.000 {numpy.core.multiarray.array}
    30028    0.023    0.000    0.023    0.000 {isinstance}
"""

These use nr_iter = 10000 in the profiling_cr72.py script.  With even
more (nr_iter = 100000), I see a total time change from 24.176 to
18.508 seconds for the single spins.  I will attach the patch to task
#7807 (https://gna.org/task/?7807) which applies to r23847 of the
disp_spin_speed branch, but does not use asarray() and retains the
min(fabs(dw)) call.  It is
https://gna.org/task/index.php?7807#comment113.  I will now test on a
VM with 32-bit Linux, 32-bit Windows, 64-bit Windows, and with a Mac
OS X test machine to restore my sanity.

Regards,

Edward


On 11 June 2014 17:05, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx> wrote:
Diff is

-from numpy import arccosh, array, cos, cosh, isfinite, fabs, min,
max, multiply, sqrt, subtract, sum
+from numpy import arccosh, array, cos, cosh, isfinite, min, max,
multiply, sqrt, subtract, sum
 from numpy.ma import fix_invalid, masked_greater_equal, masked_less,
masked_where

 # Repetitive calculations (to speed up calculations).
 eta_scale = 2.0**(-3.0/2.0)

-def r2eff_CR72(r20a=None, r20b=None, pA=None, dw=None, kex=None,
cpmg_frqs=None, back_calc=None, num_points=None):
+def r2eff_CR72(r20a=None, r20a_orig=1.0, r20b=None, r20b_orig=0.0,
pA=None, dw=None, dw_orig=None, kex=None, cpmg_frqs=None,
back_calc=None, num_points=None):
     """Calculate the R2eff values for the CR72 model.

     See the module docstring for details.
@@ -106,12 +106,18 @@ def r2eff_CR72(r20a=None, r20b=None, pA=None,
dw=None, kex=None, cpmg_frqs=None,

     @keyword r20a:          The R20 parameter value of state A (R2
with no exchange).
     @type r20a:             numpy float array of rank 
[NE][NS][[NM][NO][ND]
+    @keyword r20a_orig:     The R20 parameter value of state A (R2
with no exchange). This is only for faster checking of zero value,
which result in no exchange.
+    @type r20a_orig:        numpy float array of rank-1
     @keyword r20b:          The R20 parameter value of state B (R2
with no exchange).
     @type r20b:             numpy float array of rank 
[NE][NS][[NM][NO][ND]
+    @keyword r20b_orig:     The R20 parameter value of state B (R2
with no exchange). This is only for faster checking of zero value,
which result in no exchange.
+    @type r20b_orig:        numpy float array of rank-1
     @keyword pA:            The population of state A.
     @type pA:               float
     @keyword dw:            The chemical exchange difference between
states A and B in rad/s.
     @type dw:               numpy array of rank [NE][NS][[NM][NO][ND]
+    @keyword dw_orig:       The chemical exchange difference between
states A and B in ppm. This is only for faster checking of zero value,
which result in no exchange.
+    @type dw_orig:          numpy float array of rank-1
     @keyword kex:           The kex parameter value (the exchange
rate in rad/s).
     @type kex:              float
     @keyword cpmg_frqs:     The CPMG nu1 frequencies.
@@ -133,7 +139,7 @@ def r2eff_CR72(r20a=None, r20b=None, pA=None,
dw=None, kex=None, cpmg_frqs=None,
             return

     # Test if dw is zero. Wait for replacement, since this is spin 
specific.
-    if min(fabs(dw)) == 0.0:
+    if min(dw_orig) == 0.0:
         t_dw_zero = True
         mask_dw_zero = masked_where(dw == 0.0, dw)

@@ -147,7 +153,9 @@ def r2eff_CR72(r20a=None, r20b=None, pA=None,
dw=None, kex=None, cpmg_frqs=None,
     k_AB = pB * kex

     # The Psi and zeta values.
-    if sum(r20a - r20b) != 0.0:
+    if sum(r20a_orig - r20b_orig) != 0.0:
+    #if sum(r20a - r20b) != 0.0:
+    #if sum(subtract(r20a, r20b)) != 0.0:
         fact = r20a - r20b - k_BA + k_AB
         Psi = fact**2 - dw2 + 4.0*pA*pB*kex**2
         zeta = 2.0*dw * fact
diff --git a/target_functions/relax_disp.py 
b/target_functions/relax_disp.py
index d19eaaf..5b2bea8 100644
--- a/target_functions/relax_disp.py
+++ b/target_functions/relax_disp.py
@@ -572,7 +572,7 @@ class Dispersion:
         self.r20b_struct[:] = multiply.outer(
asarray(R20B).reshape(self.NE, self.NS, self.NM), self.no_nd_struct )

         ## Back calculate the R2eff values.
-        r2eff_CR72(r20a=self.r20a_struct, r20b=self.r20b_struct,
pA=pA, dw=self.dw_struct, kex=kex, cpmg_frqs=self.cpmg_frqs_a,
back_calc=self.back_calc_a, num_points=self.num_disp_points_a)
+        r2eff_CR72(r20a=self.r20a_struct, r20a_orig=asarray(R20A),
r20b=self.r20b_struct, r20b_orig=asarray(R20B), pA=pA,
dw=self.dw_struct, dw_orig=asarray(dw), kex=kex,
cpmg_frqs=self.cpmg_frqs_a, back_calc=self.back_calc

         # Clean the data for all values, which is left over at the
end of arrays.
         self.back_calc_a[self.mask_set_blank.mask] = 0.0
diff --git a/test_suite/shared_data/dispersion/profiling/profiling_cr72.py
b/test_suite/shared_data/dispersion/profiling/profiling_cr72.py
index 9b892b0..f437f8c 100755
--- a/test_suite/shared_data/dispersion/profiling/profiling_cr72.py
+++ b/test_suite/shared_data/dispersion/profiling/profiling_cr72.py
@@ -55,7 +55,7 @@ from specific_analyses.relax_disp.variables import
EXP_TYPE_CPMG_SQ, MODEL_B14_F
 def main():
     if True:
         # Nr of iterations.
-        nr_iter = 1
+        nr_iter = 20000

         # Print statistics.
         verbose = True
@@ -78,7 +78,7 @@ def main():
         if verbose:
             s_stats.print_stats()

-    if True:
+    if False:

2014-06-11 17:04 GMT+02:00 Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx>:
Hi Edward.

It is impossible for me to see a difference, if using original 
parameters!

No improvement.

2014-06-11 17:00 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:
Most data will be from 2 or more magnetic fields, as that is rather
essential.  But the change will not be significant.

Regards,

Edward


On 11 June 2014 16:42, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx> 
wrote:
Hi Ed.

I will keep the flag: has_missing.

I guess, that most data will be one field ?

So, that check is faster than computing for spins missings.

Best
Troels

2014-06-11 16:20 GMT+02:00 Troels Emtekær Linnet 
<tlinnet@xxxxxxxxxxxxx>:
Welllll.....

Argghhh...

Okay!

But only because of global warming, and saving energy and computation 
costs...

Best
Troels

2014-06-11 16:19 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:
Pity, I just tested and for the single spin case I see a 33% speed up
with this change (nr_iter = 10000, cumtime 2.41 seconds verses 1.80
seconds for the change).  Are you really, really sure this idea 
should
not be used and is not worth such a speed up?

Regards,

Edward



On 11 June 2014 16:05, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx> 
wrote:
Hi Edward.

I wont make that change.

I will keep the clean implementation as it is.

Best
Troels

2014-06-11 15:52 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:
By the way, I just obtained a ~10% speed up using your profiling
script 
test_suite/shared_data/dispersion/profiling/profiling_cr72.py
if I send in the original parameter vector R20A, R20B, and dw 
arrays
and check these values instead of the full structures.  See the 
diff
below for ideas.  With a little more polish and more numpy ufunc
usage, you should be able to squeeze more speed out of the CR72 
model
still.

Regards,

Edward


P. S.  Here is the diff:

"""
Index: lib/dispersion/cr72.py
===================================================================
--- lib/dispersion/cr72.py      (revision 23841)
+++ lib/dispersion/cr72.py      (working copy)
@@ -92,13 +92,13 @@
 """

 # Python module imports.
-from numpy import arccosh, array, cos, cosh, isfinite, fabs, min,
max, sqrt, subtract, sum
+from numpy import arccosh, array, cos, cosh, isfinite, fabs, min,
max, sqrt, subtract, sum, multiply
 from numpy.ma import fix_invalid, masked_greater_equal, 
masked_less,
masked_where

 # Repetitive calculations (to speed up calculations).
 eta_scale = 2.0**(-3.0/2.0)

-def r2eff_CR72(r20a=None, r20b=None, pA=None, dw=None, kex=None,
cpmg_frqs=None, back_calc=None, num_points=None):
+def r2eff_CR72(r20a_orig=None, r20b_orig=None, r20a=None, 
r20b=None,
pA=None, dw_orig=None, dw=None, kex=None, cpmg_frqs=None,
back_calc=None, num_points=None):
     """Calculate the R2eff values for the CR72 model.

     See the module docstring for details.
@@ -133,7 +133,7 @@
             return

     # Test if dw is zero. Wait for replacement, since this is 
spin specific.
-    if min(fabs(dw)) == 0.0:
+    if min(fabs(dw_orig)) == 0.0:
         t_dw_zero = True
         mask_dw_zero = masked_where(dw == 0.0, dw)

@@ -147,7 +147,7 @@
     k_AB = pB * kex

     # The Psi and zeta values.
-    if sum(r20a - r20b) != 0.0:
+    if sum(r20a_orig - r20b_orig) != 0.0:
         fact = r20a - r20b - k_BA + k_AB
         Psi = fact**2 - dw2 + 4.0*pA*pB*kex**2
         zeta = 2.0*dw * fact
@@ -182,7 +182,8 @@
         return

     # Calculate R2eff. This uses the temporary buffer and fill
directly to back_calc.
-    subtract(r20_kex, cpmg_frqs * arccosh( fact ), out=back_calc)
+    multiply(cpmg_frqs, arccosh(fact), out=back_calc)
+    subtract(r20_kex, back_calc, out=back_calc)

     # Replace data in array.
     # If dw is zero.
Index: target_functions/relax_disp.py
===================================================================
--- target_functions/relax_disp.py      (revision 23841)
+++ target_functions/relax_disp.py      (working copy)
@@ -567,7 +567,7 @@
         self.r20b_struct[:] = multiply.outer(
asarray(R20B).reshape(self.NE, self.NS, self.NM), 
self.no_nd_struct )

         ## Back calculate the R2eff values.
-        r2eff_CR72(r20a=self.r20a_struct, r20b=self.r20b_struct,
pA=pA, dw=self.dw_struct, kex=kex, cpmg_frqs=self.cpmg_frqs_a,
back_calc=self.back_calc_a, num_points=self.num_disp_points_a)
+        r2eff_CR72(r20a_orig=R20A, r20b_orig=R20B,
r20a=self.r20a_struct, r20b=self.r20b_struct, pA=pA, dw_orig=dw,
dw=self.dw_struct, kex=kex, cpmg_frqs=self.cpmg_frqs_a,
back_calc=self.back_calc_a, num_points=self.num_disp_points_a)

         # Clean the data for all values, which is left over at the
end of arrays.
         self.back_calc_a = self.back_calc_a*self.disp_struct
Index: 
test_suite/shared_data/dispersion/profiling/profiling_cr72.py
===================================================================
--- test_suite/shared_data/dispersion/profiling/profiling_cr72.py
 (revision 23841)
+++ test_suite/shared_data/dispersion/profiling/profiling_cr72.py
 (working copy)
@@ -55,7 +55,7 @@
 def main():
     if True:
         # Nr of iterations.
-        nr_iter = 1
+        nr_iter = 10000

         # Print statistics.
         verbose = True
@@ -275,7 +275,7 @@
                     back_calc = 
array([0.0]*len(cpmg_frqs[ei][mi][oi]))

                     # Initialise call to function.
-                    r2eff_CR72(r20a=r20a, r20b=r20b, pA=pA,
dw=dw_frq, kex=kex, cpmg_frqs=array(cpmg_frqs[ei][mi][oi]),
back_calc=back_calc, num_points=len(back_calc))
+                    r2eff_CR72(r20a_orig=R20A, r20b_orig=R20B,
r20a=r20a, r20b=r20b, pA=pA, dw_orig=dw_frq, dw=dw_frq, kex=kex,
cpmg_frqs=array(cpmg_frqs[ei][mi][oi]), back_calc=back_calc,
num_points=len(back_calc))

                     for oi in range(len(self.offset)):
                         for di in range(len(self.points[mi])):
@@ -505,4 +505,4 @@
     model = C1.calc(params)
     print(model)

-#test_reshape()
\ No newline at end of file
+#test_reshape()
"""



On 11 June 2014 15:45, Edward d'Auvergne <edward@xxxxxxxxxxxxx> 
wrote:
You wait until you see what happens with your multiple offset 
R1rho data ;)

On 11 June 2014 15:42, Troels Emtekær Linnet 
<tlinnet@xxxxxxxxxxxxx> wrote:
The progress is EXTREME.

Per spin, I am now 1.5 X faster per spin calculation.
Per cluster of 100, I am now 33X faster.

Go one more version up, and it is 64 X faster.

WOW!



----
Checked on MacBook Pro
2.4 GHz Intel Core i5
8 GB 1067 Mhz DDR3 RAM.

Timing for:
3 fields
('sfrq: ', 600000000.0, 'number of cpmg frq', 15, array([ 2., 
6., 10.,
14., 18., 22., 26., 30., 34., 38., 42., 46., 50., 54., 58.]))
('sfrq: ', 800000000.0, 'number of cpmg frq', 20, array([ 2., 
6., 10.,
14., 18., 22., 26., 30., 34., 38., 42., 46., 50., 54., 58., 62., 
66.,
70., 74., 78.]))
('sfrq: ', 900000000.0, 'number of cpmg frq', 22, array([ 2., 
6., 10.,
14., 18., 22., 26., 30., 34., 38., 42., 46., 50., 54., 58., 62., 
66.,
70., 74., 78., 82., 86.]))

iterations of function call: 1000

Timed for simulating 1 or 100 clustered spins.

Find tags:
svn ls "^/tags"
svn switch ^/tags/3.2.2

##############################################################################################
   ncalls  tottime  percall  cumtime  percall 
filename:lineno(function)

############################
For disp_spin_speed r23841 #
############################
1 spin:
        1    0.000    0.000    0.373    0.373 
<string>:1(<module>)
        1    0.001    0.001    0.373    0.373 pf:427(single)
     1000    0.002    0.000    0.366    0.000 pf:413(calc)
     1000    0.012    0.000    0.363    0.000 
relax_disp.py:994(func_CR72_full)
     1000    0.027    0.000    0.345    0.000 
relax_disp.py:545(calc_CR72_chi2)
     1003    0.148    0.000    0.260    0.000 
cr72.py:101(r2eff_CR72)
     7043    0.059    0.000    0.059    0.000 {method 'reduce' of
'numpy.ufunc' objects}
     1000    0.004    0.000    0.052    0.000 
core.py:1701(masked_where)
     3006    0.006    0.000    0.036    0.000 
fromnumeric.py:1621(sum)
     3006    0.004    0.000    0.028    0.000 
_methods.py:23(_sum)
     3000    0.024    0.000    0.024    0.000 {method 'outer' of
'numpy.ufunc' objects}
     1000    0.013    0.000    0.024    0.000 
chi2.py:72(chi2_rankN)
     1000    0.002    0.000    0.024    0.000 {method 'view' of
'numpy.ndarray' objects}
     2006    0.003    0.000    0.023    0.000 
fromnumeric.py:2132(amin)
     1000    0.003    0.000    0.021    0.000 
core.py:2774(__array_finalize__)

100 spins:
        1    0.000    0.000    1.630    1.630 
<string>:1(<module>)
        1    0.003    0.003    1.630    1.630 pf:449(cluster)
     1000    0.004    0.000    1.532    0.002 pf:413(calc)
     1000    0.020    0.000    1.528    0.002 
relax_disp.py:994(func_CR72_full)
     1000    0.073    0.000    1.495    0.001 
relax_disp.py:545(calc_CR72_chi2)
     1300    1.071    0.001    1.285    0.001 
cr72.py:101(r2eff_CR72)
     8528    0.131    0.000    0.131    0.000 {method 'reduce' of
'numpy.ufunc' objects}
        1    0.000    0.000    0.094    0.094 pf:106(__init__)
     3000    0.083    0.000    0.083    0.000 {method 'outer' of
'numpy.ufunc' objects}
     3600    0.009    0.000    0.082    0.000 
fromnumeric.py:1621(sum)
     1000    0.055    0.000    0.079    0.000 
chi2.py:72(chi2_rankN)
     1000    0.006    0.000    0.078    0.000 
core.py:1701(masked_where)
        1    0.019    0.019    0.069    0.069 
pf:173(return_r2eff_arrays)
     3600    0.006    0.000    0.067    0.000 
_methods.py:23(_sum)
     2600    0.006    0.000    0.049    0.000 
fromnumeric.py:2132(amin)
     2600    0.005    0.000    0.042    0.000 
_methods.py:19(_amin)
     1000    0.004    0.000    0.032    0.000 {method 'view' of
'numpy.ndarray' objects}


############################
For disp_spin_speed r23806 #
############################
1 spin:
        1    0.000    0.000    0.546    0.546 
<string>:1(<module>)
        1    0.002    0.002    0.546    0.546 pf:427(single)
     1000    0.003    0.000    0.538    0.001 pf:413(calc)
     1000    0.015    0.000    0.535    0.001 
relax_disp.py:989(func_CR72_full)
     1000    0.042    0.000    0.513    0.001 
relax_disp.py:523(calc_CR72_chi2)
     1003    0.142    0.000    0.365    0.000 
cr72.py:101(r2eff_CR72)
     2003    0.055    0.000    0.181    0.000 
numeric.py:2056(allclose)
    10046    0.083    0.000    0.083    0.000 {method 'reduce' of
'numpy.ufunc' objects}
     3000    0.045    0.000    0.076    0.000 
shape_base.py:761(tile)
     4015    0.006    0.000    0.053    0.000 
fromnumeric.py:1762(any)
     4015    0.004    0.000    0.039    0.000 {method 'any' of
'numpy.ndarray' objects}
     4015    0.005    0.000    0.035    0.000 
_methods.py:31(_any)
     2003    0.003    0.000    0.028    0.000 
fromnumeric.py:1842(all)
     1000    0.014    0.000    0.026    0.000 
chi2.py:72(chi2_rankN)
     2003    0.004    0.000    0.026    0.000 
fromnumeric.py:1621(sum)
     4138    0.012    0.000    0.025    0.000 
numeric.py:2320(seterr)
     2003    0.002    0.000    0.020    0.000 {method 'all' of
'numpy.ndarray' objects}
     2003    0.003    0.000    0.019    0.000 
_methods.py:23(_sum)
     2003    0.003    0.000    0.018    0.000 
_methods.py:35(_all)
    14046    0.016    0.000    0.016    0.000 
{numpy.core.multiarray.array}

100 spins:
        1    0.000    0.000    2.036    2.036 
<string>:1(<module>)
        1    0.003    0.003    2.036    2.036 pf:449(cluster)
     1000    0.004    0.000    1.905    0.002 pf:413(calc)
     1000    0.022    0.000    1.901    0.002 
relax_disp.py:989(func_CR72_full)
     1000    0.098    0.000    1.865    0.002 
relax_disp.py:523(calc_CR72_chi2)
     1300    0.986    0.001    1.511    0.001 
cr72.py:101(r2eff_CR72)
     2300    0.238    0.000    0.434    0.000 
numeric.py:2056(allclose)
     3000    0.058    0.000    0.238    0.000 
shape_base.py:761(tile)
     4000    0.154    0.000    0.154    0.000 {method 'repeat' of
'numpy.ndarray' objects}
    11828    0.147    0.000    0.147    0.000 {method 'reduce' of
'numpy.ufunc' objects}
        1    0.000    0.000    0.129    0.129 pf:106(__init__)
        1    0.021    0.021    0.098    0.098 
pf:173(return_r2eff_arrays)
     1000    0.054    0.000    0.078    0.000 
chi2.py:72(chi2_rankN)
     4609    0.008    0.000    0.073    0.000 
fromnumeric.py:1762(any)
     2300    0.007    0.000    0.055    0.000 
fromnumeric.py:1621(sum)
     4609    0.005    0.000    0.054    0.000 {method 'any' of
'numpy.ndarray' objects}
     4609    0.006    0.000    0.049    0.000 
_methods.py:31(_any)
     2300    0.004    0.000    0.044    0.000 
_methods.py:23(_sum)
     2300    0.005    0.000    0.039    0.000 
fromnumeric.py:1842(all)
     4732    0.016    0.000    0.035    0.000 
numeric.py:2320(seterr)
     4600    0.032    0.000    0.032    0.000 {abs}
     1301    0.004    0.000    0.030    0.000 
fromnumeric.py:2048(amax)
    17016    0.028    0.000    0.028    0.000 
{numpy.core.multiarray.array}

############################
For trunk           r23785 #
############################
1 spin:
        1    0.000    0.000    0.572    0.572 
<string>:1(<module>)
        1    0.002    0.002    0.572    0.572 pf:427(single)
     1000    0.002    0.000    0.565    0.001 pf:413(calc)
     1000    0.013    0.000    0.563    0.001 
relax_disp.py:908(func_CR72_full)
     1000    0.061    0.000    0.543    0.001 
relax_disp.py:456(calc_CR72_chi2)
     3003    0.294    0.000    0.400    0.000 
cr72.py:100(r2eff_CR72)
    12036    0.100    0.000    0.100    0.000 {method 'reduce' of
'numpy.ufunc' objects}
     3000    0.042    0.000    0.078    0.000 chi2.py:32(chi2)
     6003    0.011    0.000    0.072    0.000 
fromnumeric.py:1621(sum)
     6003    0.008    0.000    0.055    0.000 
_methods.py:23(_sum)
     3003    0.005    0.000    0.037    0.000 
fromnumeric.py:2048(amax)
     3003    0.004    0.000    0.033    0.000 
fromnumeric.py:2132(amin)
     3003    0.004    0.000    0.032    0.000 
_methods.py:15(_amax)
     3003    0.004    0.000    0.029    0.000 
_methods.py:19(_amin)
     6003    0.006    0.000    0.006    0.000 {isinstance}

100 spins:
        1    0.000    0.000   53.864   53.864 
<string>:1(<module>)
        1    0.004    0.004   53.864   53.864 pf:449(cluster)
     1000    0.005    0.000   53.777    0.054 pf:413(calc)
     1000    0.022    0.000   53.772    0.054 
relax_disp.py:908(func_CR72_full)
     1000    6.340    0.006   53.735    0.054 
relax_disp.py:456(calc_CR72_chi2)
   300300   28.936    0.000   39.278    0.000 
cr72.py:100(r2eff_CR72)
  1200927    9.811    0.000    9.811    0.000 {method 'reduce' of
'numpy.ufunc' objects}
   300000    4.227    0.000    7.738    0.000 chi2.py:32(chi2)
   600300    1.047    0.000    7.051    0.000 
fromnumeric.py:1621(sum)
   600300    0.752    0.000    5.434    0.000 
_methods.py:23(_sum)
   300300    0.445    0.000    3.580    0.000 
fromnumeric.py:2048(amax)
   300300    0.413    0.000    3.221    0.000 
fromnumeric.py:2132(amin)
   300300    0.431    0.000    3.134    0.000 
_methods.py:15(_amax)
   300300    0.383    0.000    2.808    0.000 
_methods.py:19(_amin)
   600300    0.570    0.000    0.570    0.000 {isinstance}


############################
For tag 3.2.2              #
svn switch ^/tags/3.2.2    #
############################

1 spin:
        1    0.000    0.000    0.569    0.569 
<string>:1(<module>)
        1    0.002    0.002    0.569    0.569 pf:427(single)
     1000    0.002    0.000    0.562    0.001 pf:413(calc)
     1000    0.005    0.000    0.560    0.001 
relax_disp.py:907(func_CR72_full)
     1000    0.062    0.000    0.555    0.001 
relax_disp.py:456(calc_CR72_chi2)
     3003    0.299    0.000    0.407    0.000 
cr72.py:100(r2eff_CR72)
    12036    0.103    0.000    0.103    0.000 {method 'reduce' of
'numpy.ufunc' objects}
     3000    0.044    0.000    0.082    0.000 chi2.py:32(chi2)
     6003    0.011    0.000    0.074    0.000 
fromnumeric.py:1621(sum)
     6003    0.008    0.000    0.057    0.000 
_methods.py:23(_sum)
     3003    0.005    0.000    0.037    0.000 
fromnumeric.py:2048(amax)
     3003    0.004    0.000    0.034    0.000 
fromnumeric.py:2132(amin)
     3003    0.004    0.000    0.033    0.000 
_methods.py:15(_amax)
     3003    0.004    0.000    0.029    0.000 
_methods.py:19(_amin)
     6003    0.006    0.000    0.006    0.000 {isinstance}

100 spins:
        1    0.000    0.000   53.987   53.987 
<string>:1(<module>)
        1    0.004    0.004   53.987   53.987 pf:449(cluster)
     1000    0.004    0.000   53.907    0.054 pf:413(calc)
     1000    0.008    0.000   53.903    0.054 
relax_disp.py:907(func_CR72_full)
     1000    6.367    0.006   53.895    0.054 
relax_disp.py:456(calc_CR72_chi2)
   300300   28.870    0.000   39.278    0.000 
cr72.py:100(r2eff_CR72)
  1200927    9.917    0.000    9.917    0.000 {method 'reduce' of
'numpy.ufunc' objects}
   300000    4.283    0.000    7.853    0.000 chi2.py:32(chi2)
   600300    1.066    0.000    7.154    0.000 
fromnumeric.py:1621(sum)
   600300    0.745    0.000    5.516    0.000 
_methods.py:23(_sum)
   300300    0.447    0.000    3.565    0.000 
fromnumeric.py:2048(amax)
   300300    0.417    0.000    3.259    0.000 
fromnumeric.py:2132(amin)
   300300    0.422    0.000    3.118    0.000 
_methods.py:15(_amax)
   300300    0.392    0.000    2.841    0.000 
_methods.py:19(_amin)
   600300    0.572    0.000    0.572    0.000 {isinstance}

############################
For tag 3.2.1              #
svn switch ^/tags/3.2.1    #
############################
1 spin:
        1    0.000    0.000    1.021    1.021 
<string>:1(<module>)
        1    0.002    0.002    1.021    1.021 pf:427(single)
     1000    0.002    0.000    1.014    0.001 pf:413(calc)
     1000    0.005    0.000    1.012    0.001 
relax_disp.py:907(func_CR72_full)
     1000    0.055    0.000    1.007    0.001 
relax_disp.py:456(calc_CR72_chi2)
     3003    0.861    0.000    0.864    0.000 
cr72.py:98(r2eff_CR72)
     3000    0.043    0.000    0.084    0.000 chi2.py:32(chi2)
     3000    0.006    0.000    0.042    0.000 
fromnumeric.py:1621(sum)
     3000    0.004    0.000    0.032    0.000 
_methods.py:23(_sum)
     3027    0.028    0.000    0.028    0.000 {method 'reduce' of
'numpy.ufunc' objects}
     8049    0.007    0.000    0.007    0.000 {range}
        1    0.000    0.000    0.006    0.006 pf:106(__init__)
        3    0.000    0.000    0.004    0.001 
numeric.py:1509(array_repr)
        3    0.000    0.000    0.004    0.001 
arrayprint.py:343(array2string)
        3    0.000    0.000    0.004    0.001 
arrayprint.py:233(_array2string)
     3000    0.004    0.000    0.004    0.000 {isinstance}

100 spins:
        1    0.000    0.000  104.086  104.086 
<string>:1(<module>)
        1    0.004    0.004  104.086  104.086 pf:449(cluster)
     1000    0.004    0.000  103.944    0.104 pf:413(calc)
     1000    0.009    0.000  103.940    0.104 
relax_disp.py:907(func_CR72_full)
     1000    6.057    0.006  103.931    0.104 
relax_disp.py:456(calc_CR72_chi2)
   300300   88.604    0.000   88.888    0.000 
cr72.py:98(r2eff_CR72)
   300000    4.408    0.000    8.695    0.000 chi2.py:32(chi2)
   300000    0.627    0.000    4.287    0.000 
fromnumeric.py:1621(sum)
   300000    0.458    0.000    3.296    0.000 
_methods.py:23(_sum)
   300027    2.839    0.000    2.839    0.000 {method 'reduce' of
'numpy.ufunc' objects}
   703722    0.672    0.000    0.672    0.000 {range}
   300000    0.364    0.000    0.364    0.000 {isinstance}
        1    0.000    0.000    0.139    0.139 pf:106(__init__)


################# System information ######################
Processor fabric:  Uni-processor.


Hardware information:
    Machine:                 x86_64
    Processor:               i386
    Processor name:          Intel(R) Core(TM) i5-2435M CPU @ 
2.40GHz
    Endianness:              little
    Total RAM size:          2048.0 Mb
    Total swap size:         6144.0 Mb

Operating system information:
    System:                  Darwin
    Release:                 13.2.0
    Version:                 Darwin Kernel Version 13.2.0: Thu 
Apr 17
23:03:13 PDT 2014; root:xnu-2422.100.13~1/RELEASE_X86_64
    Mac version:             10.9.3 (, , ) x86_64
    Distribution:
    Full platform string:    Darwin-13.2.0-x86_64-i386-64bit

Python information:
    Architecture:            64bit
    Python version:          2.7.6
    Python branch:
    Python build:            default, Apr 11 2014 11:55:30
    Python compiler:         GCC 4.2.1 (Apple Inc. build 5666) 
(dot 3)
    Libc version:
    Python implementation:   CPython
    Python revision:
    Python executable:
/Users/tlinnet/Library/Enthought/Canopy_64bit/User/bin/python
    Python flags:            sys.flags(debug=0, py3k_warning=0,
division_warning=0, division_new=0, inspect=0, interactive=0,
optimize=0, dont_write_bytecode=0, no_user_site=0, no_site=0,
ignore_environment=0, tabcheck=0, verbose=0, unicode=0,
bytes_warning=0, hash_randomization=0)
    Python float info:
sys.float_info(max=1.7976931348623157e+308, max_exp=1024,
max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021,
min_10_exp=-307, dig=15, mant_dig=53, 
epsilon=2.220446049250313e-16,
radix=2, rounds=1)
    Python module path:      
['/Users/tlinnet/software/relax_trunk',
'/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python27.zip',
'/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7',
'/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/plat-darwin',
'/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/plat-mac',
'/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/plat-mac/lib-scriptpackages',
'/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/lib-tk',
'/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/lib-old',
'/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/lib-dynload',
'/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages',
'/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/PIL',
'/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages']

Python packages and modules (most are optional):

Name               Installed    Version                        
Path
minfx              True         1.0.6
/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/minfx
bmrblib            True         1.0.3
/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/bmrblib
numpy              True         1.8.0
/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/numpy
scipy              True         0.13.3
/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/scipy
wxPython           True         2.9.2.4 osx-cocoa (classic)
/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/wx
matplotlib         True         1.3.1
/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib
mpi4py             False
epydoc             True         3.0.1
/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/epydoc
optparse           True         1.5.3
/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/optparse.pyc
readline           True
/Users/tlinnet/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/readline.so
profile            True
/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/profile.pyc
bz2                True
/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/lib-dynload/bz2.so
gzip               True
/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/gzip.pyc
io                 True
/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/io.pyc
xml                True         0.8.4 (internal)
/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/xml/__init__.pyc
xml.dom.minidom    True
/Applications/Canopy.app/appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/xml/dom/minidom.pyc

relax information:
    Version:                 repository checkout r23785
svn+ssh://svn.gna.org/svn/relax/trunk
    Processor fabric:        Uni-processor.

relax C modules:

Module                        Compiled    File type
                                  Path
target_functions.relax_fit    True        2-way ['Mach-O 64-bit 
bundle
x86_64', 'Mach-O bundle i386']
/Users/tlinnet/software/relax_trunk/target_functions/relax_fit.so

2014-06-11 15:38 GMT+02:00 Troels Emtekær Linnet 
<tlinnet@xxxxxxxxxxxxx>:
Hi Ed.

I am now faster than trunk per spin, even if I replaces the 
cr72.py file.

10000 iterations:

BRANCH:
        1    0.000    0.000    4.060    4.060 
<string>:1(<module>)
        1    0.016    0.016    4.060    4.060 pf:427(single)
    10000    0.028    0.000    4.038    0.000 pf:413(calc)
    10000    0.133    0.000    4.010    0.000 
relax_disp.py:994(func_CR72_full)
    10000    0.301    0.000    3.803    0.000 
relax_disp.py:545(calc_CR72_chi2)
    10003    1.629    0.000    2.862    0.000 
cr72.py:101(r2eff_CR72)
    70043    0.647    0.000    0.647    0.000 {method 'reduce' 
of
'numpy.ufunc' objects}
    10000    0.042    0.000    0.572    0.000 
core.py:1701(masked_where)
    30006    0.061    0.000    0.395    0.000 
fromnumeric.py:1621(sum)
    30006    0.040    0.000    0.305    0.000 
_methods.py:23(_sum)
    10000    0.142    0.000    0.269    0.000 
chi2.py:72(chi2_rankN)
    30000    0.267    0.000    0.267    0.000 {method 'outer' of
'numpy.ufunc' objects}
    10000    0.026    0.000    0.262    0.000 {method 'view' of
'numpy.ndarray' objects}
    20006    0.032    0.000    0.250    0.000 
fromnumeric.py:2132(amin)

TRUNK, with new CR72.
        1    0.000    0.000    6.585    6.585 
<string>:1(<module>)
        1    0.016    0.016    6.585    6.585 pf:427(single)
    10000    0.026    0.000    6.562    0.001 pf:413(calc)
    10000    0.133    0.000    6.536    0.001 
relax_disp.py:908(func_CR72_full)
    10000    0.601    0.000    6.327    0.001 
relax_disp.py:456(calc_CR72_chi2)
    30003    3.153    0.000    4.907    0.000 
cr72.py:101(r2eff_CR72)
   180042    1.356    0.000    1.356    0.000 {method 'reduce' 
of
'numpy.ufunc' objects}
    90006    0.165    0.000    1.108    0.000 
fromnumeric.py:1621(sum)
    90006    0.109    0.000    0.792    0.000 
_methods.py:23(_sum)
    30000    0.423    0.000    0.775    0.000 chi2.py:32(chi2)
    60006    0.096    0.000    0.647    0.000 
fromnumeric.py:2132(amin)
    60006    0.074    0.000    0.483    0.000 
_methods.py:19(_amin)
    30003    0.044    0.000    0.350    0.000 
fromnumeric.py:2048(amax)

TRUNK, with original CR72.
        1    0.000    0.000    5.994    5.994 
<string>:1(<module>)
        1    0.018    0.018    5.994    5.994 pf:427(single)
    10000    0.027    0.000    5.971    0.001 pf:413(calc)
    10000    0.142    0.000    5.944    0.001 
relax_disp.py:908(func_CR72_full)
    10000    0.639    0.000    5.722    0.001 
relax_disp.py:456(calc_CR72_chi2)
    30003    3.093    0.000    4.205    0.000 
cr72.py:100(r2eff_CR72)
   120036    1.051    0.000    1.051    0.000 {method 'reduce' 
of
'numpy.ufunc' objects}
    30000    0.455    0.000    0.830    0.000 chi2.py:32(chi2)
    60003    0.113    0.000    0.755    0.000 
fromnumeric.py:1621(sum)
    60003    0.078    0.000    0.580    0.000 
_methods.py:23(_sum)
    30003    0.049    0.000    0.382    0.000 
fromnumeric.py:2048(amax)
    30003    0.048    0.000    0.350    0.000 
fromnumeric.py:2132(amin)
    30003    0.045    0.000    0.333    0.000 
_methods.py:15(_amax)
    30003    0.041    0.000    0.302    0.000 
_methods.py:19(_amin)
    60003    0.061    0.000    0.061    0.000 {isinstance}
    20002    0.061    0.000    0.061    0.000 {method 'flatten' 
of
'numpy.ndarray' objects}
    50046    0.048    0.000    0.048    0.000 {range}

_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-devel mailing list
relax-devel@xxxxxxx

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-devel



Related Messages


Powered by MHonArc, Updated Wed Jun 11 19:20:14 2014