Author: bugman Date: Tue Jul 22 19:17:43 2014 New Revision: 24661 URL: http://svn.gna.org/viewcvs/relax?rev=24661&view=rev Log: Merged revisions 24091-24137,24140-24250,24252-24256,24258-24261 via svnmerge from svn+ssh://bugman@xxxxxxxxxxx/svn/relax/branches/disp_spin_speed ........ r24091 | tlinnet | 2014-06-18 15:44:58 +0200 (Wed, 18 Jun 2014) | 3 lines Added DPL94 profiling script. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24092 | tlinnet | 2014-06-18 15:58:31 +0200 (Wed, 18 Jun 2014) | 5 lines Modified profiling script for TSMK01, to use correct parameters k_AB and r20a. Or else, the lib functions is just calculating with zero? Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24093 | tlinnet | 2014-06-18 16:03:46 +0200 (Wed, 18 Jun 2014) | 5 lines Changes to profiling script of ns_cpmg_2site_expanded. The model does not have r20a and r20b, but only r2. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24094 | tlinnet | 2014-06-18 16:07:10 +0200 (Wed, 18 Jun 2014) | 5 lines Made changes to the profiling script of NS_CPMG_2SITE_3D. Need to use the full model, when r2a and r2b is specified. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24095 | tlinnet | 2014-06-18 16:17:42 +0200 (Wed, 18 Jun 2014) | 5 lines Changes to profiling script of ns expanded. The unpacking can be removed. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24096 | tlinnet | 2014-06-18 16:33:46 +0200 (Wed, 18 Jun 2014) | 5 lines Fix for the profiling script of NS cpmg 3D. The model should also be speciffied to full. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24097 | bugman | 2014-06-18 16:39:53 +0200 (Wed, 18 Jun 2014) | 5 lines The disp_profile_all.py super script now prints out the current relax version information. This is so that the log files contain information about the repository revision and path. ........ r24098 | tlinnet | 2014-06-18 16:44:12 +0200 (Wed, 18 Jun 2014) | 3 lines Copied profiling script of DPL94 to ns r1rho 2site. ........ r24099 | bugman | 2014-06-18 16:44:53 +0200 (Wed, 18 Jun 2014) | 3 lines Improved the final printout from the disp_profile_all.py dispersion model super profiling script. ........ r24100 | tlinnet | 2014-06-18 16:48:50 +0200 (Wed, 18 Jun 2014) | 3 lines Added profiling script for NS R1rho 2site. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24101 | bugman | 2014-06-18 16:57:40 +0200 (Wed, 18 Jun 2014) | 3 lines The disp_profile_all.py dispersion model super profiling script is now executable. ........ r24102 | bugman | 2014-06-18 17:02:56 +0200 (Wed, 18 Jun 2014) | 8 lines Decreased all nr_iter values by 10 and added more dispersion models to the super profiling script. This is for the dispersion model profiling scripts in test_suite/shared_data/dispersion/profiling/, all controlled by the disp_profile_all.py super profiling script for generating statistics using all of the other profiling scripts. The number of iterations needed to be decreased as otherwise it would now take almost 1 day to generate the statistics table. ........ r24103 | tlinnet | 2014-06-18 17:11:24 +0200 (Wed, 18 Jun 2014) | 5 lines Moved the Ãparter conversion in LM63 3site into the lib function. This cleans up the target api function. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24104 | tlinnet | 2014-06-18 17:12:50 +0200 (Wed, 18 Jun 2014) | 3 lines Copied profiling script for DPL94 to TAP03. ........ r24105 | tlinnet | 2014-06-18 17:13:47 +0200 (Wed, 18 Jun 2014) | 2 lines Copied profiling script for DPL94 to TP02. ........ r24106 | tlinnet | 2014-06-18 17:15:27 +0200 (Wed, 18 Jun 2014) | 2 lines Copied profiling script for DPL94 to MP05. ........ r24107 | tlinnet | 2014-06-18 17:16:24 +0200 (Wed, 18 Jun 2014) | 2 lines Copied profiling script for DPL94 to M61. ........ r24108 | tlinnet | 2014-06-18 17:21:39 +0200 (Wed, 18 Jun 2014) | 3 lines Modified profiling script for TAP03 to be used. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24109 | tlinnet | 2014-06-18 17:23:44 +0200 (Wed, 18 Jun 2014) | 3 lines Modified profiling script for TP02, to be used. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24110 | tlinnet | 2014-06-18 17:27:54 +0200 (Wed, 18 Jun 2014) | 3 lines Modified profiling script for MP05. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24111 | tlinnet | 2014-06-18 17:31:55 +0200 (Wed, 18 Jun 2014) | 5 lines Modified profiling script for M61. This is the last one. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24112 | bugman | 2014-06-18 17:38:42 +0200 (Wed, 18 Jun 2014) | 8 lines Expansion of the disp_profile_all.py dispersion model super profiling scripts. The newly added profiling scripts for models 'M61', 'TP02', 'TAP03', and 'MP05' are now included in the super script to generate statistics for all of these as well. The nr_iter variable has also been changed to match the other analytic models, so that the standard deviations are lowered and the statistics are better. ........ r24113 | tlinnet | 2014-06-18 17:39:08 +0200 (Wed, 18 Jun 2014) | 3 lines Moved the parameter conversion of MMQ CR72 into lib function. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24114 | tlinnet | 2014-06-18 17:52:07 +0200 (Wed, 18 Jun 2014) | 3 lines Moved the paramter conversions of k_AB, k_BA and pB into lib function of NS MMQ 2site. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24115 | tlinnet | 2014-06-18 17:57:44 +0200 (Wed, 18 Jun 2014) | 3 lines Moved the parameter conversion from target function to lib function for NS r1rho 2site. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24116 | bugman | 2014-06-18 18:04:44 +0200 (Wed, 18 Jun 2014) | 10 lines Updated the dispersion model speed statistics for the disp_spin_speed branch vs. relax-3.2.2. This now includes the 'NS CPMG 2-site 3D', 'DPL94', and 'NS R1rho 2-site' dispersion models. The timings for the single spin analyses are now comparable to the clustered analysis, as the equivalent of 100 single spins is being used. The final printout is also in a better format to present for the relax release messages. These new results show the insane 160x speed up of the 'DPL94' model! ........ r24117 | bugman | 2014-06-18 18:22:56 +0200 (Wed, 18 Jun 2014) | 5 lines Alignment improvements for the final printout from the dispersion model super profiling script. The log file has been updated with what the new formatting will look like. ........ r24118 | bugman | 2014-06-18 18:34:54 +0200 (Wed, 18 Jun 2014) | 6 lines Updated the model names in the dispersion model super profiling script. The 'CR72', 'B14' and 'NS CPMG 2-site 3D' models are the full, slower versions rather than the faster models with R20 = R20A = R20B. The log file has been updated to match. ........ r24119 | tlinnet | 2014-06-18 18:52:37 +0200 (Wed, 18 Jun 2014) | 3 lines Moved the parameter conversion for ns mmq 3site into lib function. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24120 | bugman | 2014-06-18 18:54:41 +0200 (Wed, 18 Jun 2014) | 6 lines Updated the dispersion model profiling comparison of the disp_spin_speed branch vs. relax-3.2.2. The 'M61', 'TP02', 'TAP03', and 'MP05' models are now included. The final printout has been manually updated to reflect the newest version of the disp_profile_all.py super profiling script. ........ r24121 | tlinnet | 2014-06-18 19:01:24 +0200 (Wed, 18 Jun 2014) | 3 lines Moved the parameter conversion for r1rho 3site into lib function. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24122 | tlinnet | 2014-06-18 19:03:08 +0200 (Wed, 18 Jun 2014) | 3 lines Copied profiling script for CR72, so there is now a normal and a full version. ........ r24123 | tlinnet | 2014-06-18 19:04:01 +0200 (Wed, 18 Jun 2014) | 3 lines Copied profiling for b14 to normal and full model. ........ r24124 | bugman | 2014-06-18 19:08:51 +0200 (Wed, 18 Jun 2014) | 9 lines Created a text file suitable for use as part of the relax release notes. This contains the statistically averaged profiling information of the speed of the dispersion models in the disp_spin_speed branch vs. relax-3.2.2. This file has been created so that it can be used as part of the release notes for the version of relax that contains the insane speed ups of this branch. This file will be updated as new models are profiled and if any more speed ups magically appear. ........ r24125 | tlinnet | 2014-06-18 19:10:13 +0200 (Wed, 18 Jun 2014) | 2 lines Copied profiling script for cpmg 3D. ........ r24126 | tlinnet | 2014-06-18 19:11:10 +0200 (Wed, 18 Jun 2014) | 2 lines Copied profiling script for ns cpmg star. ........ r24127 | tlinnet | 2014-06-18 19:12:12 +0200 (Wed, 18 Jun 2014) | 2 lines copied profiling script for no rex. ........ r24128 | tlinnet | 2014-06-18 19:15:19 +0200 (Wed, 18 Jun 2014) | 3 lines Modified profiling script for B14, to R20A=R20B. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24129 | tlinnet | 2014-06-18 19:20:19 +0200 (Wed, 18 Jun 2014) | 3 lines Removal of junk, and replacing func. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24130 | tlinnet | 2014-06-18 19:20:21 +0200 (Wed, 18 Jun 2014) | 3 lines Removal of junk from profiling script. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24131 | tlinnet | 2014-06-18 19:25:29 +0200 (Wed, 18 Jun 2014) | 2 lines Removal of junk for profiling script CR72 full. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24132 | tlinnet | 2014-06-18 19:25:31 +0200 (Wed, 18 Jun 2014) | 3 lines Removal of junk from profiling script CR72 and making it work. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24133 | tlinnet | 2014-06-18 19:29:28 +0200 (Wed, 18 Jun 2014) | 3 lines Removal of junk, and implementing NO REX profiling script. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24134 | tlinnet | 2014-06-18 19:32:18 +0200 (Wed, 18 Jun 2014) | 3 lines Implemented profiling script for NS CPMG 2site 3D. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24135 | tlinnet | 2014-06-18 19:36:48 +0200 (Wed, 18 Jun 2014) | 3 lines Implemented profiling script for NS CPMG STAR and STAR FULL. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24136 | tlinnet | 2014-06-18 19:39:44 +0200 (Wed, 18 Jun 2014) | 2 lines Copied profiling script to be used for LM63. ........ r24137 | tlinnet | 2014-06-18 19:41:27 +0200 (Wed, 18 Jun 2014) | 3 lines Copied profiling script to model IT99. ........ r24140 | tlinnet | 2014-06-18 20:17:26 +0200 (Wed, 18 Jun 2014) | 3 lines Added profiling script for IT99. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24141 | tlinnet | 2014-06-18 20:17:29 +0200 (Wed, 18 Jun 2014) | 3 lines Implemented profiling script for LM63. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24142 | tlinnet | 2014-06-18 20:22:02 +0200 (Wed, 18 Jun 2014) | 3 lines Moved the "eta_scale = 2.0**(-3.0/2.0)" out of lib function for mmq cr72, since this is only needs to be computed once. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24143 | tlinnet | 2014-06-18 20:23:51 +0200 (Wed, 18 Jun 2014) | 3 lines Spell fix in code for ns cpmg 2site expanded. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24144 | tlinnet | 2014-06-18 20:28:05 +0200 (Wed, 18 Jun 2014) | 3 lines Fix for missing comments. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24145 | tlinnet | 2014-06-18 20:32:40 +0200 (Wed, 18 Jun 2014) | 3 lines Fix for spaces aroung "=" outside functions. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24146 | tlinnet | 2014-06-18 20:41:35 +0200 (Wed, 18 Jun 2014) | 3 lines Critical fix for wrong space inserted in ns mmq 3site mq. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24147 | tlinnet | 2014-06-18 20:41:37 +0200 (Wed, 18 Jun 2014) | 5 lines Fixed the input for unit test of mmq cr72. The number of input parameters has been lowered. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24148 | tlinnet | 2014-06-18 20:50:32 +0200 (Wed, 18 Jun 2014) | 5 lines Added additional math domain checking in B14. This is when v1c is less than 1.0. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24149 | tlinnet | 2014-06-18 20:58:39 +0200 (Wed, 18 Jun 2014) | 3 lines Comment fixing, for explaining the masking and replacing when dw is zeroÃ. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24150 | tlinnet | 2014-06-18 21:02:57 +0200 (Wed, 18 Jun 2014) | 3 lines Copied profiling script to be used for profiling the use of higher dimensional data for the numpy eig function. ........ r24151 | tlinnet | 2014-06-19 17:41:41 +0200 (Thu, 19 Jun 2014) | 3 lines Implemented the collection of the 3D exchange matrix, for rank [NE][NS][NM][NO][ND][7][7]. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24152 | tlinnet | 2014-06-19 17:41:45 +0200 (Thu, 19 Jun 2014) | 5 lines Implemented test, to see if 3D exchange matrixes are the same. This can be tested while running systemtest test_hansen_cpmg_data_to_ns_cpmg_2site_3D. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24153 | tlinnet | 2014-06-19 17:41:49 +0200 (Thu, 19 Jun 2014) | 3 lines Shifted the computation of Rexpo two loops up. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24154 | tlinnet | 2014-06-19 17:41:51 +0200 (Thu, 19 Jun 2014) | 3 lines Added intermediate step with for loops. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24155 | tlinnet | 2014-06-19 17:41:55 +0200 (Thu, 19 Jun 2014) | 3 lines Added another intermediate step. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24156 | tlinnet | 2014-06-19 17:41:59 +0200 (Thu, 19 Jun 2014) | 5 lines Added function to compute the matrix exponential for higher dimensional data of shape [NE][NS][NM][NO][ND][7][7]. This is done by using numpy.einsum, to make the dot product of the last two axis. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24157 | tlinnet | 2014-06-19 17:42:02 +0200 (Thu, 19 Jun 2014) | 7 lines Inserted intermediate step, to check if the matrix propagator to evolve the magnetization is equal when done for lower dimensional data of shape [7][7] and higher dimensional data of shape [NE][NS][NM][NO][ND][7][7]. A short example is shown at the wiki: http://wiki.nmr-relax.com/Numpy_linalg#Ellipsis_broadcasting_in_numpy.einsum Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24158 | tlinnet | 2014-06-19 17:42:05 +0200 (Thu, 19 Jun 2014) | 35 lines Implemented double speed of model NS CPMG 2site 3D: This is done by moving the costly calculation of the matrix exponential out of the for loops. The trick was to find a method to do dot product of higher dimensions. Thiw was done with numpy.einsum: Example at: http://wiki.nmr-relax.com/Numpy_linalg#Ellipsis_broadcasting_in_numpy.einsum Example: dot_V_W = einsum('...ij,...jk', V, W_exp_diag) Where V, and W_exp_diag has shape: [NE][NS][NM][NO][ND][7][7] The profiling script shows a 2X speed up. ----BEFORE: SINGLE ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 18.811 18.811 <string>:1(<module>) 1 0.002 0.002 18.811 18.811 pf_3d:407(single) CLUSTER ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 18.315 18.315 <string>:1(<module>) 1 0.001 0.001 18.315 18.315 pf_3d:431(cluster) -----AFTER: SINGLE ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 8.818 8.818 <string>:1(<module>) 1 0.002 0.002 8.818 8.818 pf_3d:407(single) CLUSTER ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 9.082 9.082 <string>:1(<module>) 1 0.001 0.001 9.082 9.082 pf_3d:431(cluster) Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24159 | tlinnet | 2014-06-19 17:42:14 +0200 (Thu, 19 Jun 2014) | 3 lines Made notation consistent for variables, using "_i" to clarify extracted data from matrix. Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis. ........ r24160 | tlinnet | 2014-06-19 17:42:16 +0200 (Thu, 19 Jun 2014) | 13 lines Moved the calculation the evolution matrix out of for loops. The trick is that numpy.einsum allows for dot product of higher dimension: - The the essential evolution matrix. - This is a dot product of the outer [7][7] matrix of the Rexpo_mat and r180x_mat matrixes, which - have the shape [NE][NS][NM][NO][ND][7][7]. [... 1069 lines stripped ...]