This is a static copy of a profile report

Home

spparms (8 calls, 0.006 sec)
Generated 04-Aug-2014 13:05:21 using cpu time.
function in file /share/apps/matlabr2014a/toolbox/matlab/sparfun/spparms.m
Copy to new window for comparing multiple runs

Parents (calling functions)

Function NameFunction TypeCalls
sparfun/private/symamdmexMEX-file4
etreeMEX-file4
Lines where the most time was spent

Line NumberCodeCallsTotal Time% TimeTime Plot
238
return;
80 s0%
237
return1 = oldvalues(i);
80 s0%
236
if strcmp (key, allkeys(i,:))
80 s0%
235
for i = 1:nparms
80 s0%
234
key = lower(arg1);
80 s0%
All other lines  0.006 s100.0%
Totals  0.006 s100% 
Children (called functions)
No children
Code Analyzer results
No Code Analyzer messages.
Coverage results
Show coverage for parent directory
Total lines in function273
Non-code lines (comments, blank lines)117
Code lines (lines that can run)156
Code lines that did run27
Code lines that did not run129
Coverage (did run/can run)17.31 %
Function listing
time 
calls 
 line
   1 
function [return1,return2] = spparms(arg1,arg2)
   2 
%SPPARMS Set parameters for sparse matrix routines.
   3 
%   SPPARMS('key',value) sets one or more of the "tunable" parameters 
   4 
%   used in the sparse routines, particularly sparse / and \.
   5 
%
   6 
%   SPPARMS, by itself, prints a description of the current settings.
   7 
%
   8 
%   If no input argument is present, values = SPPARMS returns a
   9 
%   vector whose components give the current settings.
  10 
%   [keys,values] = SPPARMS returns that vector, and also returns
  11 
%   a character matrix whose rows are the keywords for the parameters.
  12 
%
  13 
%   SPPARMS(values), with no output argument, sets all the parameters
  14 
%   to the values specified by the argument vector.
  15 
%
  16 
%   value = SPPARMS('key') returns the current setting of one parameter.
  17 
%
  18 
%   SPPARMS('default') sets all the parameters to their default settings.
  19 
%   SPPARMS('tight') sets the minimum degree ordering parameters to their 
  20 
%   "tight" settings, which may lead to orderings with less fill-in, but 
  21 
%   which makes the ordering functions themselves use more execution time.
  22 
%
  23 
%   The parameters with the default and "tight" values are:
  24 
%
  25 
%                    keyword       default       tight
  26 
%
  27 
%      values(1)     'spumoni'      0
  28 
%      values(2)     'thr_rel'      1.1          1.0
  29 
%      values(3)     'thr_abs'      1.0          0.0
  30 
%      values(4)     'exact_d'      0            1
  31 
%      values(5)     'supernd'      3            1
  32 
%      values(6)     'rreduce'      3            1
  33 
%      values(7)     'wh_frac'      0.5          0.5
  34 
%      values(8)     'autommd'      1            
  35 
%      values(9)     'autoamd'      1
  36 
%      values(10)    'piv_tol'      0.1
  37 
%      values(11)    'bandden'      0.5
  38 
%      values(12)    'umfpack'      1
  39 
%      values(13)    'sym_tol'      0.001
  40 
%      values(14)    'ldl_tol'      0.01
  41 
%
  42 
%   The meanings of the parameters are
  43 
%
  44 
%      spumoni:  The Sparse Monitor Flag controls diagnostic output;
  45 
%                0 means none, 1 means some, 2 means too much.
  46 
%      thr_rel,
  47 
%      thr_abs:  Minimum degree threshold is thr_rel*mindegree + thr_abs.
  48 
%      exact_d:  Nonzero to use exact degrees in minimum degree,
  49 
%                Zero to use approximate degrees.
  50 
%      supernd:  If > 0, MMD amalgamates supernodes every supernd stages.
  51 
%      rreduce:  If > 0, MMD does row reduction every rreduce stages.
  52 
%      wh_frac:  Rows with density > wh_frac are ignored in COLMMD.
  53 
%      autommd:  Nonzero to use SYMMMD and COLMMD orderings with \ and /.
  54 
%      autoamd:  Nonzero to use AMD or COLAMD ordering with CHOLMOD, UMFPACK,
  55 
%                and SuiteSparseQR in \ and /.
  56 
%      piv_tol:  Pivot tolerance used by LU-based (UMFPACK) \ and /.
  57 
%      bandden:  Backslash uses band solver if band density is > bandden.
  58 
%                If bandden = 1.0, never use band solver.
  59 
%                If bandden = 0.0, always use band solver.
  60 
%      umfpack:  Nonzero to use UMFPACK instead of the v4 LU-based solver
  61 
%                in \ and /.
  62 
%      sym_tol:  Symmetric pivot tolerance used by UMFPACK.  See LU for
  63 
%                more information about the role of the symmetric pivot
  64 
%                tolerance.
  65 
%      ldl_tol:  Pivot tolerance used by LDL-based (MA57) \ and /.
  66 
%
  67 
%   Note:
  68 
%   Solving symmetric positive definite matrices within \ and /:
  69 
%      The CHOLMOD CHOL-based solver uses AMD.
  70 
%   Solving general square matrices within \ and /:
  71 
%      The UMFPACK LU-based solver uses either AMD or a modified COLAMD.
  72 
%      The v4 LU-based solver uses COLMMD.
  73 
%   Solving rectangular matrices within \ and /:
  74 
%      The SuiteSparseQR QR-based solver uses COLAMD.
  75 
%   All of these algorithms respond to SPPARMS('autoamd') except for the
  76 
%   v4 LU-based, which responds to SPPARMS('autommd').
  77 
%
  78 
%   See also AMD, COLAMD, SYMAMD.
  79 

  80 
%   Copyright 1984-2011 The MathWorks, Inc.
  81 

  82 
% The following are "constants".
  83 

      8 
  84 
allkeys = ['spumoni' 
  85 
           'thr_rel'
  86 
           'thr_abs'
  87 
           'exact_d'
  88 
           'supernd'
  89 
           'rreduce'
  90 
           'wh_frac'
  91 
           'autommd'
  92 
           'autoamd'
  93 
           'piv_tol'
  94 
           'bandden'
  95 
           'umfpack'
  96 
           'sym_tol'
  97 
           'ldl_tol'
  98 
           'usema57'
  99 
           'spqrtol'
 100 
           'chmodsp'];
      8 
 101 
nparms = size(allkeys,1); 
      8 
 102 
spuparmrange = 1:1;   % Which parameters pertain to SPUMONI? 
      8 
 103 
mmdparmrange = 2:7;   % Which parameters pertain to minimum degree? 
      8 
 104 
bslparmrange = 8:16;  % Which parameters pertain to sparse backslash? 
      8 
 105 
cspparmrange = 17:17; 
      8 
 106 
defaultparms = [0 1.1 1.0 0 3 3 0.5 1 1 0.1 0.5 1 0.001 0.01 1 -2 0]'; 
      8 
 107 
tightmmdparms   = [1.0 0.0 1 1 1 0.5]'; 
 108 

 109 
% First find out what the current parameters are.
 110 

      8 
 111 
oldvalues = zeros(nparms,1); 
      8 
 112 
oldvalues(spuparmrange) = sparsfun('spumoni'); 
      8 
 113 
oldvalues(mmdparmrange) = sparsfun('mmdset'); 
      8 
 114 
oldvalues(bslparmrange) = sparsfun('slashset'); 
      8 
 115 
oldvalues(cspparmrange) = sparsfun('chmodsp'); 
 116 

 117 
% No input args, no output args:  Describe current settings.
      8 
 118 
if nargin == 0 && nargout == 0 
 119 
    a = num2str(oldvalues(1));
 120 
    if oldvalues(1) 
 121 
      fprintf('%s',getString(message('MATLAB:spparms:SparseMonitorOutputLevel', a)));
 122 
    else 
 123 
      fprintf('%s',getString(message('MATLAB:spparms:NoSparseMonitorOutput')));
 124 
    end
 125 
    a = num2str(oldvalues(2));
 126 
    b = num2str(oldvalues(3));
 127 
    fprintf('%s',getString(message('MATLAB:spparms:MmdThreshold', a, b)));
 128 
    if oldvalues(4) 
 129 
        fprintf('     ');
 130 
        fprintf('%s',getString(message('MATLAB:spparms:UsingExactDegreesInAprimeA')));
 131 
    else 
 132 
        fprintf('     ');
 133 
        fprintf('%s',getString(message('MATLAB:spparms:UsingApproximateDegreesInAprimeA')));
 134 
    end
 135 
    s = int2str(oldvalues(5));
 136 
    if oldvalues(5)
 137 
        fprintf('     ');
 138 
        fprintf('%s',getString(message('MATLAB:spparms:SupernodeAmalgamationEveryNStages', s)));
 139 
    else
 140 
        fprintf('     ');
 141 
        fprintf('%s',getString(message('MATLAB:spparms:NoSupernodeAmalgamation')));
 142 
    end
 143 
    s = int2str(oldvalues(6));
 144 
    if oldvalues(6) 
 145 
        fprintf('     ');
 146 
        fprintf('%s',getString(message('MATLAB:spparms:RowReductionEveryNStages', s)));
 147 
    else
 148 
        fprintf('     ');
 149 
        fprintf(getString(message('MATLAB:spparms:NoRowReductionn')));
 150 
    end
 151 
    a = num2str(100*oldvalues(7));
 152 
    if oldvalues(7)
 153 
        fprintf('     ');
 154 
        fprintf('%s',getString(message('MATLAB:spparms:WithholdRowsAtLeastNPercentDenseInColmmd', a)));
 155 
    else
 156 
        fprintf('     ');
 157 
        fprintf('%s',getString(message('MATLAB:spparms:NoRowWithholdingInColmmd')));
 158 
    end
 159 
    if oldvalues(8)
 160 
      fprintf('%s',getString(message('MATLAB:spparms:MinimumDegreeOrderingsUsedWithV4')));
 161 
    else
 162 
      fprintf('%s',getString(message('MATLAB:spparms:NoAutomaticOrderingsUsedWithV4')));
 163 
    end
 164 
    if oldvalues(9)
 165 
      fprintf('%s',getString(message('MATLAB:spparms:ApproximateMinimumDegreeOrderingsUsedCholmodUmfpack')));
 166 
    else
 167 
      fprintf('%s',getString(message('MATLAB:spparms:NoAutomaticOrderingsUsedWithCholmodUmfpack')));
 168 
    end
 169 
    a = num2str(oldvalues(10));
 170 
    fprintf('%s',getString(message('MATLAB:spparms:PivotToleranceOfUsedByUMFPACK', a)));
 171 
    a = num2str(oldvalues(11));
 172 
    fprintf('%s',getString(message('MATLAB:spparms:BackslashUsesBandSolverIfBandDensityGT', a)));
 173 
    if oldvalues(12)
 174 
        fprintf('%s',getString(message('MATLAB:spparms:UMFPACKUsedForLu')));
 175 
    else
 176 
        fprintf('%s',getString(message('MATLAB:spparms:V4AlgorithmUsedForLu')));
 177 
    end
 178 
    a = num2str(oldvalues(13));
 179 
    fprintf('%s',getString(message('MATLAB:spparms:SymmetricPivotToleranceUsedByUMFPACK', a)));
 180 
    a = num2str(oldvalues(14));
 181 
    fprintf('%s',getString(message('MATLAB:spparms:PivotToleranceUsedByMA57', a)));
 182 
    return;
 183 

 184 
% No input args, one or two output args:  Return current settings.
      8 
 185 
elseif nargin == 0 && nargout > 0 
 186 
    if nargout <= 1
 187 
        return1 = oldvalues;
 188 
    else
 189 
        return1 = allkeys;
 190 
        return2 = oldvalues;
 191 
    end
 192 
    return;
 193 

 194 
% One input arg of suitable size:  Reset all parameters.
      8 
 195 
elseif nargin == 1 && length(arg1) == nparms && min(size(arg1)) == 1 
 196 
    if nargout > 0 
 197 
        error (message('MATLAB:spparms:TooManyOutputs'))
 198 
    end
 199 
    sparsfun('spumoni',arg1(spuparmrange));
 200 
    sparsfun('mmdset',arg1(mmdparmrange));
 201 
    sparsfun('slashset',arg1(bslparmrange));
 202 
    sparsfun('chmodsp',arg1(cspparmrange));
 203 
    return;
 204 

 205 
% Input arg 'tight':  Reset minimum degree parameters.
      8 
 206 
elseif nargin == 1 && strcmpi(arg1,'tight') 
 207 
    if nargout > 0
 208 
        error (message('MATLAB:spparms:TooManyOutputs'))
 209 
    end
 210 
    newvalues = oldvalues;
 211 
    newvalues(mmdparmrange) = tightmmdparms;
 212 
    spparms(newvalues);
 213 
    return;
 214 

 215 
% Input arg 'default':  Reset all parameters.
      8 
 216 
elseif nargin == 1 && strcmpi(arg1,'default') 
 217 
    if nargout > 0
 218 
        error (message('MATLAB:spparms:TooManyOutputs'))
 219 
    end
 220 
    spparms(defaultparms);
 221 
    return;
 222 

 223 
% One input arg:  Return one current setting.
      8 
 224 
elseif (nargin == 1) 
      8 
 225 
    if ~ischar(arg1) 
 226 
        error (message('MATLAB:spparms:OptionNotString'))
 227 
    end
      8 
 228 
    if nargout > 1 
 229 
        error (message('MATLAB:spparms:TooManyOutputs'))
 230 
    end
      8 
 231 
    if size(arg1,1) > 1 
 232 
        error (message('MATLAB:spparms:TooManyParamsPerKeyword'))
 233 
    end
      8 
 234 
    key = lower(arg1); 
      8 
 235 
    for i = 1:nparms 
      8 
 236 
        if strcmp (key, allkeys(i,:)) 
      8 
 237 
            return1 = oldvalues(i); 
      8 
 238 
            return; 
 239 
        end
 240 
    end
 241 
    error(message('MATLAB:spparms:UnknownKeyword', key));
 242 

 243 
% Two input args:  Reset some parameters.
 244 
else
 245 
    if ~ischar(arg1)
 246 
        error (message('MATLAB:spparms:OptionNotString'));
 247 
    end
 248 
    if nargout > 0
 249 
        error (message('MATLAB:spparms:TooManyOutputs'));
 250 
    end
 251 
    if size(arg1,1) ~= length(arg2)
 252 
        error (message('MATLAB:spparms:ParamsMismatchKeywords'));
 253 
    end
 254 
    newvalues = oldvalues;
 255 
    for k = 1:size(arg1,1)
 256 
        key = lower(arg1(k,:));
 257 
        value = arg2(k);
 258 
        found = 0;
 259 
        for i = 1:nparms
 260 
            if strcmp (key, allkeys(i,:))
 261 
                newvalues(i) = value;
 262 
                found = 1;
 263 
                break
 264 
            end
 265 
        end
 266 
        if ~found
 267 
            warning(message('MATLAB:spparms:UnknownKeyword', key));
 268 
        end
 269 
    end
 270 
    spparms(newvalues);
 271 
    return;
 272 
   
 273 
end