Hi,

I think this is one of those cases where we will see that a future
numpy version will implement this correctly and fast.  I've been
looking into the numpy 1.8.1 source code, and the inplace operation
and the speed of the out argument appear to be unrelated.  Anyway,
numpy 2 might implement the out argument correctly for speed, so that
"dot(a, b, c)" is an order of magnitude faster than "c = dot(a, b)",
as it really should be, just like in the BLAS library used by
numpy.dot() where it is much faster.

Regards,

Edward


On 16 June 2014 22:11,  <[email protected]> wrote:
> Author: tlinnet
> Date: Mon Jun 16 22:11:56 2014
> New Revision: 24007
>
> URL: http://svn.gna.org/viewcvs/relax?rev=24007&view=rev
> Log:
> Changed the calculation of inner product in model ns cpmg 2site 3d.
>
> The out argument of numpy.dot is buggy, and should not be used.
>
> 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_cpmg_2site_3d.py
>
> Modified: branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py
> URL: 
> http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py?rev=24007&r1=24006&r2=24007&view=diff
> ==============================================================================
> --- branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py (original)
> +++ branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py Mon Jun 16 
> 22:11:56 2014
> @@ -141,9 +141,6 @@
>              # The matrix R that contains all the contributions to the 
> evolution, i.e. relaxation, exchange and chemical shift evolution.
>              R = rcpmg_3d(R1A=r10a, R1B=r10b, R2A=R2A_si_mi, R2B=R2B_si_mi, 
> pA=pA, pB=pB, dw=dw_si_mi, k_AB=k_AB, k_BA=k_BA)
>
> -            # The essential evolution matrix. This initialises the structure.
> -            evolution_matrix = asarray(R) * 0.0
> -
>              # Loop over the time points, back calculating the R2eff values.
>              for di in range(num_points_si_mi):
>                  # Extract the values from the higher dimensional arrays.
> @@ -160,10 +157,10 @@
>
>                  # The essential evolution matrix.
>                  # This is the first round.
> -                dot(Rexpo, r180x, evolution_matrix)
> -                dot(evolution_matrix * 1.0, Rexpo, evolution_matrix)
> +                evolution_matrix = dot(Rexpo, r180x)
> +                evolution_matrix = dot(evolution_matrix, Rexpo)
>                  # The second round.
> -                dot(evolution_matrix * 1.0, evolution_matrix * 1.0, 
> evolution_matrix)
> +                evolution_matrix = dot(evolution_matrix, evolution_matrix )
>
>                  # Loop over the CPMG elements, propagating the magnetisation.
>                  for j in range(power_si_mi_di):
>
>
> _______________________________________________
> 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