Not bad!

"""
$ ./disp_profile_all.py /data/relax/branches/disp_spin_speed2
/data/relax/branches/disp_spin_speed
[snip]

New relax version:  relax repository checkout r24308
svn+ssh://[email protected]/svn/relax/branches/disp_spin_speed
Old relax version:  relax repository checkout r24274
svn+ssh://[email protected]/svn/relax/branches/disp_spin_speed

Execution iteration 1

$ python profiling_ns_mmq_2site.py /data/relax/branches/disp_spin_speed2
     1000    0.025    0.000    8.232    0.008
relax_disp.py:1457(func_ns_mmq_2site)
       10    0.002    0.000    7.634    0.763
relax_disp.py:1457(func_ns_mmq_2site)
$ python profiling_ns_mmq_2site.py /data/relax/branches/disp_spin_speed
     1000    0.025    0.000   26.012    0.026
relax_disp.py:1427(func_ns_mmq_2site)
       10    0.002    0.000   25.544    2.554
relax_disp.py:1427(func_ns_mmq_2site)
[snip]

100 single spins analysis:
NS MMQ 2-site:             260.120+/-0.000 ->  82.320+/-0.000,   3.160x faster.

Cluster of 100 spins analysis:
NS MMQ 2-site:             255.440+/-0.000 ->  76.340+/-0.000,   3.346x faster.
"""

I no longer remember why I used the
lib.linear_algebra.matrix_power.square_matrix_power() function in
these MMQ models.

Cheers,

Edward



On 25 June 2014 03:41,  <[email protected]> wrote:
> Author: tlinnet
> Date: Wed Jun 25 03:41:02 2014
> New Revision: 24305
>
> URL: http://svn.gna.org/viewcvs/relax?rev=24305&view=rev
> Log:
> Triple speed in NS MMQ 2site, after using numpy.linalg.matrix_power instead 
> of the lib version in relax.
>
> Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion 
> models for Clustered analysis.
>
> Modified:
>     branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py
>
> Modified: branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py
> URL: 
> http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py?rev=24305&r1=24304&r2=24305&view=diff
> ==============================================================================
> --- branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py     (original)
> +++ branches/disp_spin_speed/lib/dispersion/ns_mmq_2site.py     Wed Jun 25 
> 03:41:02 2014
> @@ -52,11 +52,11 @@
>  # Python module imports.
>  from math import floor
>  from numpy import array, conj, complex64, dot, einsum, float64, log, 
> multiply, sum
> +from numpy.linalg import matrix_power
>
>  # relax module imports.
>  from lib.float import isNaN
>  from lib.dispersion.matrix_exponential import 
> matrix_exponential_rank_NS_NM_NO_ND_x_x
> -from lib.linear_algebra.matrix_power import square_matrix_power
>
>  # Repetitive calculations (to speed up calculations).
>  m_r20a = array([
> @@ -253,16 +253,16 @@
>                          fact = int(floor(power_i / 2))
>
>                          # (M1.M2.M2.M1)^(n/2).
> -                        A = square_matrix_power(M1_M2_M2_M1_i, fact)
> +                        A = matrix_power(M1_M2_M2_M1_i, fact)
>
>                          # (M2*.M1*.M1*.M2*)^(n/2).
> -                        B = square_matrix_power(M2_M1_M1_M2_star_i, fact)
> +                        B = matrix_power(M2_M1_M1_M2_star_i, fact)
>
>                          # (M2.M1.M1.M2)^(n/2).
> -                        C = square_matrix_power(M2_M1_M1_M2_i, fact)
> +                        C = matrix_power(M2_M1_M1_M2_i, fact)
>
>                          # (M1*.M2*.M2*.M1*)^(n/2).
> -                        D = square_matrix_power(M1_M2_M2_M1_star_i, fact)
> +                        D = matrix_power(M1_M2_M2_M1_star_i, fact)
>
>                      # Matrices for odd number of CPMG blocks.
>                      else:
> @@ -270,19 +270,19 @@
>                          fact = int(floor((power_i - 1) / 2))
>
>                          # (M1.M2.M2.M1)^((n-1)/2).M1.M2.
> -                        A = square_matrix_power(M1_M2_M2_M1_i, fact)
> +                        A = matrix_power(M1_M2_M2_M1_i, fact)
>                          A = dot(A, M1_M2_i)
>
>                          # (M1*.M2*.M2*.M1*)^((n-1)/2).M1*.M2*.
> -                        B = square_matrix_power(M1_M2_M2_M1_star_i, fact)
> +                        B = matrix_power(M1_M2_M2_M1_star_i, fact)
>                          B = dot(B, M1_M2_star_i)
>
>                          # (M2.M1.M1.M2)^((n-1)/2).M2.M1.
> -                        C = square_matrix_power(M2_M1_M1_M2_i, fact)
> +                        C = matrix_power(M2_M1_M1_M2_i, fact)
>                          C = dot(C, M2_M1_i)
>
>                          # (M2*.M1*.M1*.M2*)^((n-1)/2).M2*.M1*.
> -                        D = square_matrix_power(M2_M1_M1_M2_star_i, fact)
> +                        D = matrix_power(M2_M1_M1_M2_star_i, fact)
>                          D = dot(D, M2_M1_star_i)
>
>                      # The next lines calculate the R2eff using a two-point 
> approximation, i.e. assuming that the decay is mono-exponential.
> @@ -375,7 +375,7 @@
>                      evol_block_i = evol_block_mat[si, mi, oi, i]
>
>                      # The full evolution.
> -                    evol = square_matrix_power(evol_block_i, power_i)
> +                    evol = matrix_power(evol_block_i, power_i)
>
>                      # The next lines calculate the R2eff using a two-point 
> approximation, i.e. assuming that the decay is mono-exponential.
>                      Mx = dot(F_vector, dot(evol, M0))
>
>
> _______________________________________________
> relax (http://www.nmr-relax.com)
>
> This is the relax-commits mailing list
> [email protected]
>
> 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-commits

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

This is the relax-devel mailing list
[email protected]

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

Reply via email to