From 09bc0a0aaae21c036d51b562d8d280d61905bc6b Mon Sep 17 00:00:00 2001
From: Marco Ratto <marco.ratto@jrc.ec.europa.eu>
Date: Fri, 5 Apr 2013 17:23:00 +0200
Subject: [PATCH] fixed bug with seeds in hybrid matlab-octave parallel
 clusters

---
 matlab/global_initialization.m                       | 1 +
 matlab/parallel/InitializeComputationalEnvironment.m | 8 ++++++++
 matlab/set_dynare_seed.m                             | 2 +-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m
index e4de0da74e..50cf7dd86e 100644
--- a/matlab/global_initialization.m
+++ b/matlab/global_initialization.m
@@ -392,6 +392,7 @@ options_.mh_autocorrelation_function_size = 30;
 options_.plot_priors = 1;
 options_.cova_compute = 1;
 options_.parallel = 0;
+options_.parallel_info.isHybridMatlabOctave = false;
 options_.parallel_info.leaveSlaveOpen = 0;
 options_.parallel_info.RemoteTmpFolder = '';
 options_.number_of_grid_points_for_kde = 2^9;
diff --git a/matlab/parallel/InitializeComputationalEnvironment.m b/matlab/parallel/InitializeComputationalEnvironment.m
index 151869fad3..f5bc691a95 100644
--- a/matlab/parallel/InitializeComputationalEnvironment.m
+++ b/matlab/parallel/InitializeComputationalEnvironment.m
@@ -45,6 +45,7 @@ end
 
 global options_
 
+isHybridMatlabOctave = false;
 for j=1:length(options_.parallel),
     if isempty(options_.parallel(j).MatlabOctavePath),
         if exist('OCTAVE_VERSION')
@@ -57,6 +58,13 @@ for j=1:length(options_.parallel),
         dynareroot = strrep(which('dynare'),'dynare.m','');
         options_.parallel(j).DynarePath=dynareroot;
     end
+    isHybridMatlabOctave = isHybridMatlabOctave || any(regexpi([options_.parallel(j).MatlabOctavePath], 'octave'));
+end
+isHybridMatlabOctave = isHybridMatlabOctave && ~exist('OCTAVE_VERSION');
+options_.parallel_info.isHybridMatlabOctave = isHybridMatlabOctave;
+if isHybridMatlabOctave,
+    % Reset dynare random generator and seed.
+    set_dynare_seed('default');
 end
 
 
diff --git a/matlab/set_dynare_seed.m b/matlab/set_dynare_seed.m
index 944d11e509..0ebf223aa1 100644
--- a/matlab/set_dynare_seed.m
+++ b/matlab/set_dynare_seed.m
@@ -24,7 +24,7 @@ if ~nargin
     error('set_dynare_seed:: I need at least one input argument!')
 end
 
-matlab_random_streams = ~(exist('OCTAVE_VERSION') || matlab_ver_less_than('7.7'));
+matlab_random_streams = ~(exist('OCTAVE_VERSION') || matlab_ver_less_than('7.7') || options_.parallel_info.isHybridMatlabOctave);
 
 if matlab_random_streams% Use new matlab interface.
     if nargin==1
-- 
GitLab