diff --git a/matlab/prior_posterior_statistics.m b/matlab/prior_posterior_statistics.m index 3c5230aa3..d326db29c 100644 --- a/matlab/prior_posterior_statistics.m +++ b/matlab/prior_posterior_statistics.m @@ -18,6 +18,10 @@ function prior_posterior_statistics(type,Y,gend,data_index,missing_value) % SPECIAL REQUIREMENTS % none +% PARALLEL CONTEXT +% See the comments random_walk_metropolis_hastings.m funtion. + + % Copyright (C) 2005-2010 Dynare Team % % This file is part of Dynare. @@ -142,7 +146,7 @@ end % Store the variable mandatory for local/remote parallel computing. -localVars.typee=type; +localVars.type=type; localVars.run_smoother=run_smoother; localVars.gend=gend; localVars.Y=Y; @@ -158,6 +162,8 @@ localVars.iendo=iendo; if horizon localVars.i_last_obs=i_last_obs; localVars.IdObs=IdObs; + localVars.MAX_nforc1=MAX_nforc1; + localVars.MAX_nforc2=MAX_nforc2; end localVars.exo_nbr=exo_nbr; localVars.maxlag=maxlag; @@ -168,10 +174,6 @@ if naK localVars.MAX_naK=MAX_naK; end localVars.MAX_nruns=MAX_nruns; -if horizon - localVars.MAX_nforc1=MAX_nforc1; - localVars.MAX_nforc2=MAX_nforc2; -end localVars.MAX_momentsno = MAX_momentsno; localVars.ifil=ifil; @@ -191,10 +193,10 @@ end b=0; - - -if isnumeric(options_.parallel),% | isunix, % for the moment exclude unix platform from parallel implementation +% Like sequential execution! +if isnumeric(options_.parallel),% | isunix, % For the moment exclude unix platform from parallel implementation! [fout] = prior_posterior_statistics_core(localVars,1,B,0); +% Parallel execution! else [nCPU, totCPU, nBlockPerCPU] = distributeJobs(options_.parallel, 1, B); for j=1:totCPU-1, @@ -252,7 +254,8 @@ save([DirectoryName '/' M_.fname '_data.mat'],'stock_gend','stock_data'); if ~isnumeric(options_.parallel), leaveSlaveOpen = options_.parallel_info.leaveSlaveOpen; if options_.parallel_info.leaveSlaveOpen == 0, - options_.parallel_info.leaveSlaveOpen = 1; % force locally to leave open remote matlab sessions (repeated pm3 calls) + % Commenting for testing! + % options_.parallel_info.leaveSlaveOpen = 1; % Force locally to leave open remote matlab sessions (repeated pm3 calls) end end diff --git a/matlab/prior_posterior_statistics_core.m b/matlab/prior_posterior_statistics_core.m index d490559bf..89f1222e6 100644 --- a/matlab/prior_posterior_statistics_core.m +++ b/matlab/prior_posterior_statistics_core.m @@ -1,9 +1,28 @@ function myoutput=prior_posterior_statistics_core(myinputs,fpar,B,whoiam, ThisMatlab) - -% Copyright (C) 2005-2010 Dynare Team +% PARALLEL CONTEXT +% Core functionality for prior_posterior.m function, which can be parallelized. +% See also the comment in random_walk_metropolis_hastings_core.m funtion. % +% INPUTS +% See See the comment in random_walk_metropolis_hastings_core.m funtion. + +% OUTPUTS +% o myoutput [struc] +% Contained OutputFileName_smooth; +% _update; +% _inno; +% _error; +% _filter_step_ahead; +% _param; +% _forc_mean; +% _forc_point +% +% ALGORITHM +% Portion of prior_posterior.m function. % This file is part of Dynare. % +% SPECIAL REQUIREMENTS. +% None. % 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 @@ -23,7 +42,14 @@ if nargin<4, whoiam=0; end -typee=myinputs.typee; +global options_ oo_ M_ bayestopt_ estim_params_ + + +% Reshape 'myinputs' for local computation. +% In order to avoid confusion in the name space, the instruction struct2local(myinputs) is replaced by: + +% Da CONTROLLARE con MARCO! +type=myinputs.type; run_smoother=myinputs.run_smoother; gend=myinputs.gend; Y=myinputs.Y; @@ -39,27 +65,31 @@ iendo=myinputs.iendo; if horizon i_last_obs=myinputs.i_last_obs; IdObs=myinputs.IdObs; + MAX_nforc1=myinputs.MAX_nforc1; + MAX_nforc2=myinputs.MAX_nforc2; end +if naK + MAX_naK=myinputs.MAX_naK; +end + exo_nbr=myinputs.exo_nbr; maxlag=myinputs.maxlag; MAX_nsmoo=myinputs.MAX_nsmoo; MAX_ninno=myinputs.MAX_ninno; -MAX_nerro =myinputs. MAX_nerro; -if naK - MAX_naK=myinputs.MAX_naK; -end +MAX_nerro = myinputs.MAX_nerro; MAX_nruns=myinputs.MAX_nruns; -if horizon - MAX_nforc1=myinputs.MAX_nforc1; - MAX_nforc2=myinputs.MAX_nforc2; -end -MAX_momentsno =myinputs. MAX_momentsno; +MAX_momentsno = myinputs.MAX_momentsno; ifil=myinputs.ifil; -if ~strcmpi(typee,'prior'), +if ~strcmpi(type,'prior'), x=myinputs.x; logpost=myinputs.logpost; end +if whoiam + Parallel=myinputs.Parallel; + MasterName=myinputs.MasterName; + DyMo=myinputs.DyMo; +end DirectoryName = CheckPath('metropolis'); @@ -97,12 +127,12 @@ end for b=fpar:B - % [deep, logpo] = GetOneDraw(typee); + % [deep, logpo] = GetOneDraw(type); % set_all_parameters(deep); % dr = resol(oo_.steady_state,0); - if strcmpi(typee,'prior') + if strcmpi(type,'prior') - [deep, logpo] = GetOneDraw(typee); + [deep, logpo] = GetOneDraw(type); else deep = x(b,:); @@ -171,12 +201,6 @@ for b=fpar:B irun = irun + ones(7,1); -% -% TempPath=DirectoryName; -% DirectoryNamePar='C:\dynare_calcs\ModelTest\ls2003\metropolis' -% DirectoryName=DirectoryNamePar; - - if irun(1) > MAX_nsmoo || b == B stock = stock_smooth(:,:,1:irun(1)-1);