diff --git a/doc/dynare.texi b/doc/dynare.texi index 4b5ffbb6a..3ce0fb5f8 100644 --- a/doc/dynare.texi +++ b/doc/dynare.texi @@ -743,6 +743,13 @@ Activate console mode. In addition to the behavior of @code{nodisplay}, Dynare will not use graphical waitbars for long computations. +@item nograph +Activate the @code{nograph} option (@xref{nograph}), so that Dynare will not produce any +graph + +@item nointeractive +Instructs Dynare to not request user input + @item cygwin Tells Dynare that your MATLAB is configured for compiling MEX files with Cygwin (@pxref{Software requirements}). This option is only available diff --git a/matlab/CutSample.m b/matlab/CutSample.m index 5a3e94019..e0a2b16ec 100644 --- a/matlab/CutSample.m +++ b/matlab/CutSample.m @@ -67,4 +67,4 @@ fprintf('MH: Total number of generated MH files: %d.\n',TotalNumberOfMhFiles); fprintf('MH: I''ll use mh-files %d to %d.\n',FirstMhFile,TotalNumberOfMhFiles); fprintf('MH: In MH-file number %d I''ll start at line %d.\n',FirstMhFile,FirstLine); fprintf('MH: Finally I keep %d draws.\n',TotalNumberOfMhDraws-FirstDraw); -disp(' '); +skipline() diff --git a/matlab/GetPosteriorParametersStatistics.m b/matlab/GetPosteriorParametersStatistics.m index cb6ba4219..04ca6c86c 100644 --- a/matlab/GetPosteriorParametersStatistics.m +++ b/matlab/GetPosteriorParametersStatistics.m @@ -62,7 +62,10 @@ header_width = row_header_width(M_,estim_params_,bayestopt_); tit2 = sprintf('%-*s %10s %10s %16s %6s %10s\n',header_width+2,' ','prior mean','post. mean','conf. interval','prior','pstdev'); pformat = '%-*s %10.3f %10.4f %10.4f %8.4f %6s %10.4f'; -disp(' ');disp(' ');disp('ESTIMATION RESULTS');disp(' '); +skipline(2) +disp('ESTIMATION RESULTS') +skipline() + try disp(sprintf('Log data density is %f.',oo_.MarginalDensity.ModifiedHarmonicMean)) catch @@ -74,7 +77,7 @@ if np if TeX fid = TeXBegin(OutputDirectoryName,M_.fname,1,type); end - disp(' ') + skipline() disp(type) disp(tit2) ip = nvx+nvn+ncx+ncn+1; @@ -120,7 +123,7 @@ if nvx fid = TeXBegin(OutputDirectoryName,M_.fname,2,'standard deviation of structural shocks'); end ip = 1; - disp(' ') + skipline() disp('standard deviation of shocks') disp(tit2) for i=1:nvx @@ -165,7 +168,7 @@ if nvn if TeX fid = TeXBegin(OutputDirectoryName,M_.fname,3,'standard deviation of measurement errors'); end - disp(' ') + skipline() disp('standard deviation of measurement errors') disp(tit2) ip = nvx+1; @@ -207,7 +210,7 @@ if ncx if TeX fid = TeXBegin(OutputDirectoryName,M_.fname,4,'correlation of structural shocks'); end - disp(' ') + skipline() disp('correlation of shocks') disp(tit2) ip = nvx+nvn+1; @@ -261,7 +264,7 @@ if ncn if TeX fid = TeXBegin(OutputDirectoryName,M_.fname,5,'correlation of measurement errors'); end - disp(' ') + skipline() disp('correlation of measurement errors') disp(tit2) ip = nvx+nvn+ncx+1; diff --git a/matlab/McMCDiagnostics.m b/matlab/McMCDiagnostics.m index 7e9023eb2..d4a26cb8c 100644 --- a/matlab/McMCDiagnostics.m +++ b/matlab/McMCDiagnostics.m @@ -131,7 +131,7 @@ else end UDIAG(:,[2 4 6],:) = UDIAG(:,[2 4 6],:)/nblck; -disp(' ') +skipline() clear pmet temp moyenne CSUP CINF csup cinf n linea iter tmp; pages = floor(npar/3); k = 0; diff --git a/matlab/bvar_density.m b/matlab/bvar_density.m index 6d58fad4b..665a9dae5 100644 --- a/matlab/bvar_density.m +++ b/matlab/bvar_density.m @@ -39,10 +39,10 @@ for nlags = 1:maxnlags log_dnsty = posterior_int - prior_int - 0.5*ny*lik_nobs*log(2*pi); - disp(' ') + skipline() fprintf('The marginal log density of the BVAR(%g) model is equal to %10.4f\n', ... nlags, log_dnsty); - disp(' ') + skipline() end diff --git a/matlab/bvar_forecast.m b/matlab/bvar_forecast.m index 3ee4aad95..03100c053 100644 --- a/matlab/bvar_forecast.m +++ b/matlab/bvar_forecast.m @@ -94,10 +94,10 @@ while d <= options_.bvar_replic end if p > 0 - disp(' ') + skipline() disp(['Some of the VAR models sampled from the posterior distribution']) disp(['were found to be explosive (' num2str(p/options_.bvar_replic) ' percent).']) - disp(' ') + skipline() end % Plot graphs diff --git a/matlab/bvar_irf.m b/matlab/bvar_irf.m index b46799f6a..d742915d7 100644 --- a/matlab/bvar_irf.m +++ b/matlab/bvar_irf.m @@ -92,10 +92,10 @@ for draw=1:options_.bvar_replic end if p > 0 - disp(' ') + skipline() disp(['Some of the VAR models sampled from the posterior distribution']) disp(['were found to be explosive (' int2str(p) ' samples).']) - disp(' ') + skipline() end posterior_mean_irfs = mean(sampled_irfs,4); diff --git a/matlab/check.m b/matlab/check.m index 8c7ad94ff..a2afc7b9f 100644 --- a/matlab/check.m +++ b/matlab/check.m @@ -96,18 +96,18 @@ if (nyf == n_explod) && (dr.full_rank) end if options.noprint == 0 - disp(' ') + skipline() disp('EIGENVALUES:') disp(sprintf('%16s %16s %16s\n','Modulus','Real','Imaginary')) z=[m_lambda real(eigenvalues_(i)) imag(eigenvalues_(i))]'; disp(sprintf('%16.4g %16.4g %16.4g\n',z)) disp(sprintf('\nThere are %d eigenvalue(s) larger than 1 in modulus ', n_explod)); disp(sprintf('for %d forward-looking variable(s)',nyf)); - disp(' ') + skipline() if result disp('The rank condition is verified.') else disp('The rank conditions ISN''T verified!') end - disp(' ') + skipline() end diff --git a/matlab/check_list_of_variables.m b/matlab/check_list_of_variables.m index 4b1b69384..415e8759e 100644 --- a/matlab/check_list_of_variables.m +++ b/matlab/check_list_of_variables.m @@ -45,9 +45,9 @@ if options_.dsge_var && options_.bayesian_irf msg = 1; end if msg - disp(' ') + skipline() disp('Posterior IRFs will be computed for all observed variables.') - disp(' ') + skipline() end end varlist = options_.varobs; @@ -55,7 +55,7 @@ if options_.dsge_var && options_.bayesian_irf end if isempty(varlist) - disp(' ') + skipline() disp(['You did not declare endogenous variables after the estimation/calib_smoother command.']) cas = []; if options_.bayesian_irf @@ -93,37 +93,41 @@ if isempty(varlist) string = [ cas , ' will be computed for the ' num2str(M_.endo_nbr) ' endogenous variables']; string = [ string ' of your model, this can be very long....']; format_text(string, 10) - choice = []; - while isempty(choice) - disp(' ') - disp(' ') - disp('Choose one of the following options:') - disp(' ') - disp(' [1] Consider all the endogenous variables.') - disp(' [2] Consider all the observed endogenous variables.') - disp(' [3] Stop Dynare and change the mod file.') - disp(' ') - choice = input('options [default is 1] = '); - if isempty(choice) - choice=1; - end - if choice==1 - varlist = M_.endo_names(1:M_.orig_endo_nbr, :); - elseif choice==2 - varlist = options_.varobs; - elseif choice==3 - varlist = NaN; - else - disp('') - disp('YOU HAVE TO ANSWER 1, 2 or 3!') - disp('') + if options_.nointeractive + % Default behaviour is to consider all the endogenous variables. + varlist = M_.endo_names(1:M_.orig_endo_nbr, :); + else + choice = []; + while isempty(choice) + skipline(2) + disp('Choose one of the following options:') + skipline() + disp(' [1] Consider all the endogenous variables.') + disp(' [2] Consider all the observed endogenous variables.') + disp(' [3] Stop Dynare and change the mod file.') + skipline() + choice = input('options [default is 1] = '); + if isempty(choice) + choice=1; + end + if choice==1 + varlist = M_.endo_names(1:M_.orig_endo_nbr, :); + elseif choice==2 + varlist = options_.varobs; + elseif choice==3 + varlist = NaN; + else + skipline() + disp('YOU HAVE TO ANSWER 1, 2 or 3!') + skipline() + end end end end if isnan(varlist) edit([M_.fname '.mod']) end - disp('') + skipline() end diff --git a/matlab/disp_identification.m b/matlab/disp_identification.m index 0badae976..5bdb3e8e5 100644 --- a/matlab/disp_identification.m +++ b/matlab/disp_identification.m @@ -91,7 +91,7 @@ if any(idemodel.ino), else disp(['The rank of H (model) is deficient!' ]), end - disp(' ') + skipline() for j=1:npar, if any(idemodel.ind0(:,j)==0), pno = 100*length(find(idemodel.ind0(:,j)==0))/SampleSize; @@ -106,7 +106,7 @@ if any(idemodel.ino), npairs=size(idemodel.jweak_pair,2); jmap_pair=dyn_unvech(1:npairs); jstore=[]; - disp(' ') + skipline() for j=1:npairs, iweak = length(find(idemodel.jweak_pair(:,j))); if iweak, @@ -120,7 +120,7 @@ if any(idemodel.ino), end end - disp(' ') + skipline() for j=1:npar, iweak = length(find(idemodel.jweak(:,j))); if iweak && ~ismember(j,jstore), @@ -154,11 +154,11 @@ end if ~any(idemodel.ino) && ~any(any(idemodel.ind0==0)) disp(['All parameters are identified in the model (rank of H).' ]), - disp(' ') + skipline() end if any(idemoments.ino), - disp(' ') + skipline() disp('WARNING !!!') if SampleSize > 1, disp(['The rank of J (moments) is deficient for ', num2str(length(find(idemoments.ino))),' out of ',int2str(SampleSize),' MC runs!' ]), @@ -172,7 +172,7 @@ if any(idemoments.ino), % freqno = mean(indno)*100; % ifreq=find(freqno); % disp('MOMENT RANK FAILURE DUE TO COLLINEARITY OF PARAMETERS:'); - disp(' ') + skipline() for j=1:npar, if any(idemoments.ind0(:,j)==0), pno = 100*length(find(idemoments.ind0(:,j)==0))/SampleSize; @@ -184,7 +184,7 @@ if any(idemoments.ino), disp([' [dJ/d(',name{j},')=0 for all J moments!]' ]) end end - disp(' ') + skipline() npairs=size(idemoments.jweak_pair,2); jmap_pair=dyn_unvech(1:npairs); jstore=[]; @@ -201,7 +201,7 @@ if any(idemoments.ino), end end - disp(' ') + skipline() for j=1:npar, iweak = length(find(idemoments.jweak(:,j))); if iweak && ~ismember(j,jstore), @@ -235,9 +235,9 @@ if any(idemoments.ino), % end end if ~any(idemoments.ino) && ~any(any(idemoments.ind0==0)) - disp(' ') + skipline() disp(['All parameters are identified by J moments (rank of J)' ]), - disp(' ') + skipline() end % if ~ options_.noprint && advanced, @@ -267,7 +267,7 @@ end % identificaton patterns if SampleSize==1 && advanced, - disp(' ') + skipline() disp('Press ENTER to print advanced diagnostics'), pause(5), for j=1:size(idemoments.cosnJ,2), pax=NaN(npar,npar); diff --git a/matlab/disp_model_summary.m b/matlab/disp_model_summary.m index 57b170602..8bd5d2b0e 100644 --- a/matlab/disp_model_summary.m +++ b/matlab/disp_model_summary.m @@ -24,9 +24,9 @@ function disp_model_summary(M,dr) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . -disp(' ') +skipline() disp('MODEL SUMMARY') -disp(' ') +skipline() disp([' Number of variables: ' int2str(M.endo_nbr)]) disp([' Number of stochastic shocks: ' int2str(M.exo_nbr)]) disp([' Number of state variables: ' ... diff --git a/matlab/disp_steady_state.m b/matlab/disp_steady_state.m index b8eecd35a..354b0f6a4 100644 --- a/matlab/disp_steady_state.m +++ b/matlab/disp_steady_state.m @@ -29,9 +29,9 @@ function disp_steady_state(M,oo) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . -disp(' ') +skipline() disp('STEADY-STATE RESULTS:') -disp(' ') +skipline() endo_names = M.endo_names; steady_state = oo.steady_state; for i=1:M.orig_endo_nbr diff --git a/matlab/disp_th_moments.m b/matlab/disp_th_moments.m index 6db80e839..d1a4876a2 100644 --- a/matlab/disp_th_moments.m +++ b/matlab/disp_th_moments.m @@ -64,7 +64,7 @@ if ~options_.noprint %options_.nomoments == 0 lh = size(labels,2)+2; dyntable(title,headers,labels,z,lh,11,4); if M_.exo_nbr > 1 && size(stationary_vars, 1) > 0 - disp(' ') + skipline() if options_.order == 2 title='APPROXIMATED VARIANCE DECOMPOSITION (in percent)'; else @@ -91,16 +91,16 @@ if ~options_.noprint %options_.nomoments == 0 end if length(i1) == 0 - disp(' ') + skipline() disp('All endogenous are constant or non stationary, not displaying correlations and auto-correlations') - disp(' ') - return; + skipline() + return end if options_.nocorr == 0 && size(stationary_vars, 1) > 0 corr = oo_.gamma_y{1}(i1,i1)./(sd(i1)*sd(i1)'); if ~options_.noprint, - disp(' ') + skipline() if options_.order == 2 title='APPROXIMATED MATRIX OF CORRELATIONS'; else @@ -122,7 +122,7 @@ if options_.ar > 0 && size(stationary_vars, 1) > 0 z(:,i) = diag(oo_.gamma_y{i+1}(i1,i1)); end if ~options_.noprint, - disp(' ') + skipline() if options_.order == 2 title='APPROXIMATED COEFFICIENTS OF AUTOCORRELATION'; else diff --git a/matlab/display_conditional_variance_decomposition.m b/matlab/display_conditional_variance_decomposition.m index d0b2e6536..7ce71478c 100644 --- a/matlab/display_conditional_variance_decomposition.m +++ b/matlab/display_conditional_variance_decomposition.m @@ -50,10 +50,10 @@ conditional_decomposition_array = conditional_variance_decomposition(StateSpaceM if options_.noprint == 0 if options_.order == 2 - disp(' ') + skipline() disp('APPROXIMATED CONDITIONAL VARIANCE DECOMPOSITION (in percent)') else - disp(' ') + skipline() disp('CONDITIONAL VARIANCE DECOMPOSITION (in percent)') end end diff --git a/matlab/display_estimation_results_table.m b/matlab/display_estimation_results_table.m index 8ae45c01f..1cfcd9d3f 100644 --- a/matlab/display_estimation_results_table.m +++ b/matlab/display_estimation_results_table.m @@ -44,7 +44,7 @@ ncn = estim_params_.ncn; % Covariance of the measurement innovations (number of np = estim_params_.np ; % Number of deep parameters. nx = nvx+nvn+ncx+ncn+np; % Total number of parameters to be estimated. -disp(' ') +skipline() disp(['RESULTS FROM ' upper(table_title) ' ESTIMATION']) LaTeXtitle=strrep(table_title,' ','_'); tstath = abs(xparam1)./stdh; @@ -76,7 +76,7 @@ if np eval(['oo_.' field_name '_std.parameters.' name ' = stdh(ip);']); ip = ip+1; end - disp(' ') + skipline() end if nvx ip = 1; @@ -98,7 +98,7 @@ if nvx eval(['oo_.' field_name '_std.shocks_std.' name ' = stdh(ip);']); ip = ip+1; end - disp(' ') + skipline() end if nvn disp('standard deviation of measurement errors') @@ -119,7 +119,7 @@ if nvx eval(['oo_.' field_name '_std.measurement_errors_std.' name ' = stdh(ip);']); ip = ip+1; end - disp(' ') + skipline() end if ncx @@ -144,7 +144,7 @@ if ncx eval(['oo_.' field_name '_std.shocks_corr.' NAME ' = stdh(ip);']); ip = ip+1; end - disp(' ') + skipline() end if ncn @@ -167,7 +167,7 @@ if ncn eval(['oo_.' field_name '_std.measurement_errors_corr.' NAME ' = stdh(ip);']); ip = ip+1; end - disp(' ') + skipline() end OutputDirectoryName = CheckPath('Output',M_.dname); diff --git a/matlab/dyn_risky_steadystate_solver.m b/matlab/dyn_risky_steadystate_solver.m index 114e2c1b0..5557c98ad 100644 --- a/matlab/dyn_risky_steadystate_solver.m +++ b/matlab/dyn_risky_steadystate_solver.m @@ -182,7 +182,7 @@ function [resid,dr] = risky_residuals(ys,pm,M,dr,options,oo) pm = model_structure(M,options); [dr,info] = dyn_first_order_solver(d1,M,dr,options,0); if info - print_info(); + print_info(info,options.noprint,options); end dr = dyn_second_order_solver(d1,d2,dr,M,... options.threads.kronecker.A_times_B_kronecker_C,... diff --git a/matlab/dynare.m b/matlab/dynare.m index fb6800c74..06d81f699 100644 --- a/matlab/dynare.m +++ b/matlab/dynare.m @@ -34,11 +34,11 @@ function dynare(fname, varargin) % along with Dynare. If not, see . if strcmpi(fname,'help') - disp(' ') + skipline() disp(['This is dynare version ' dynare_version() '.']) - disp(' ') + skipline() disp('USAGE: dynare FILENAME[.mod,.dyn] [OPTIONS]') - disp(' ') + skipline() disp('dynare executes instruction included in FILENAME.mod.') disp('See the reference manual for the available options.') return diff --git a/matlab/dynare_config.m b/matlab/dynare_config.m index 473b9e1fa..2cd7b7487 100644 --- a/matlab/dynare_config.m +++ b/matlab/dynare_config.m @@ -220,7 +220,7 @@ end %% Test if valid mex files are available, if a mex file is not available %% a matlab version of the routine is included in the path. if verbose - disp(' ') + skipline() disp('Configuring Dynare ...') end @@ -285,7 +285,7 @@ else end if verbose disp([ message 'Markov Switching SBVAR.' ]) - disp(' ') + skipline() end cd(origin); diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m index b0e14d585..01ad20056 100644 --- a/matlab/dynare_estimation_1.m +++ b/matlab/dynare_estimation_1.m @@ -34,9 +34,31 @@ global M_ options_ oo_ estim_params_ bayestopt_ dataset_ % Set particle filter flag. if options_.order > 1 if options_.particle.status && options_.order==2 - disp(' ') + skipline() disp('Estimation using a non linear filter!') - disp(' ') + skipline() + if ~options_.nointeractive && ismember(options_.mode_compute,[1,3,4]) % Known gradient-based optimizers + disp('You are using a gradient-based mode-finder. Particle filtering introduces discontinuities in the') + disp('objective function w.r.t the parameters. Thus, should use a non-gradient based optimizer.') + fprintf('\nPlease choose a mode-finder:\n') + fprintf('\t 0 - Continue using gradient-based method (it is most likely that you will no get any sensible result).\n') + fprintf('\t 6 - Monte Carlo based algorithm\n') + fprintf('\t 7 - Nelder-Mead simplex based optimization routine (Matlab optimization toolbox required)\n') + fprintf('\t 8 - Nelder-Mead simplex based optimization routine (Dynare''s implementation)\n') + fprintf('\t 9 - CMA-ES (Covariance Matrix Adaptation Evolution Strategy) algorithm\n') + choice = []; + while isempty(choice) + choice = input('Please enter your choice: '); + if isnumeric(choice) && isint(choice) && ismember(choice,[0 6 7 8 9]) + if choice + options_.mode_compute = choice; + end + else + fprintf('\nThis is an invalid choice (you have to choose between 0, 6, 7, 8 and 9).\n') + choice = []; + end + end + end elseif options_.particle.status && options_.order>2 error(['Non linear filter are not implemented with order ' int2str(options_.order) ' approximation of the model!']) elseif ~options_.particle.status && options_.order==2 @@ -335,7 +357,7 @@ if ~isequal(options_.mode_compute,0) && ~options_.mh_posterior_mode_estimation fval = feval(objective_function,xparam1,dataset_,options_,M_,estim_params_,bayestopt_,oo_); options_.mh_jscale = Scale; mouvement = max(max(abs(PostVar-OldPostVar))); - disp(' ') + skipline() disp('========================================================== ') disp([' Change in the covariance matrix = ' num2str(mouvement) '.']) disp([' Mode improvement = ' num2str(abs(OldMode-fval))]) @@ -356,7 +378,7 @@ if ~isequal(options_.mode_compute,0) && ~options_.mh_posterior_mode_estimation options_.mh_jscale = Scale; mouvement = max(max(abs(PostVar-OldPostVar))); fval = feval(objective_function,xparam1,dataset_,options_,M_,estim_params_,bayestopt_,oo_); - disp(' ') + skipline() disp('========================================================== ') disp([' Change in the covariance matrix = ' num2str(mouvement) '.']) disp([' Mode improvement = ' num2str(abs(OldMode-fval))]) @@ -369,11 +391,11 @@ if ~isequal(options_.mode_compute,0) && ~options_.mh_posterior_mode_estimation save([M_.fname '_optimal_mh_scale_parameter.mat'],'Scale'); bayestopt_.jscale = ones(length(xparam1),1)*Scale; end - disp(' ') + skipline() disp(['Optimal value of the scale parameter = ' num2str(Scale)]) - disp(' ') + skipline() disp(['Final value of the log posterior (or likelihood): ' num2str(fval)]) - disp(' ') + skipline() parameter_names = bayestopt_.name; save([M_.fname '_mode.mat'],'xparam1','hh','parameter_names'); case 7 @@ -485,7 +507,7 @@ if ~options_.mh_posterior_mode_estimation && options_.cova_compute try chol(hh); catch - disp(' ') + skipline() disp('POSTERIOR KERNEL OPTIMIZATION PROBLEM!') disp(' (minus) the hessian matrix at the "mode" is not positive definite!') disp('=> posterior variance of the estimated parameters are not positive.') @@ -534,9 +556,9 @@ if any(bayestopt_.pshape > 0) && ~options_.mh_posterior_mode_estimation log_det_invhess = -estim_params_nbr*log(scale_factor)+log(det(scale_factor*invhess)); likelihood = feval(objective_function,xparam1,dataset_,options_,M_,estim_params_,bayestopt_,oo_); oo_.MarginalDensity.LaplaceApproximation = .5*estim_params_nbr*log(2*pi) + .5*log_det_invhess - likelihood; - disp(' ') + skipline() disp(sprintf('Log data density [Laplace approximation] is %f.',oo_.MarginalDensity.LaplaceApproximation)) - disp(' ') + skipline() end elseif ~any(bayestopt_.pshape > 0) && ~options_.mh_posterior_mode_estimation oo_=display_estimation_results_table(xparam1,stdh,M_,options_,estim_params_,bayestopt_,oo_,pnames,'Maximum Likelihood','mle'); diff --git a/matlab/dynare_estimation_init.m b/matlab/dynare_estimation_init.m index e99b73bb6..9626306e7 100644 --- a/matlab/dynare_estimation_init.m +++ b/matlab/dynare_estimation_init.m @@ -53,7 +53,7 @@ for i = 1:size(M_.endo_names,1) tmp = strmatch(deblank(M_.endo_names(i,:)),options_.varobs,'exact'); if ~isempty(tmp) if length(tmp)>1 - disp(' ') + skipline() error(['Multiple declarations of ' deblank(M_.endo_names(i,:)) ' as an observed variable is not allowed!']) end options_.lgyidx2varobs(i) = tmp; diff --git a/matlab/dynare_identification.m b/matlab/dynare_identification.m index 47d6133fa..0f22ad9e2 100644 --- a/matlab/dynare_identification.m +++ b/matlab/dynare_identification.m @@ -213,9 +213,9 @@ options_ident.max_dim_cova_group = min([options_ident.max_dim_cova_group,nparam- MaxNumberOfBytes=options_.MaxNumberOfBytes; store_options_ident = options_ident; -disp(' ') +skipline() disp(['==== Identification analysis ====' ]), -disp(' ') +skipline() if iload <=0, @@ -272,11 +272,11 @@ if iload <=0, [idehess_point, idemoments_point, idemodel_point, idelre_point, derivatives_info_point, info] = ... identification_analysis(params,indx,indexo,options_ident,dataset_, prior_exist, name_tex,1); if info(1)~=0, - disp(' ') + skipline() disp('----------- ') disp('Parameter error:') disp(['The model does not solve for ', parameters, ' with error code info = ', int2str(info(1))]), - disp(' ') + skipline() if info(1)==1, disp('info==1 %! The model doesn''t determine the current variables uniquely.') elseif info(1)==2, @@ -305,7 +305,7 @@ if iload <=0, disp('info==30 %! Ergodic variance can''t be computed. ') end disp('----------- ') - disp(' ') + skipline() if any(bayestopt_.pshape) disp('Try sampling up to 50 parameter sets from the prior.') kk=0; @@ -317,15 +317,15 @@ if iload <=0, end end if info(1) - disp(' ') + skipline() disp('----------- ') disp('Identification stopped:') if any(bayestopt_.pshape) disp('The model did not solve for any of 50 attempts of random samples from the prior') end disp('----------- ') - disp(' ') - return, + skipline() + return end else idehess_point.params=params; @@ -343,7 +343,7 @@ if iload <=0, end if SampleSize > 1, - disp(' ') + skipline() disp('Monte Carlo Testing') h = dyn_waitbar(0,'Monte Carlo identification checks ...'); iteration = 0; @@ -587,7 +587,6 @@ else warning on, end -disp(' ') +skipline() disp(['==== Identification analysis completed ====' ]), -disp(' ') -disp(' ') +skipline(2) diff --git a/matlab/dynare_sensitivity.m b/matlab/dynare_sensitivity.m index 719cbf02b..14df1e83b 100644 --- a/matlab/dynare_sensitivity.m +++ b/matlab/dynare_sensitivity.m @@ -215,7 +215,7 @@ if (options_gsa.load_stab || options_gsa.load_rmse || options_gsa.load_redform) any(bayestopt_.p4(~isnan(bayestopt_.p4))~=bkpprior.p4(~isnan(bkpprior.p4))), disp('WARNING!') disp('The saved sample has different priors w.r.t. to current ones!!') - disp('') + skipline() disp('Press ENTER to continue') pause; end @@ -226,7 +226,7 @@ end if options_gsa.stab && ~options_gsa.ppost, x0 = stab_map_(OutputDirectoryName,options_gsa); if isempty(x0), - disp(' ') + skipline() disp('Sensitivity computations stopped: no parameter set provided a unique solution') return end diff --git a/matlab/evaluate_planner_objective.m b/matlab/evaluate_planner_objective.m index e0a7fb747..3067414af 100644 --- a/matlab/evaluate_planner_objective.m +++ b/matlab/evaluate_planner_objective.m @@ -137,11 +137,11 @@ if options.ramsey_policy end if ~options.noprint - disp(' ') + skipline() disp('Approximated value of planner objective function') disp([' - with initial Lagrange multipliers set to 0: ' ... num2str(planner_objective_value(2)) ]) disp([' - with initial Lagrange multipliers set to steady state: ' ... num2str(planner_objective_value(1)) ]) - disp(' ') + skipline() end diff --git a/matlab/forcst_unc.m b/matlab/forcst_unc.m index a402837da..139b09f91 100644 --- a/matlab/forcst_unc.m +++ b/matlab/forcst_unc.m @@ -91,13 +91,11 @@ end oo_.forecast.accept_rate = (replic-m1)/replic; if options_.noprint == 0 && m1 < replic - disp(' ') - disp(' ') + skipline(2) disp('FORECASTING WITH PARAMETER UNCERTAINTY:') disp(sprintf(['The model couldn''t be solved for %f%% of the parameter' ... ' values'],100*oo_.forecast.accept_rate)) - disp(' ') - disp(' ') + skipline(2) end % compute moments diff --git a/matlab/get_prior_info.m b/matlab/get_prior_info.m index c8bd8fddd..cbae72ed1 100644 --- a/matlab/get_prior_info.m +++ b/matlab/get_prior_info.m @@ -167,18 +167,17 @@ if info==2% Prior optimization. bayestopt_.p3, ... bayestopt_.p4,options_,M_,estim_params_,oo_); % Display the results. - disp(' ') - disp(' ') + skipline(2) disp('------------------') disp('PRIOR OPTIMIZATION') disp('------------------') - disp(' ') + skipline() for i = 1:length(xparams) disp(['deep parameter ' int2str(i) ': ' get_the_name(i,0,M_,estim_params_,options_) '.']) disp([' Initial condition ....... ' num2str(xinit(i)) '.']) disp([' Prior mode .............. ' num2str(bayestopt_.p5(i)) '.']) disp([' Optimized prior mode .... ' num2str(xparams(i)) '.']) - disp(' ') + skipline() end end diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m index 3b497efb2..dae49c300 100644 --- a/matlab/global_initialization.m +++ b/matlab/global_initialization.m @@ -107,6 +107,9 @@ gmhmaxlik.nclimb = 200000; gmhmaxlik.nscale = 200000; options_.gmhmaxlik = gmhmaxlik; +% Request user input. +options_.nointeractive = 0; + % Graphics options_.graphics.nrows = 3; options_.graphics.ncols = 3; diff --git a/matlab/gsa/Morris_Measure_Groups.m b/matlab/gsa/Morris_Measure_Groups.m index a807b8085..5b6c30720 100644 --- a/matlab/gsa/Morris_Measure_Groups.m +++ b/matlab/gsa/Morris_Measure_Groups.m @@ -40,7 +40,7 @@ function [SAmeas, OutMatrix] = Morris_Measure_Groups(NumFact, Sample, Output, p, % along with Dynare. If not, see . if nargin==0, - disp(' ') + skipline() disp('[SAmeas, OutMatrix] = Morris_Measure_Groups(NumFact, Sample, Output, p, Group);') return end diff --git a/matlab/gsa/filt_mc_.m b/matlab/gsa/filt_mc_.m index 5ced8be59..53bf376db 100644 --- a/matlab/gsa/filt_mc_.m +++ b/matlab/gsa/filt_mc_.m @@ -50,11 +50,10 @@ fname_ = M_.fname; lgy_ = M_.endo_names; dr_ = oo_.dr; -disp(' ') -disp(' ') +skipline(2) disp('Starting sensitivity analysis') disp('for the fit of EACH observed series ...') -disp(' ') +skipline() disp('Deleting old SA figures...') a=dir([OutDir,filesep,'*.*']); tmp1='0'; @@ -149,7 +148,7 @@ if ~loadSA, nruns=size(x,1); nfilt=floor(pfilt*nruns); if options_.opt_gsa.ppost || (options_.opt_gsa.ppost==0 && options_.opt_gsa.lik_only==0) - disp(' ') + skipline() disp('Computing RMSE''s...') fobs = options_.first_obs; nobs=options_.nobs; @@ -408,7 +407,7 @@ else end param_names=param_names(2:end,:); - disp(' ') + skipline() disp('RMSE over the MC sample:') disp(' min yr RMSE max yr RMSE') for j=1:size(vvarvecm,1), @@ -416,8 +415,7 @@ else end invar = find( std(rmse_MC)./mean(rmse_MC)<=0.0001 ); if ~isempty(invar) - disp(' ') - disp(' ') + skipline(2) disp('RMSE is not varying significantly over the MC sample for the following variables:') disp(vvarvecm(invar,:)) disp('These variables are excluded from SA') @@ -427,7 +425,7 @@ else vvarvecm=vvarvecm(ivar,:); rmse_MC=rmse_MC(:,ivar); - disp(' ') + skipline() % if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior, disp(['Sample filtered the ',num2str(pfilt*100),'% best RMSE''s for each observed series ...' ]) % else @@ -437,8 +435,7 @@ else % set(gca,'xticklabel',vvarvecm) % saveas(gcf,[fname_,'_SA_RMSE']) - disp(' ') - disp(' ') + skipline(2) disp('RMSE ranges after filtering:') if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior, disp([' best ',num2str(pfilt*100),'% filtered remaining 90%']) @@ -461,7 +458,7 @@ else %%%%% R2 table - disp(' ') + skipline() disp('R2 over the MC sample:') disp(' min yr R2 max yr R2') for j=1:size(vvarvecm,1), @@ -469,11 +466,10 @@ else end r2_MC=r2_MC(:,ivar); - disp(' ') + skipline() disp(['Sample filtered the ',num2str(pfilt*100),'% best R2''s for each observed series ...' ]) - disp(' ') - disp(' ') + skipline() disp('R2 ranges after filtering:') if options_.opt_gsa.ppost==0 && options_.opt_gsa.pprior, disp([' best ',num2str(pfilt*100),'% filtered remaining 90%']) @@ -511,14 +507,13 @@ else % snam=bayestopt_.name(find(nsp>0)); nsnam=(find(nsp>1)); - disp(' ') - disp(' ') + skipline(2 disp('These parameters do not affect significantly the fit of ANY observed series:') disp(snam0) - disp(' ') + skipline() disp('These parameters affect ONE single observed series:') disp(snam1) - disp(' ') + skipline() disp('These parameters affect MORE THAN ONE observed series: trade off exists!') disp(snam2) @@ -594,8 +589,7 @@ else nsx(j)=length(find(SP(:,j))); end - disp(' ') - disp(' ') + skipline(2 disp('Sensitivity table (significance and direction):') vav=char(zeros(1, size(param_names,2)+3 )); ibl = 12-size(vvarvecm,2); @@ -610,8 +604,7 @@ else end - disp(' ') - disp(' ') + skipline() disp('Starting bivariate analysis:') for i=1:size(vvarvecm,1) diff --git a/matlab/gsa/gsa_speed.m b/matlab/gsa/gsa_speed.m index bd3358410..d0845c57f 100644 --- a/matlab/gsa/gsa_speed.m +++ b/matlab/gsa/gsa_speed.m @@ -56,6 +56,6 @@ for i=1:nrun, end dyn_waitbar(i/nrun,h) end -disp(' ') +skipline() disp('.. done !') dyn_waitbar_close(h) diff --git a/matlab/gsa/mc_moments.m b/matlab/gsa/mc_moments.m index 22838d9ce..31fd3bce6 100644 --- a/matlab/gsa/mc_moments.m +++ b/matlab/gsa/mc_moments.m @@ -39,5 +39,5 @@ global options_ M_ dyn_waitbar(j/nsam,h) end dyn_waitbar_close(h) - disp(' ') + skipline() disp('... done !') diff --git a/matlab/gsa/redform_map.m b/matlab/gsa/redform_map.m index eb6c8e0cf..94c56a41d 100644 --- a/matlab/gsa/redform_map.m +++ b/matlab/gsa/redform_map.m @@ -116,7 +116,7 @@ for j=1:size(anamendo,1) for jx=1:size(anamexo,1) namexo=deblank(anamexo(jx,:)); iexo=strmatch(namexo,M_.exo_names,'exact'); - disp(' ') + skipline() disp(['[', namendo,' vs. ',namexo,']']) @@ -162,7 +162,7 @@ for j=1:size(anamendo,1) for jp=1:length(indsmirnov), disp([M_.param_names(estim_params_.param_vals(indsmirnov(jp),1),:),' d-stat = ', num2str(dproba(indsmirnov(jp)),'%1.3f'),' p-value = ', num2str(proba(indsmirnov(jp)),'%1.3f')]) end - disp(' '); + skipline() stab_map_1(x0, iy, iyc, 'threshold',pvalue_ks,indsmirnov,xdir,[],['Reduced Form Mapping (Threshold) for ', namendo,' vs. lagged ', namexo]); stab_map_2(x0(iy,:),alpha2,pvalue_corr,'inside_threshold',xdir,[],['Reduced Form Mapping (Inside Threshold)for ', namendo,' vs. lagged ', namexo]) stab_map_2(x0(iyc,:),alpha2,pvalue_corr,'outside_threshold',xdir,[],['Reduced Form Mapping (Outside Threshold) for ', namendo,' vs. lagged ', namexo]) @@ -218,7 +218,7 @@ for j=1:size(anamendo,1) for je=1:size(anamlagendo,1) namlagendo=deblank(anamlagendo(je,:)); ilagendo=strmatch(namlagendo,M_.endo_names(oo_.dr.order_var(M_.nstatic+1:M_.nstatic+nsok),:),'exact'); - disp(' ') + skipline() disp(['[', namendo,' vs. lagged ',namlagendo,']']) if ~isempty(ilagendo), @@ -261,7 +261,7 @@ for j=1:size(anamendo,1) for jp=1:length(indsmirnov), disp([M_.param_names(estim_params_.param_vals(indsmirnov(jp),1),:),' d-stat = ', num2str(dproba(indsmirnov(jp)),'%1.3f'),' p-value = ', num2str(proba(indsmirnov(jp)),'%1.3f')]) end - disp(' '); + skipline() stab_map_1(x0, iy, iyc, 'threshold',pvalue_ks,indsmirnov,xdir,[],['Reduced Form Mapping (Threshold) for ', namendo,' vs. lagged ', namlagendo]); stab_map_2(x0(iy,:),alpha2,pvalue_corr,'inside_threshold',xdir,[],['Reduced Form Mapping (Inside Threshold) for ', namendo,' vs. lagged ', namlagendo]) stab_map_2(x0(iyc,:),alpha2,pvalue_corr,'outside_threshold',xdir,[],['Reduced Form Mapping (Outside Threshold) for ', namendo,' vs. lagged ', namlagendo]) diff --git a/matlab/gsa/stab_map_.m b/matlab/gsa/stab_map_.m index de220c3c8..ca8a54f7f 100644 --- a/matlab/gsa/stab_map_.m +++ b/matlab/gsa/stab_map_.m @@ -499,9 +499,9 @@ if length(iunstable)>0 && length(iunstable)0 && length(iunstable)ksstat); @@ -543,7 +543,7 @@ if length(iunstable)>0 && length(iunstable)0 && length(iunstable)0 && length(iunstable)0 && length(iunstable) ). save([M_.fname '_mean.mat'],'xparam1','hh','SIGMA'); - -disp(' '); +skipline() disp('MH: I''m computing the posterior log marginal density (modified harmonic mean)... '); detSIGMA = det(SIGMA); invSIGMA = inv(SIGMA); diff --git a/matlab/metropolis_hastings_initialization.m b/matlab/metropolis_hastings_initialization.m index 3e75c78da..b90f72130 100644 --- a/matlab/metropolis_hastings_initialization.m +++ b/matlab/metropolis_hastings_initialization.m @@ -127,9 +127,15 @@ if ~options_.load_mh_file && ~options_.mh_recover init_iter = init_iter + 1; if init_iter > 100 && validate == 0 disp(['MH: I couldn''t get a valid initial value in 100 trials.']) - disp(['MH: You should Reduce mh_init_scale...']) - disp(sprintf('MH: Parameter mh_init_scale is equal to %f.',options_.mh_init_scale)) - options_.mh_init_scale = input('MH: Enter a new value... '); + if options_.nointeractive + disp(['MH: I reduce mh_init_scale by ten percent:']) + options_.mh_init_scale = .9*options_.mh_init_scale; + disp(sprintf('MH: Parameter mh_init_scale is now equal to %f.',options_.mh_init_scale)) + else + disp(['MH: You should Reduce mh_init_scale...']) + disp(sprintf('MH: Parameter mh_init_scale is equal to %f.',options_.mh_init_scale)) + options_.mh_init_scale = input('MH: Enter a new value... '); + end trial = trial+1; end end @@ -140,7 +146,7 @@ if ~options_.load_mh_file && ~options_.mh_recover end fprintf(fidlog,' \n'); disp('MH: Initial values found!') - disp(' ') + skipline() else% Case 2: one chain (we start from the posterior mode) fprintf(fidlog,[' Initial values of the parameters:\n']); candidate = transpose(xparam1(:));% @@ -148,7 +154,7 @@ if ~options_.load_mh_file && ~options_.mh_recover ix2 = candidate; ilogpo2 = - feval(TargetFun,ix2',dataset_,options_,M_,estim_params_,bayestopt_,oo_); disp('MH: Initialization at the posterior mode.') - disp(' ') + skipline() fprintf(fidlog,[' Blck ' int2str(1) 'params:\n']); for i=1:length(ix2(1,:)) fprintf(fidlog,[' ' int2str(i) ':' num2str(ix2(1,i)) '\n']); @@ -270,13 +276,13 @@ elseif options_.load_mh_file && ~options_.mh_recover record.MhDraws(end,3) = AnticipatedNumberOfLinesInTheLastFile; save([MhDirectoryName '/' ModelName '_mh_history.mat'],'record'); disp(['MH: ... It''s done. I''ve loaded ' int2str(NumberOfPreviousSimulations) ' simulations.']) - disp(' ') + skipline() fclose(fidlog); elseif options_.mh_recover %% The previous metropolis-hastings crashed before the end! I try to %% recover the saved draws... disp('MH: Recover mode!') - disp(' ') + skipline() file = dir([MhDirectoryName '/' ModelName '_mh_history.mat']); if ~length(file) error('MH:: FAILURE! there is no MH-history file!') diff --git a/matlab/mode_check.m b/matlab/mode_check.m index 6f9299ac1..e7591e21d 100644 --- a/matlab/mode_check.m +++ b/matlab/mode_check.m @@ -65,11 +65,11 @@ end fval = feval(fun,x,DynareDataset,DynareOptions,Model,EstimatedParameters,BayesInfo,DynareResults); if ~isempty(hessian); - disp(' ') + skipline() disp('MODE CHECK') - disp(' ') + skipline() disp(sprintf('Fval obtained by the minimization routine: %f', fval)) - disp(' ') + skipline() if s_min 0 && options_.noprint == 0 end lh = size(labels,2)+2; dyntable(my_title,headers,labels,res_table,lh,10,6); - disp(' ') + skipline() end diff --git a/matlab/newrat.m b/matlab/newrat.m index 3ce1dbd10..5b2c7e7d9 100644 --- a/matlab/newrat.m +++ b/matlab/newrat.m @@ -214,10 +214,10 @@ while norm(gg)>gtol && check==0 && jithtol htol=htol0; - disp(' ') + skipline() disp('Numerical noise in the likelihood') disp('Tolerance has to be relaxed') - disp(' ') + skipline() end if ~outer_product_gradient, H = bfgsi1(H,gg-g(:,icount),xparam1-x(:,icount)); @@ -256,16 +256,16 @@ end save m1.mat x hh g hhg igg fval0 nig if ftol>ftol0 - disp(' ') + skipline() disp('Numerical noise in the likelihood') disp('Tolerance had to be relaxed') - disp(' ') + skipline() end if jit==nit - disp(' ') + skipline() disp('Maximum number of iterations reached') - disp(' ') + skipline() end if norm(gg)<=gtol diff --git a/matlab/osr.m b/matlab/osr.m index ccb7c0c7d..325ab943b 100644 --- a/matlab/osr.m +++ b/matlab/osr.m @@ -34,9 +34,9 @@ for i=1:np i_params(i) = strmatch(deblank(params(i,:)),M_.param_names,'exact'); end -disp(' ') +skipline() disp('OPTIMAL SIMPLE RULE') -disp(' ') +skipline() osr1(i_params,i_var,W); stoch_simul(var_list); \ No newline at end of file diff --git a/matlab/osr1.m b/matlab/osr1.m index 601355f7c..7709368d1 100644 --- a/matlab/osr1.m +++ b/matlab/osr1.m @@ -63,14 +63,14 @@ oo_.osr.objective_function = f; -disp('') +skipline() disp('OPTIMAL VALUE OF THE PARAMETERS:') -disp('') +skipline() for i=1:np disp(sprintf('%16s %16.6g\n',M_.param_names(i_params(i),:),p(i))) end disp(sprintf('Objective function : %16.6g\n',f)); -disp(' ') +skipline() [oo_.dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_); % 05/10/03 MJ modified to work with osr.m and give full report \ No newline at end of file diff --git a/matlab/parallel/AnalyseComputationalEnvironment.m b/matlab/parallel/AnalyseComputationalEnvironment.m index 6d5d07430..f6dd9e970 100644 --- a/matlab/parallel/AnalyseComputationalEnvironment.m +++ b/matlab/parallel/AnalyseComputationalEnvironment.m @@ -123,11 +123,9 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' Environment= (OScallerUnix || OStargetUnix); - disp(' '); - disp(' '); + skipline(2) disp(['Testing computer -> ',DataInput(Node).ComputerName,' <- ...']); - disp(' '); - disp(' '); + skipline(2) % The function is composed by two main blocks, determined by the 'Local' % variable. @@ -138,18 +136,14 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' if ((DataInput(Node).Local == 0) |(DataInput(Node).Local == 1)) % Continue it is Ok! disp('Check on Local Variable ..... Ok!'); - disp(' '); - disp(' '); - + skipline() else disp('The variable "Local" has a bad value!'); - disp(' '); + skipline() disp('ErrorCode 1.'); - disp(' '); - disp(' '); + skipline() ErrorCode=1; return - end % %%%%%%%%%% Local (No Network) Computing %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -189,17 +183,14 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' end if (si1) - disp(['It is impossibile to ping to the computer with name "',DataInput(Node).ComputerName,'" using the network!']); - disp(' '); - disp('ErrorCode 3.'); + disp(['It is impossibile to ping to the computer with name "',DataInput(Node).ComputerName,'" using the network!']) + skipline() + disp('ErrorCode 3.') ErrorCode=3; - disp(' '); - disp(' '); -% return; + skipline(2) else - disp('Check on ComputerName Variable ..... Ok!'); - disp(' '); - disp(' '); + disp('Check on ComputerName Variable ..... Ok!') + skipline(2) end @@ -212,34 +203,29 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' % strategy. if (isempty(DataInput(Node).UserName)) - disp('The fields UserName is empty!'); - disp(' '); - disp('ErrorCode 4.'); - disp(' '); - disp(' '); + disp('The fields UserName is empty!') + skipline() + disp('ErrorCode 4.') + skipline(2) ErrorCode=4; return end - disp('Check on UserName Variable ..... Ok!'); - disp(' '); - disp(' '); + disp('Check on UserName Variable ..... Ok!') + skipline(2) % This check can be removed ... according to the dynare parser % strategy. if (~isempty(DataInput(Node).Password)) disp('[WARNING] The field Password should be empty under unix or mac!'); - disp(' '); - disp(['Remove the string ',DataInput(Node).Password,' from this field!']); - disp(' '); - disp('ErrorCode 4.'); - disp(' '); - disp(' '); + skipline() + disp(['Remove the string ',DataInput(Node).Password,' from this field!']) + skipline() + disp('ErrorCode 4.') + skipline(2) ErrorCode=4; - % return else - disp('Check on Password Variable ..... Ok!'); - disp(' '); - disp(' '); + disp('Check on Password Variable ..... Ok!') + skipline(2) end else @@ -248,20 +234,16 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' if (isempty(DataInput(Node).UserName)) || (isempty(DataInput(Node).Password)) disp('The fields UserName and/or Password are/is empty!'); - disp(' '); - disp('ErrorCode 4.'); - disp(' '); - disp(' '); + skipline() + disp('ErrorCode 4.') + skipline(2) ErrorCode=4; return end disp('Check on UserName Variable ..... Ok!'); - disp(' '); - disp(' '); + skipline() disp('Check on Password Variable ..... Ok!'); - disp(' '); - disp(' '); - + skipline() end % Now we very if RemoteDrive and/or RemoteDirectory exist on remote @@ -273,11 +255,10 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' % strategy. if isempty(DataInput(Node).RemoteDirectory) - disp('The field RemoteDirectory is empty!'); - disp(' '); - disp('ErrorCode 5.'); - disp(' '); - disp(' '); + disp('The field RemoteDirectory is empty!') + skipline() + disp('ErrorCode 5.') + skipline() ErrorCode=5; return end @@ -286,15 +267,13 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' % strategy. if (~isempty(DataInput(Node).RemoteDrive)) - disp('[WARNING] The fields RemoteDrive should be empty under unix or mac!'); - disp(' '); - disp(['remove the string ',DataInput(Node).RemoteDrive,' from this field!']); - disp(' '); - disp('ErrorCode 5.'); - disp(' '); - disp(' '); + disp('[WARNING] The fields RemoteDrive should be empty under unix or mac!') + skipline() + disp(['remove the string ',DataInput(Node).RemoteDrive,' from this field!']) + skipline() + disp('ErrorCode 5.') + skipline(2) ErrorCode=5; - % return end si2=[]; @@ -308,32 +287,28 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' [si2 de2]=system(['ssh ',ssh_token,' ',DataInput(Node).UserName,'@',DataInput(Node).ComputerName,' ls ',DataInput(Node).RemoteDirectory,'/',RemoteTmpFolder,'/']); if (si2) - disp ('Remote Directory does not exist or is not reachable!'); - disp(' '); - disp('ErrorCode 5.'); - disp(' '); - disp(' '); + disp ('Remote Directory does not exist or is not reachable!') + skipline() + disp('ErrorCode 5.') + skipline(2) ErrorCode=5; return end - disp('Check on RemoteDirectory Variable ..... Ok!'); - disp(' '); - disp(' '); - disp('Check on RemoteDrive Variable ..... Ok!'); - disp(' '); - disp(' '); + disp('Check on RemoteDirectory Variable ..... Ok!') + skipline(2) + disp('Check on RemoteDrive Variable ..... Ok!') + skipline(2) else % This check can be removed ... according to the dynare parser % strategy. if (isempty(DataInput(Node).RemoteDrive)||isempty(DataInput(Node).RemoteDirectory)) - disp('Remote RemoteDrive and/or RemoteDirectory is/are empty!'); - disp(' '); - disp('ErrorCode 5.'); - disp(' '); - disp(' '); + disp('Remote RemoteDrive and/or RemoteDirectory is/are empty!') + skipline() + disp('ErrorCode 5.') + skipline(2) ErrorCode=5; return end @@ -344,21 +319,18 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' [si2 de2]=system(['dir \\',DataInput(Node).ComputerName,'\',DataInput(Node).RemoteDrive,'$\',DataInput(Node).RemoteDirectory,'\',RemoteTmpFolder]); if (si2) - disp ('Remote Directory does not exist or it is not reachable!'); - disp(' '); - disp('ErrorCode 5.'); - disp(' '); - disp(' '); + disp ('Remote Directory does not exist or it is not reachable!') + skipline() + disp('ErrorCode 5.') + skipline(2) ErrorCode=5; return end - disp('Check on RemoteDirectory Variable ..... Ok!'); - disp(' '); - disp(' '); - disp('Check on RemoteDrive Variable ..... Ok!'); - disp(' '); - disp(' '); + disp('Check on RemoteDirectory Variable ..... Ok!') + skipline(2) + disp('Check on RemoteDrive Variable ..... Ok!') + skipline(2) end @@ -407,17 +379,15 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' delete ('Tracing.m'); if (isempty(FindTracing)) - disp ('It is impossible to exchange data with Remote Drive and/or Remote Directory! ErrorCode 6.'); - disp(' '); - disp('ErrorCode 6.'); - disp(' '); - disp(' '); + disp('It is impossible to exchange data with Remote Drive and/or Remote Directory! ErrorCode 6.') + skipline() + disp('ErrorCode 6.') + skipline(2) ErrorCode=6; return else - disp('Check on Exchange File with Remote Computer ..... Ok!'); - disp(' '); - disp(' '); + disp('Check on Exchange File with Remote Computer ..... Ok!') + skipline(2) end @@ -466,10 +436,10 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' while (1); if Flag==0 - disp('Try to run matlab/octave on remote machine ... '); - disp(' '); - disp('please wait ... '); - disp(' '); + disp('Try to run matlab/octave on remote machine ... ') + skipline() + disp('please wait ... ') + skipline() Flag=1; end nt=fix(clock); @@ -486,25 +456,22 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' if (ErrorCode==7) - disp ('It is not possible execute a matlab session on remote machine!'); - disp(' '); - disp('ErrorCode 7.'); - disp(' '); - disp(' '); + disp ('It is not possible execute a matlab session on remote machine!') + skipline() + disp('ErrorCode 7.') + skipline(2) ErrorCode=7; dynareParallelRmDir(RemoteTmpFolder,DataInput(Node)); return - else - disp('Check on MatlabOctave Path and MatlabOctave Program Execution on remote machine ..... Ok!'); - disp(' '); - disp(' '); + disp('Check on MatlabOctave Path and MatlabOctave Program Execution on remote machine ..... Ok!') + skipline(2) % Now we verify if the DynarePath is correct ... - disp('Check the Dynare path on remote machine ... '); - disp(' '); - disp('please wait ... '); - disp(' '); + disp('Check the Dynare path on remote machine ... ') + skipline() + disp('please wait ... ') + skipline(2) pause(2) if isempty(dynareParallelDir('DynareIsOk.txt',RemoteTmpFolder,DataInput(Node))) @@ -512,20 +479,16 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' end if (ErrorCode==8) - - disp ('The DynarePath is incorrect!'); - disp(' '); - disp('ErrorCode 8.'); - disp(' '); - disp(' '); + disp ('The DynarePath is incorrect!') + skipline() + disp('ErrorCode 8.') + skipline(2) ErrorCode=8; dynareParallelRmDir(RemoteTmpFolder,DataInput(Node)); return - else - disp('Check on Dynare Path remote machine ..... Ok!'); - disp(' '); - disp(' '); + disp('Check on Dynare Path remote machine ..... Ok!') + skipline(2) end end @@ -539,15 +502,13 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' si3=dynareParallelDir('Tracing.m', RemoteTmpFolder,DataInput(Node)); if (isempty(si3)) - disp ('Check on Delete Remote Computational Traces ..... Ok!'); - disp(' '); - disp(' '); + disp ('Check on Delete Remote Computational Traces ..... Ok!') + skipline(2) else - disp ('It is impossible to delete temporary files on remote machine!'); - disp(' '); - disp('ErrorCode 9.'); - disp(' '); - disp(' '); + disp ('It is impossible to delete temporary files on remote machine!') + skipline() + disp('ErrorCode 9.') + skipline(2) ErrorCode=9; return end @@ -563,11 +524,10 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' if yn==1 % The field is empty! - disp('The field "CPUnbr" is empty!'); - disp(' '); - disp('ErrorCode 2.'); - disp(' '); - disp(' '); + disp('The field "CPUnbr" is empty!') + skipline() + disp('ErrorCode 2.') + skipline(2) ErrorCode=2; return end @@ -620,16 +580,16 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' if isempty (RealCPUnbr) % An error occurred when we try to know the Cpu/Cores % numbers. - disp('It is impossible determine the number of Cpu/Processor avaiable on this machine!'); - disp(' '); - disp('ErrorCode 2.'); - disp(' '); + disp('It is impossible determine the number of Cpu/Processor avaiable on this machine!') + skipline() + disp('ErrorCode 2.') + skipline() if Environment - disp('Check the command "$less /proc/cpuinfo" ... !'); + disp('Check the command "$less /proc/cpuinfo" ... !') else - disp('Check if the pstools are installed and are in machine path! And check the command "psinfo \\"'); + disp('Check if the pstools are installed and are in machine path! And check the command "psinfo \\"') end - disp(' '); + skipline() ErrorCode=2; return end @@ -642,38 +602,25 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for' CPUnbrUser=length(DataInput(Node).CPUnbr); maxCPUnbrUser=max(DataInput(Node).CPUnbr)+1; - disp(['Hardware has ', num2str(RealCPUnbr),' Cpu/Cores!']); - disp(['User requires ',num2str(CPUnbrUser),' Cpu/Cores!']); + disp(['Hardware has ', num2str(RealCPUnbr),' Cpu/Cores!']) + disp(['User requires ',num2str(CPUnbrUser),' Cpu/Cores!']) if CPUnbrUser==RealCPUnbr, % It is Ok! - disp('Check on CPUnbr Variable ..... Ok!'); - disp(' '); - disp(' '); - disp(' '); - + disp('Check on CPUnbr Variable ..... Ok!') + skipline(3) end if CPUnbrUser > RealCPUnbr - disp('Warning! The user asks to use more CPU''s than those available.'); - disp(' '); - disp(' '); + disp('Warning! The user asks to use more CPU''s than those available.') + skipline(2) ErrorCode=2.1; - % return - end if CPUnbrUser < RealCPUnbr - disp('Warning! There are unused CPU''s!'); - disp(' '); - disp(' '); + disp('Warning! There are unused CPU''s!') + skipline(2) ErrorCode=2.2; - % return end - disp(['Test for Cluster computation, computer ',DataInput(Node).ComputerName, ' ..... Passed!']); - disp(' '); - disp(' '); - - -end - -return \ No newline at end of file + disp(['Test for Cluster computation, computer ',DataInput(Node).ComputerName, ' ..... Passed!']) + skipline(2) +end \ No newline at end of file diff --git a/matlab/plot_identification.m b/matlab/plot_identification.m index b37129510..278133ce7 100644 --- a/matlab/plot_identification.m +++ b/matlab/plot_identification.m @@ -88,7 +88,7 @@ if SampleSize == 1, if advanced, if ~options_.nodisplay, - disp(' ') + skipline() disp('Press ENTER to plot advanced diagnostics'), pause(5), end hh = dyn_figure(options_,'Name',[tittxt, ' - Sensitivity plot']); @@ -152,7 +152,7 @@ if SampleSize == 1, xlabel([tittxt,' - Collinearity patterns with ', int2str(j) ,' parameter(s)'],'interpreter','none') dyn_saveas(hh,[ IdentifDirectoryName '/' M_.fname '_ident_collinearity_' tittxt1 '_' int2str(j) ],options_); end - disp('') + skipline() if idehess.flag_score, [U,S,V]=svd(idehess.AHess,0); S=diag(S); @@ -232,7 +232,7 @@ else dyn_saveas(hh,[ IdentifDirectoryName '/' M_.fname '_MC_sensitivity' ],options_); if advanced, if ~options_.nodisplay, - disp(' ') + skipline() disp('Press ENTER to display advanced diagnostics'), pause(5), end % options_.nograph=1; diff --git a/matlab/random_walk_metropolis_hastings.m b/matlab/random_walk_metropolis_hastings.m index f64603f69..91cd69534 100644 --- a/matlab/random_walk_metropolis_hastings.m +++ b/matlab/random_walk_metropolis_hastings.m @@ -168,4 +168,4 @@ disp(['MH: Total number of generated files : ' int2str(NewFile(1)*nblck) '. disp(['MH: Total number of iterations : ' int2str((NewFile(1)-1)*MAX_nruns+irun-1) '.']) disp('MH: average acceptation rate per chain : ') disp(record.AcceptationRates); -disp(' ') +skipline() diff --git a/matlab/resid.m b/matlab/resid.m index 807bb435f..a69ba8fe3 100644 --- a/matlab/resid.m +++ b/matlab/resid.m @@ -83,12 +83,10 @@ M_.Sigma_e = Sigma_e; % Display the non-zero residuals if no return value if nargout == 0 - for i = 1:4 - disp(' ') - end + skipline(4) ind = []; disp('Residuals of the static equations:') - disp(' ') + skipline() for i=1:M_.orig_endo_nbr if abs(z(i)) < options_.dynatol.f/100 tmp = 0; @@ -107,9 +105,7 @@ if nargout == 0 disp( ['Equation number ', int2str(i) ,' : ', num2str(tmp) ,' : ' s]) end end - for i = 1:2 - disp(' ') - end + skipline(2) end if info(1) diff --git a/matlab/set_dynare_seed.m b/matlab/set_dynare_seed.m index c9eb42a9a..991b8ed57 100644 --- a/matlab/set_dynare_seed.m +++ b/matlab/set_dynare_seed.m @@ -73,9 +73,9 @@ if matlab_random_streams% Use new matlab interface. strcmpi(a,'swb2712') ) disp('set_dynare_seed:: First argument must be string designing the uniform random number algorithm!') RandStream.list - disp(' ') + skipline() disp('set_dynare_seed:: Change the first input accordingly...') - disp(' ') + skipline() error(' ') end if ~isint(b) diff --git a/matlab/sim1.m b/matlab/sim1.m index 35b5318b8..ffe622eb6 100644 --- a/matlab/sim1.m +++ b/matlab/sim1.m @@ -77,7 +77,7 @@ fprintf('\n') ; model_dynamic = str2func([M_.fname,'_dynamic']); z = Y(find(lead_lag_incidence')); [d1,jacobian] = model_dynamic(z,oo_.exo_simul, params, ... - steady_state,2); + steady_state,M_.maximum_lag+1); A = sparse([],[],[],periods*ny,periods*ny,periods*nnz(jacobian)); res = zeros(periods*ny,1); @@ -91,15 +91,15 @@ for iter = 1:options_.maxit_ i_cols = find(lead_lag_incidence'); i_cols_A = i_cols; - for it = 2:(periods+1) + for it = (M_.maximum_lag+1):(M_.maximum_lag+periods) [d1,jacobian] = model_dynamic(Y(i_cols),exo_simul, params, ... steady_state,it); - if it == periods+1 && it == 2 + if it == M_.maximum_lag+periods && it == M_.maximum_lag+1 A(i_rows,i_cols_A0) = jacobian(:,i_cols_0); - elseif it == periods+1 + elseif it == M_.maximum_lag+periods A(i_rows,i_cols_A(i_cols_T)) = jacobian(:,i_cols_T); - elseif it == 2 + elseif it == M_.maximum_lag+1 A(i_rows,i_cols_A1) = jacobian(:,i_cols_1); else A(i_rows,i_cols_A) = jacobian(:,i_cols_j); @@ -109,7 +109,7 @@ for iter = 1:options_.maxit_ i_rows = i_rows + ny; i_cols = i_cols + ny; - if it > 2 + if it > M_.maximum_lag+1 i_cols_A = i_cols_A + ny; end end diff --git a/matlab/simplex_optimization_routine.m b/matlab/simplex_optimization_routine.m index fb170c250..b06135c62 100644 --- a/matlab/simplex_optimization_routine.m +++ b/matlab/simplex_optimization_routine.m @@ -1,4 +1,4 @@ -Xfunction [x,fval,exitflag] = simplex_optimization_routine(objective_function,x,options,varargin) +function [x,fval,exitflag] = simplex_optimization_routine(objective_function,x,options,varargin) % Nelder-Mead like optimization routine. % By default, we use standard values for the reflection, the expansion, the contraction and the shrink coefficients (alpha = 1, chi = 2, psi = 1 / 2 and σ = 1 / 2). % See http://en.wikipedia.org/wiki/Nelder-Mead_method @@ -9,7 +9,7 @@ Xfunction [x,fval,exitflag] = simplex_optimization_routine(objective_function,x, % amelioration is possible. % % INPUTS -% objective_function [string] Name of the iobjective function to be minimized. +% objective_function [string] Name of the objective function to be minimized. % x [double] n*1 vector, starting guess of the optimization routine. % options [structure] % @@ -17,7 +17,7 @@ Xfunction [x,fval,exitflag] = simplex_optimization_routine(objective_function,x, % % -% Copyright (C) 2010-2012 Dynare Team +% Copyright (C) 2010-2013 Dynare Team % % This file is part of Dynare. % @@ -167,18 +167,18 @@ trend_vector_2 = 2:(number_of_variables+1); % Set initial simplex around the initial guess (x). if verbose - for i=1:3, disp(' '), end + skipline(3) disp('+----------------------+') disp(' SIMPLEX INITIALIZATION ') disp('+----------------------+') - disp(' ') + skipline() end initial_point = x; [initial_score,junk1,junk2,nopenalty] = feval(objective_function,x,varargin{:}); if ~nopenalty error('simplex_optimization_routine:: Initial condition is wrong!') else - [v,fv,delta] = simplex_initialization(objective_function,initial_point,initial_score,delta,1,varargin{:}); + [v,fv,delta] = simplex_initialization(objective_function,initial_point,initial_score,delta,zero_delta,1,varargin{:}); func_count = number_of_variables + 1; iter_count = 1; if verbose @@ -188,7 +188,7 @@ else for i=1:number_of_variables fprintf(1,'%s: \t\t\t %+8.6f \t\t\t %+8.6f \t\t\t %+8.6f \t\t\t %+8.6f \t\t\t %+8.6f \n',bayestopt_.name{i},v(i,1), v(i,end), mean(v(i,:),2), min(v(i,:),[],2), max(v(i,:),[],2)); end - disp(' ') + skipline() end end @@ -247,8 +247,7 @@ while (func_count < max_func_calls) && (iter_count < max_iterations) && (simplex if fxe < fxr% xe is even better than xr. if optimize_expansion_parameter if verbose>1 - disp('') - disp('') + skipline(2) disp('Compute optimal expansion...') end xee = xbar + rho*chi*1.01*(xbar-v(:,end)); @@ -316,8 +315,7 @@ while (func_count < max_func_calls) && (iter_count < max_iterations) && (simplex end if verbose>1 disp('Done!') - disp(' ') - disp(' ') + skipline(2) end end v(:,end) = xe; @@ -384,7 +382,7 @@ while (func_count < max_func_calls) && (iter_count < max_iterations) && (simplex disp(['Norm of dSimplex: ' num2str(norm(v-vold,'fro'))]) disp(['Crit. f: ' num2str(critF)]) disp(['Crit. x: ' num2str(critX)]) - disp(' ') + skipline() end if verbose && max(abs(best_point-v(:,1)))>x_tolerance; if verbose<2 @@ -395,14 +393,14 @@ while (func_count < max_func_calls) && (iter_count < max_iterations) && (simplex disp(['Norm of dSimplex: ' num2str(norm(v-vold,'fro'))]) disp(['Crit. f: ' num2str(critF)]) disp(['Crit. x: ' num2str(critX)]) - disp(' ') + skipline() end disp(['Current parameter values: ']) fprintf(1,'%s: \t\t\t %s \t\t\t %s \t\t\t %s \t\t\t %s \t\t\t %s \n','Names','Best point', 'Worst point', 'Mean values', 'Min values', 'Max values'); for i=1:number_of_variables fprintf(1,'%s: \t\t\t %+8.6f \t\t\t %+8.6f \t\t\t %+8.6f \t\t\t %+8.6f \t\t\t %+8.6f \n',bayestopt_.name{i}, v(i,1), v(i,end), mean(v(i,:),2), min(v(i,:),[],2), max(v(i,:),[],2)); end - disp(' ') + skipline() end if abs(best_point_score-fv(1))2 estimated_parameters_optimization_path = [NaN;xparam]; save('optimization_path.mat','estimated_parameters_optimization_path'); end - disp(' ') + skipline() disp('Master talks to its slaves...') - disp(' ') + skipline() % Save the workspace. save('master_variables.mat','options_','M_','oo_'); % Send the workspace to each remote computer. - disp('') + skipline() for i = 1:length(parallel) if ~strcmpi(hostname,parallel(i).machine) unix(['scp master_variables.mat ' , parallel(i).login , '@' , parallel(i).machine , ':' parallel(i).folder]); @@ -191,9 +191,9 @@ if nargin>2 end end end - disp(' ') + skipline() disp('... And slaves do as ordered.') - disp(' ') + skipline() if exist('intermediary_results_from_master_and_slaves','dir') unix('rm -rf intermediary_results_from_master_and_slaves'); end @@ -201,7 +201,7 @@ if nargin>2 unix('chmod -R u+x intermediary_results_from_master_and_slaves'); end -disp(''); +skipline() if options.optimization_routine==1 % Set options for csminwel. diff --git a/matlab/skipline.m b/matlab/skipline.m new file mode 100644 index 000000000..feb5bd83f --- /dev/null +++ b/matlab/skipline.m @@ -0,0 +1,34 @@ +function skipline(n,fid) + +% Copyright (C) 2013 Dynare Team +% +% This file is part of Dynare. +% +% Dynare is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% Dynare is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with Dynare. If not, see . + +if nargin<2 + fid = 1; +end + +if nargin<1 + fid = 1; +end + +if ~nargin || isequal(n,1) + fprintf(fid,'\n'); +else + for i=1:n + fprintf(fid,'\n'); + end +end \ No newline at end of file diff --git a/matlab/solve1.m b/matlab/solve1.m index 52eb8460e..0cacf6e3a 100644 --- a/matlab/solve1.m +++ b/matlab/solve1.m @@ -136,7 +136,7 @@ for its = 1:maxit end check = 1; -disp(' ') +skipline() disp('SOLVE: maxit has been reached') % 01/14/01 MJ lnsearch is now a separate function diff --git a/matlab/steady.m b/matlab/steady.m index 510d1f89f..5ae9a0ac9 100644 --- a/matlab/steady.m +++ b/matlab/steady.m @@ -55,7 +55,7 @@ end if info(1) hv = options_.homotopy_values; - disp(' ') + skipline() disp('WARNING: homotopy step was not completed') disp('The last values for which a solution was found are:') for i=1:length(ip) diff --git a/matlab/stoch_simul.m b/matlab/stoch_simul.m index bf22883d9..8de0e4bfe 100644 --- a/matlab/stoch_simul.m +++ b/matlab/stoch_simul.m @@ -83,9 +83,9 @@ if info(1) end if ~options_.noprint - disp(' ') + skipline() disp('MODEL SUMMARY') - disp(' ') + skipline() disp([' Number of variables: ' int2str(M_.endo_nbr)]) disp([' Number of stochastic shocks: ' int2str(M_.exo_nbr)]) disp([' Number of state variables: ' int2str(M_.nspred)]) @@ -97,9 +97,9 @@ if ~options_.noprint lh = size(labels,2)+2; dyntable(my_title,headers,labels,M_.Sigma_e,lh,10,6); if options_.partial_information - disp(' ') + skipline() disp('SOLUTION UNDER PARTIAL INFORMATION') - disp(' ') + skipline() if isfield(options_,'varobs')&& ~isempty(options_.varobs) PCL_varobs=options_.varobs; @@ -113,7 +113,7 @@ if ~options_.noprint disp([' ' PCL_varobs(i,:)]) end end - disp(' ') + skipline() if options_.order <= 2 && ~PI_PCL_solver disp_dr(oo_.dr,options_.order,var_list); end diff --git a/matlab/utilities/dataset/initialize_dataset.m b/matlab/utilities/dataset/initialize_dataset.m index f43bee9be..c890e83fd 100644 --- a/matlab/utilities/dataset/initialize_dataset.m +++ b/matlab/utilities/dataset/initialize_dataset.m @@ -48,10 +48,10 @@ dataset_.info.varobs = varobs; % Test the number of variables in the database. if dataset_.info.nvobs-size(rawdata,2) - disp(' ') + skipline() disp(['Declared number of observed variables = ' int2str(dataset.info.nvobs)]) disp(['Number of variables in the database = ' int2str(size(rawdata,2))]) - disp(' ') + skipline() error(['Estimation can''t take place because the declared number of observed' ... 'variables doesn''t match the number of variables in the database.']) end diff --git a/matlab/utilities/doc/dynInfo.m b/matlab/utilities/doc/dynInfo.m index 3c20d0e77..952c5bbe1 100644 --- a/matlab/utilities/doc/dynInfo.m +++ b/matlab/utilities/doc/dynInfo.m @@ -68,8 +68,7 @@ if strcmp(ext(2:end),'m') fprintf(fid,'%s\n',deblank(block(i,:))); end fclose(fid); - disp(' ') - disp(' ') + skipline(2) system(['makeinfo --plaintext --no-split --no-validate ' fun '.texi']); delete([fun '.texi']); else diff --git a/matlab/utilities/tests/build_report_summary.m b/matlab/utilities/tests/build_report_summary.m index 9e2fc0eae..b4a1dcd20 100644 --- a/matlab/utilities/tests/build_report_summary.m +++ b/matlab/utilities/tests/build_report_summary.m @@ -49,17 +49,17 @@ gitlastcommithash = reportfilecontent.gitlastcommithash; str = 'Hi,'; str = char(str,''); -str = char(str,'This is a summary report for the unitary tests in Dynare. Full report can be found at'); +str = char(str,'This is a summary report for the unitary tests in Dynare. Full report can be found at:'); +str = char(str,''); str = char(str,''); str = char(str,['http://www.dynare.org/stepan/dynare/tests/' reportfile]); +str = char(str,''); str = char(str,['http://www.dynare.org/stepan/dynare/tests/' reportfile(1:end-3) 'log']); str = char(str,''); str = char(str,gitinfo(1,:)); str = char(str,gitinfo(2,:)); - str = char(str,''); str = char(str,''); - str = char(str,['===========================']); str = char(str,'DYNARE/MATLAB UNITARY TESTS'); str = char(str,'==========================='); @@ -75,9 +75,9 @@ for i=1:size(reportcell,1) end if printonscreen - fprintf('\n\n') + skipline(2); disp(str) - fprintf('\n\n') + skipline(2); end if mailreport diff --git a/mex/sources/bytecode/Evaluate.cc b/mex/sources/bytecode/Evaluate.cc index 74be26bf3..89b79ef87 100644 --- a/mex/sources/bytecode/Evaluate.cc +++ b/mex/sources/bytecode/Evaluate.cc @@ -1640,38 +1640,6 @@ Evaluate::compute_complete_2b(const bool no_derivatives, double *_res1, double * compute_block_time(Per_u_, false, no_derivatives); if (!(isnan(res1) || isinf(res1))) { -#ifdef USE_OMP - if (size > 10) - { - double res1_ = 0; - double res2_ = 0; - double max_res_ = 0; - int max_res_idx_ = 0; - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) reduction(+:res1_, res2_) shared(max_res_, max_res_idx_) - #endif - for (int i = 0; i < size; i++) - { - double rr = r[i]; - res[i+shift] = rr; - if (max_res_ < fabs(rr)) - { - max_res_ = fabs(rr); - max_res_idx_ = i; - } - res2_ += rr*rr; - res1_ += fabs(rr); - } - *_res1 += res1_; - *_res2 += res2_; - if (max_res_ > *_max_res) - { - *_max_res = max_res_; - *_max_res_idx = max_res_idx_; - } - } - else -#endif { for (int i = 0; i < size; i++) { @@ -1704,39 +1672,6 @@ Evaluate::compute_complete(const bool no_derivatives, double &_res1, double &_re compute_block_time(0, false, no_derivatives); if (!(isnan(res1) || isinf(res1))) { -#ifdef USE_OMP - if (size > 10) - { - double res1_ = 0; - double res2_ = 0; - double max_res_ = 0; - int max_res_idx_ = 0; - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) reduction(+:res1_, res2_) shared(max_res_, max_res_idx_) - #endif - for (int i = 0; i < size; i++) - { - double rr = r[i]; - if (max_res_ < fabs(rr)) - { - #ifdef USE_OMP - #pragma omp critical - #endif - { - max_res_ = fabs(rr); - max_res_idx_ = i; - } - } - res2_ += rr*rr; - res1_ += fabs(rr); - } - _res1 = res1_; - _res2 = res2_; - _max_res = max_res_; - _max_res_idx = max_res_idx_; - } - else -#endif { _res1 = 0; _res2 = 0; @@ -1771,9 +1706,6 @@ Evaluate::compute_complete(double lambda, double *crit) if (steady_state) { it_ = 0; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < size; i++) { int eq = index_vara[i]; diff --git a/mex/sources/bytecode/Interpreter.cc b/mex/sources/bytecode/Interpreter.cc index 522f71890..fb47033c4 100644 --- a/mex/sources/bytecode/Interpreter.cc +++ b/mex/sources/bytecode/Interpreter.cc @@ -93,15 +93,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen { compute_block_time(0, true, /*block_num, size, steady_state, */false); if (block >= 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[j] = y[Block_Contain[j].Variable] - ya[Block_Contain[j].Variable]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[Block_Contain[j].Equation] = y[Block_Contain[j].Variable] - ya[Block_Contain[j].Variable]; } @@ -114,15 +108,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen Per_y_ = it_*y_size; compute_block_time(0, true, /*block_num, size, steady_state, */false); if (block >= 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*size+j] = y[it_*y_size+Block_Contain[j].Variable] - ya[it_*y_size+Block_Contain[j].Variable]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*size+Block_Contain[j].Equation] = y[it_*y_size+Block_Contain[j].Variable] - ya[it_*y_size+Block_Contain[j].Variable]; } @@ -135,15 +123,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen { compute_block_time(0, true, /*block_num, size, steady_state,*/ false); if (block < 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[Block_Contain[j].Equation] = r[j]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[j] = r[j]; } @@ -156,15 +138,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen Per_y_ = it_*y_size; compute_block_time(0, true, /*block_num, size, steady_state,*/ false); if (block < 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[Per_y_+Block_Contain[j].Equation] = r[j]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*size+j] = r[j]; } @@ -183,15 +159,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen { compute_block_time(0, true, /*block_num, size, steady_state,*/ false); if (block < 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[Block_Contain[j].Equation] = r[j]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[j] = r[j]; } @@ -204,15 +174,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen Per_y_ = it_*y_size; compute_block_time(0, true, /*block_num, size, steady_state,*/ false); if (block < 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*y_size+Block_Contain[j].Equation] = r[j]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*size+j] = r[j]; } @@ -224,15 +188,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen { compute_block_time(0, true, /*block_num, size, steady_state,*/ false); if (block >= 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[j] = y[Block_Contain[j].Variable] - ya[Block_Contain[j].Variable]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[Block_Contain[j].Equation] = y[Block_Contain[j].Variable] - ya[Block_Contain[j].Variable]; } @@ -245,15 +203,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen Per_y_ = it_*y_size; compute_block_time(0, true, /*block_num, size, steady_state,*/ false); if (block >= 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*size+j] = y[it_*y_size+Block_Contain[j].Variable] - ya[it_*y_size+Block_Contain[j].Variable]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*size+Block_Contain[j].Equation] = y[it_*y_size+Block_Contain[j].Variable] - ya[it_*y_size+Block_Contain[j].Variable]; } @@ -266,15 +218,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen { compute_block_time(0, true, /*block_num, size, steady_state,*/ false); if (block < 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[Block_Contain[j].Equation] = r[j]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[j] = r[j]; } @@ -287,15 +233,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen Per_y_ = it_*y_size; compute_block_time(0, true, /*block_num, size, steady_state,*/ false); if (block < 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[Per_y_+Block_Contain[j].Equation] = r[j]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*size+j] = r[j]; } @@ -311,15 +251,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen { compute_block_time(0, true, /*block_num, size, steady_state,*/ false); if (block < 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[Block_Contain[j].Equation] = r[j]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[j] = r[j]; } @@ -332,15 +266,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen Per_y_ = it_*y_size; compute_block_time(0, true, /*block_num, size, steady_state, */false); if (block < 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[Per_y_+Block_Contain[j].Equation] = r[j]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*size+j] = r[j]; } @@ -361,15 +289,9 @@ Interpreter::evaluate_a_block(/*const int size, const int type, string bin_basen it_code = begining; compute_block_time(Per_u_, true, /*block_num, size, steady_state,*/ false); if (block < 0) - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*y_size+Block_Contain[j].Equation] = r[j]; else - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (int j = 0; j < size; j++) residual[it_*size+j] = r[j]; } diff --git a/mex/sources/bytecode/SparseMatrix.cc b/mex/sources/bytecode/SparseMatrix.cc index c0bd86f73..70226a798 100644 --- a/mex/sources/bytecode/SparseMatrix.cc +++ b/mex/sources/bytecode/SparseMatrix.cc @@ -622,9 +622,6 @@ dynSparseMatrix::Read_SparseMatrix(string file_name, const int Size, int periods if (periods+y_kmin+y_kmax > 1) for (int i = 1; i < periods+y_kmin+y_kmax; i++) { -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int j = 0; j < Size; j++) index_vara[j+Size*i] = index_vara[j+Size*(i-1)] + y_size; } @@ -660,9 +657,6 @@ dynSparseMatrix::Simple_Init(int Size, map, int>, int> &IM, NbNZCol = (int *) mxMalloc(i); it4 = IM.begin(); eq = -1; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (i = 0; i < Size; i++) { line_done[i] = 0; @@ -705,9 +699,6 @@ dynSparseMatrix::Simple_Init(int Size, map, int>, int> &IM, it4++; } double cum_abs_sum = 0; -#if USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) reduction(+:cum_abs_sum) -#endif for (int i = 0; i < Size; i++) { b[i] = i; @@ -763,9 +754,6 @@ dynSparseMatrix::Init_Matlab_Sparse_Simple(int Size, map, in throw FatalExceptionHandling(tmp.str()); } map, int>, int>::iterator it4; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size*(periods+y_kmin); i++) ya[i] = y[i]; #ifdef DEBUG @@ -774,9 +762,6 @@ dynSparseMatrix::Init_Matlab_Sparse_Simple(int Size, map, in unsigned int NZE = 0; int last_var = 0; double cum_abs_sum = 0; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) reduction(+:cum_abs_sum) -#endif for (int i = 0; i < Size; i++) { b[i] = u[i]; @@ -887,9 +872,6 @@ dynSparseMatrix::Init_UMFPACK_Sparse_Simple(int Size, map, i } map, int>, int>::iterator it4; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < Size; i++) { int eq = index_vara[i]; @@ -901,10 +883,6 @@ dynSparseMatrix::Init_UMFPACK_Sparse_Simple(int Size, map, i unsigned int NZE = 0; int last_var = 0; double cum_abs_sum = 0; - -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) reduction(+:cum_abs_sum) -#endif for (int i = 0; i < Size; i++) { (*b)[i] = u[i]; @@ -1014,9 +992,6 @@ dynSparseMatrix::Init_UMFPACK_Sparse(int periods, int y_kmin, int y_kmax, int Si throw FatalExceptionHandling(tmp.str()); } map, int>, int>::iterator it4; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size*(periods+y_kmin); i++) ya[i] = y[i]; #ifdef DEBUG @@ -1024,10 +999,6 @@ dynSparseMatrix::Init_UMFPACK_Sparse(int periods, int y_kmin, int y_kmax, int Si #endif unsigned int NZE = 0; int last_var = 0; - -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < periods*Size; i++) { (*b)[i] = 0; @@ -1193,9 +1164,6 @@ dynSparseMatrix::Init_CUDA_Sparse_Simple(int Size, map, int> } map, int>, int>::iterator it4; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < Size; i++) { int eq = index_vara[i]; @@ -1208,10 +1176,6 @@ dynSparseMatrix::Init_CUDA_Sparse_Simple(int Size, map, int> unsigned int NZE = 0; int last_var = 0; double cum_abs_sum = 0; - -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) reduction(+:cum_abs_sum) -#endif for (int i = 0; i < Size; i++) { (*b)[i] = u[i]; @@ -1334,9 +1298,6 @@ dynSparseMatrix::Init_CUDA_Sparse(int periods, int y_kmin, int y_kmax, int Size, map, int>, int>::iterator it4; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size*(periods+y_kmin); i++) ya[i] = y[i]; #ifdef DEBUG @@ -1344,9 +1305,6 @@ dynSparseMatrix::Init_CUDA_Sparse(int periods, int y_kmin, int y_kmax, int Size, #endif unsigned int NZE = 0, NZE_tild = 0; int last_eq = 0; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < periods*Size; i++) { Host_b[i] = 0; @@ -1630,9 +1588,6 @@ dynSparseMatrix::Init_Matlab_Sparse(int periods, int y_kmin, int y_kmax, int Siz } map, int>, int>::iterator it4; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size*(periods+y_kmin); i++) ya[i] = y[i]; #ifdef DEBUG @@ -1640,9 +1595,6 @@ dynSparseMatrix::Init_Matlab_Sparse(int periods, int y_kmin, int y_kmax, int Siz #endif unsigned int NZE = 0; int last_var = 0; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < periods*Size; i++) { b[i] = 0; @@ -1765,17 +1717,11 @@ dynSparseMatrix::Init_GE(int periods, int y_kmin, int y_kmax, int Size, map= beg_t+y_kmin; t--) { int j = 0, k; @@ -2243,9 +2174,6 @@ dynSparseMatrix::bksub(int tbreak, int last_period, int Size, double slowc_l) NonZeroElem *first; int i, j, k; double yy; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size*(periods+y_kmin); i++) y[i] = ya[i]; if (symbolic && tbreak) @@ -2284,9 +2212,6 @@ dynSparseMatrix::simple_bksub(int it_, int Size, double slowc_l) int i, k; double yy; NonZeroElem *first; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size; i++) y[i+it_*y_size] = ya[i+it_*y_size]; for (i = Size-1; i >= 0; i--) @@ -2427,9 +2352,6 @@ dynSparseMatrix::substract_A_B(mxArray *A_m, mxArray *B_m) double *B_d = mxGetPr(B_m); mxArray *C_m = mxCreateDoubleMatrix(m_A, n_B, mxREAL); double *C_d = mxGetPr(C_m); -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int j = 0; j < (int) n_A; j++) for (unsigned int i = 0; i < m_A; i++) { @@ -2558,10 +2480,6 @@ dynSparseMatrix::mult_SAT_B(mxArray *A_m, mxArray *B_m) double *B_d = mxGetPr(B_m); mxArray *C_m = mxCreateDoubleMatrix(m_A, n_B, mxREAL); double *C_d = mxGetPr(C_m); - //unsigned int nze_A = 0; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int j = 0; j < (int)n_B; j++) { for (unsigned int i = 0; i < n_A; i++) @@ -3154,9 +3072,6 @@ dynSparseMatrix::Solve_Matlab_LU_UMFPack(mxArray *A_m, mxArray *b_m, int Size, d mexCallMATLAB(1, &z, 2, rhs, "mldivide"); double *res = mxGetPr(z); if (is_two_boundaries) -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < (int) n; i++) { int eq = index_vara[i+Size*y_kmin]; @@ -3165,9 +3080,6 @@ dynSparseMatrix::Solve_Matlab_LU_UMFPack(mxArray *A_m, mxArray *b_m, int Size, d y[eq] += slowc_l * yy; } else -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < (int) n; i++) { int eq = index_vara[i]; @@ -3256,9 +3168,6 @@ dynSparseMatrix::Solve_LU_UMFPack(SuiteSparse_long *Ap, SuiteSparse_long *Ai, do } if (is_two_boundaries) -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < n; i++) { int eq = index_vara[i+Size*y_kmin]; @@ -3267,9 +3176,6 @@ dynSparseMatrix::Solve_LU_UMFPack(SuiteSparse_long *Ap, SuiteSparse_long *Ai, do y[eq] += slowc_l * yy; } else -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < n; i++) { int eq = index_vara[i]; @@ -3325,9 +3231,6 @@ dynSparseMatrix::Solve_LU_UMFPack(mxArray *A_m, mxArray *b_m, int Size, double s umfpack_dl_report_info ((double*) NULL, Info) ; //double *res = mxGetPr(z); if (is_two_boundaries) -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < n; i++) { int eq = index_vara[i+Size*y_kmin]; @@ -3336,9 +3239,6 @@ dynSparseMatrix::Solve_LU_UMFPack(mxArray *A_m, mxArray *b_m, int Size, double s y[eq] += slowc_l * yy; } else -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < n; i++) { int eq = index_vara[i]; @@ -3561,9 +3461,6 @@ dynSparseMatrix::Solve_CUDA_BiCGStab(int *Ap, int *Ai, double *Ax, int *Ap_tild, cudaChk(cudaFree(x0), " in Solve_Cuda_BiCGStab, can't free x0\n"); cudaChk(cudaFree(b), " in Solve_Cuda_BiCGStab, can't free b\n"); if (is_two_boundaries) -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < n; i++) { int eq = index_vara[i+Size*y_kmin]; @@ -3572,9 +3469,6 @@ dynSparseMatrix::Solve_CUDA_BiCGStab(int *Ap, int *Ai, double *Ax, int *Ap_tild, y[eq] += slowc * yy; } else -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < n; i++) { int eq = index_vara[i]; @@ -4552,9 +4446,6 @@ dynSparseMatrix::Solve_CUDA_BiCGStab(int *Ap, int *Ai, double *Ax, int *Ap_tild, cudaChk(cudaMemcpy(tmp_vect_host, x0, n * sizeof(double), cudaMemcpyDeviceToHost), " in Solve_Cuda_BiCGStab, cudaMemcpy tmp_vect_host = x0 has failed\n"); if (is_two_boundaries) -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < n; i++) { int eq = index_vara[i+Size*y_kmin]; @@ -4563,9 +4454,6 @@ dynSparseMatrix::Solve_CUDA_BiCGStab(int *Ap, int *Ai, double *Ax, int *Ap_tild, y[eq] += slowc * yy; } else -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < n; i++) { int eq = index_vara[i]; @@ -4658,9 +4546,6 @@ dynSparseMatrix::Solve_Matlab_GMRES(mxArray *A_m, mxArray *b_m, int Size, double { double *res = mxGetPr(z); if (is_two_boundaries) -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < (int) n; i++) { int eq = index_vara[i+Size*y_kmin]; @@ -4669,9 +4554,6 @@ dynSparseMatrix::Solve_Matlab_GMRES(mxArray *A_m, mxArray *b_m, int Size, double y[eq] += slowc * yy; } else -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < (int) n; i++) { int eq = index_vara[i]; @@ -4752,9 +4634,6 @@ dynSparseMatrix::Solve_Matlab_BiCGStab(mxArray *A_m, mxArray *b_m, int Size, dou mxArray *res = mult_SAT_B(Sparse_transpose(A_m), x0_m); double *resid = mxGetPr(res); double *b = mxGetPr(b_m); -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < (int)n; i++) resid[i] = b[i] - resid[i]; mxArray *rhs[2]; @@ -4768,9 +4647,6 @@ dynSparseMatrix::Solve_Matlab_BiCGStab(mxArray *A_m, mxArray *b_m, int Size, dou z = lhs[0]; double *phat = mxGetPr(z); double *x0 = mxGetPr(x0_m); -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < (int)n; i++) phat[i] = x0[i] + phat[i]; @@ -4778,9 +4654,6 @@ dynSparseMatrix::Solve_Matlab_BiCGStab(mxArray *A_m, mxArray *b_m, int Size, dou res = mult_SAT_B(Sparse_transpose(A_m), z); resid = mxGetPr(res); double cum_abs = 0; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) reduction(+:cum_abs) -#endif for (int i = 0; i < (int)n; i++) { resid[i] = b[i] - resid[i]; @@ -4867,9 +4740,6 @@ dynSparseMatrix::Solve_Matlab_BiCGStab(mxArray *A_m, mxArray *b_m, int Size, dou { double *res = mxGetPr(z); if (is_two_boundaries) -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < (int) n; i++) { int eq = index_vara[i+Size*y_kmin]; @@ -4878,9 +4748,6 @@ dynSparseMatrix::Solve_Matlab_BiCGStab(mxArray *A_m, mxArray *b_m, int Size, dou y[eq] += slowc * yy; } else -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < (int) n; i++) { int eq = index_vara[i]; @@ -4904,9 +4771,6 @@ dynSparseMatrix::Singular_display(int block, int Size) rhs[0] = mxCreateDoubleMatrix(Size, Size, mxREAL); double *pind; pind = mxGetPr(rhs[0]); -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int j = 0; j < Size * Size; j++) pind[j] = 0.0; for (int ii = 0; ii < Size; ii++) @@ -5233,9 +5097,6 @@ dynSparseMatrix::Solve_ByteCode_Sparse_GaussianElimination(int Size, int blck, i } } double slowc_lbx = slowc; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size; i++) ya[i+it_*y_size] = y[i+it_*y_size]; @@ -5844,9 +5705,6 @@ dynSparseMatrix::Solve_ByteCode_Symbolic_Sparse_GaussianElimination(int Size, bo /*The backward substitution*/ double slowc_lbx = slowc; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size*(periods+y_kmin); i++) ya[i] = y[i]; slowc_save = slowc; @@ -5863,9 +5721,6 @@ dynSparseMatrix::Grad_f_product(int n, mxArray *b_m, double* vectr, mxArray *A_m if ((solve_algo == 5 && steady_state) || (stack_solve_algo == 5 && !steady_state)) { NonZeroElem *first; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) private(first) -#endif for (int i = 0; i < n; i++) { double sum = 0; @@ -5913,9 +5768,6 @@ dynSparseMatrix::Grad_f_product(int n, mxArray *b_m, double* vectr, mxArray *A_m } } memset(vectr, 0, n * sizeof(double)); -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) /*shared(vectr)*/ -#endif for (int i = 0; i < n; i++) for (SuiteSparse_long j = Ap[i]; j < Ap[i+1]; j++) vectr[Ai[j]] += Ax[j] * b_[i]; @@ -5934,9 +5786,6 @@ dynSparseMatrix::Check_and_Correct_Previous_Iteration(int block_num, int y_size, { prev_slowc_save = slowc_save; slowc_save /= 1.1; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < size; i++) { int eq = index_vara[i]; @@ -5952,9 +5801,6 @@ dynSparseMatrix::Check_and_Correct_Previous_Iteration(int block_num, int y_size, { prev_slowc_save = slowc_save; slowc_save /= 1.5; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < size; i++) { int eq = index_vara[i]; @@ -5979,9 +5825,6 @@ dynSparseMatrix::Check_and_Correct_Previous_Iteration(int block_num, int y_size, double *p = (double*)mxMalloc(size * sizeof(double)); Grad_f_product(size, b_m_save, p, A_m_save, Ap_save, Ai_save, Ax_save, b_save); double slope=0.0; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) reduction(+:slope) -#endif for (int i = 1; i < size; i++) slope += - direction[i] * p[i]; /*if (slope > 0) @@ -6037,9 +5880,6 @@ dynSparseMatrix::Check_and_Correct_Previous_Iteration(int block_num, int y_size, prev_slowc_save = slowc_save; glambda2 = crit_opt; try_at_iteration++; -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < size; i++) { int eq = index_vara[i]; @@ -6051,10 +5891,7 @@ dynSparseMatrix::Check_and_Correct_Previous_Iteration(int block_num, int y_size, mxFree(p); } //if (print_it) - mexPrintf("Error: Simulation diverging, trying to correct it using slowc=%f\n", slowc_save); -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif + mexPrintf("Error: Simulation diverging, trying to correct it using slowc=%f\n", slowc_save); for (int i = 0; i < size; i++) { int eq = index_vara[i]; @@ -6222,9 +6059,6 @@ dynSparseMatrix::Simulate_One_Boundary(int block_num, int y_size, int y_kmin, in } if (zero_solution) { -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < size; i++) { int eq = index_vara[i]; @@ -6467,9 +6301,6 @@ dynSparseMatrix::Simulate_Newton_Two_Boundaries(int blck, int y_size, int y_kmin try_at_iteration++; if (slowc_save <= bottom) { -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size*(periods+y_kmin); i++) y[i] = ya[i]+direction[i]; g0 = res2; @@ -6491,9 +6322,6 @@ dynSparseMatrix::Simulate_Newton_Two_Boundaries(int blck, int y_size, int y_kmin else mexPrintf("Simulation diverging, trying to correct it using slowc=%f\n", slowc_save); } -#ifdef USE_OMP -#pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) -#endif for (int i = 0; i < y_size*(periods+y_kmin); i++) y[i] = ya[i]+slowc_save*direction[i]; iter--; diff --git a/mex/sources/bytecode/bytecode.cc b/mex/sources/bytecode/bytecode.cc index 56ec734fd..018a384b5 100644 --- a/mex/sources/bytecode/bytecode.cc +++ b/mex/sources/bytecode/bytecode.cc @@ -794,17 +794,10 @@ main(int nrhs, const char *prhs[]) direction = (double *) mxMalloc(size_of_direction); memset(direction, 0, size_of_direction); double *x = (double *) mxMalloc(col_x*row_x*sizeof(double)); - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (i = 0; i < row_x*col_x; i++) { x[i] = double (xd[i]); } - - #ifdef USE_OMP - #pragma omp parallel for num_threads(atoi(getenv("DYNARE_NUM_THREADS"))) - #endif for (i = 0; i < row_y*col_y; i++) { y[i] = double (yd[i]); diff --git a/preprocessor/DynareMain.cc b/preprocessor/DynareMain.cc index 79201e391..f62f60399 100644 --- a/preprocessor/DynareMain.cc +++ b/preprocessor/DynareMain.cc @@ -36,7 +36,7 @@ using namespace std; Splitting main() in two parts was necessary because ParsingDriver.h and MacroDriver.h can't be included simultaneously (because of Bison limitations). */ -void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms, bool no_log, bool no_warn, bool warn_uninit, bool console, +void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms, bool no_log, bool no_warn, bool warn_uninit, bool console, bool nograph, bool nointeractive, bool parallel, const string ¶llel_config_file, const string &cluster_name, bool parallel_slave_open_mode, bool parallel_test #if defined(_WIN32) || defined(__CYGWIN32__) @@ -48,7 +48,7 @@ void usage() { cerr << "Dynare usage: dynare mod_file [debug] [noclearall] [savemacro[=macro_file]] [onlymacro] [nolinemacro] [notmpterms] [nolog] [warn_uninit]" - << " [console] [parallel[=cluster_name]] [conffile=parallel_config_path_and_filename] [parallel_slave_open_mode] [parallel_test] " + << " [console] [nograph] [nointeractive] [parallel[=cluster_name]] [conffile=parallel_config_path_and_filename] [parallel_slave_open_mode] [parallel_test] " << " [-D[=]]" #if defined(_WIN32) || defined(__CYGWIN32__) << " [cygwin] [msvc]" @@ -84,6 +84,8 @@ main(int argc, char **argv) bool no_warn = false; bool warn_uninit = false; bool console = false; + bool nograph = false; + bool nointeractive = false; #if defined(_WIN32) || defined(__CYGWIN32__) bool cygwin = false; bool msvc = false; @@ -129,6 +131,10 @@ main(int argc, char **argv) warn_uninit = true; else if (!strcmp(argv[arg], "console")) console = true; + else if (!strcmp(argv[arg], "nograph")) + nograph = true; + else if (!strcmp(argv[arg], "nointeractive")) + nointeractive = true; #if defined(_WIN32) || defined(__CYGWIN32__) else if (!strcmp(argv[arg], "cygwin")) cygwin = true; @@ -221,7 +227,7 @@ main(int argc, char **argv) return EXIT_SUCCESS; // Do the rest - main2(macro_output, basename, debug, clear_all, no_tmp_terms, no_log, no_warn, warn_uninit, console, + main2(macro_output, basename, debug, clear_all, no_tmp_terms, no_log, no_warn, warn_uninit, console, nograph, nointeractive, parallel, parallel_config_file, cluster_name, parallel_slave_open_mode, parallel_test #if defined(_WIN32) || defined(__CYGWIN32__) , cygwin, msvc diff --git a/preprocessor/DynareMain2.cc b/preprocessor/DynareMain2.cc index f50436f5c..aed6e4e6a 100644 --- a/preprocessor/DynareMain2.cc +++ b/preprocessor/DynareMain2.cc @@ -26,7 +26,7 @@ using namespace std; #include "ConfigFile.hh" void -main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms, bool no_log, bool no_warn, bool warn_uninit, bool console, +main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tmp_terms, bool no_log, bool no_warn, bool warn_uninit, bool console, bool nograph, bool nointeractive, bool parallel, const string ¶llel_config_file, const string &cluster_name, bool parallel_slave_open_mode, bool parallel_test #if defined(_WIN32) || defined(__CYGWIN32__) @@ -58,7 +58,7 @@ main2(stringstream &in, string &basename, bool debug, bool clear_all, bool no_tm mod_file->computingPass(no_tmp_terms); // Write outputs - mod_file->writeOutputFiles(basename, clear_all, no_log, no_warn, console, config_file + mod_file->writeOutputFiles(basename, clear_all, no_log, no_warn, console, nograph, nointeractive, config_file #if defined(_WIN32) || defined(__CYGWIN32__) , cygwin, msvc #endif diff --git a/preprocessor/ModFile.cc b/preprocessor/ModFile.cc index d8a6e2c1e..13a7641f9 100644 --- a/preprocessor/ModFile.cc +++ b/preprocessor/ModFile.cc @@ -455,7 +455,7 @@ ModFile::computingPass(bool no_tmp_terms) } void -ModFile::writeOutputFiles(const string &basename, bool clear_all, bool no_log, bool no_warn, bool console, const ConfigFile &config_file +ModFile::writeOutputFiles(const string &basename, bool clear_all, bool no_log, bool no_warn, bool console, bool nograph, bool nointeractive, const ConfigFile &config_file #if defined(_WIN32) || defined(__CYGWIN32__) , bool cygwin, bool msvc #endif @@ -509,7 +509,12 @@ ModFile::writeOutputFiles(const string &basename, bool clear_all, bool no_log, b if (console) mOutputFile << "options_.console_mode = 1;" << endl << "options_.nodisplay = 1;" << endl; + if (nograph) + mOutputFile << "options_.nograph = 1;" << endl; + if (nointeractive) + mOutputFile << "options_.nointeractive = 1;" << endl; + cout << "Processing outputs ..."; symbol_table.writeOutput(mOutputFile); diff --git a/preprocessor/ModFile.hh b/preprocessor/ModFile.hh index aa7ccc616..28a4a2f43 100644 --- a/preprocessor/ModFile.hh +++ b/preprocessor/ModFile.hh @@ -127,10 +127,12 @@ public: \param basename The base name used for writing output files. Should be the name of the mod file without its extension \param clear_all Should a "clear all" instruction be written to output ? \param console Are we in console mode ? + \param nograph Should we build the figures? + \param nointeractive Should Dynare request user input? \param cygwin Should the MEX command of use_dll be adapted for Cygwin? \param msvc Should the MEX command of use_dll be adapted for MSVC? */ - void writeOutputFiles(const string &basename, bool clear_all, bool no_log, bool no_warn, bool console, const ConfigFile &config_file + void writeOutputFiles(const string &basename, bool clear_all, bool no_log, bool no_warn, bool console, bool nograph, bool nointeractive, const ConfigFile &config_file #if defined(_WIN32) || defined(__CYGWIN32__) , bool cygwin, bool msvc #endif