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

