diff --git a/matlab/parallel/fParallel.m b/matlab/parallel/fParallel.m index 9bd09d14da39b77d2419981e94b1181d6b3770dd..01dcf28aa9a37730c1adcc772b0588551d737a59 100644 --- a/matlab/parallel/fParallel.m +++ b/matlab/parallel/fParallel.m @@ -84,17 +84,24 @@ try, disp(['fParallel ',int2str(whoiam),' completed.']) catch, - disp(['fParallel ',int2str(whoiam),' crashed.']) - fOutputVar.error = lasterror; - save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' ) - waitbarString = fOutputVar.error.message; - % waitbarTitle=['Metropolis-Hastings ',options_.parallel(ThisMatlab).ComputerName]; - if Parallel(ThisMatlab).Local, - waitbarTitle='Local '; + theerror = lasterror; + if strfind(theerror.message,'Master asked to break the job') + fOutputVar.message = theerror; + save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' ) + waitbarString = theerror.message; else - waitbarTitle=[Parallel(ThisMatlab).ComputerName]; + disp(['fParallel ',int2str(whoiam),' crashed.']) + fOutputVar.error = theerror; + save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' ) + waitbarString = theerror.message; + % waitbarTitle=['Metropolis-Hastings ',options_.parallel(ThisMatlab).ComputerName]; + if Parallel(ThisMatlab).Local, + waitbarTitle='Local '; + else + waitbarTitle=[Parallel(ThisMatlab).ComputerName]; + end + fMessageStatus(NaN,whoiam,waitbarString, waitbarTitle, Parallel(ThisMatlab)); end - fMessageStatus(NaN,whoiam,waitbarString, waitbarTitle, Parallel(ThisMatlab)); end diary off; diff --git a/matlab/parallel/slaveParallel.m b/matlab/parallel/slaveParallel.m index d54b6ac30d2bc3dfe064518a8d2a3c10aade2d84..21042d068918a6eb99ab4b9b40d9c116a63f5d1b 100644 --- a/matlab/parallel/slaveParallel.m +++ b/matlab/parallel/slaveParallel.m @@ -143,19 +143,27 @@ while (etime(clock,t0)<1200 && ~isempty(fslave)) || ~isempty(dir(['stayalive',in disp(['Job ',fname,' on CPU ',int2str(whoiam),' completed.']); t0 =clock; % Re-set waiting time of 20 mins - catch ME - disp(['Job ',fname,' on CPU ',int2str(whoiam),' crashed.']); - fOutputVar.error = ME; - save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' ); - waitbarString = fOutputVar.error.message; - if Parallel(ThisMatlab).Local, - waitbarTitle='Local '; + catch, + theerror = lasterror; + if strfind(theerror.message,'Master asked to break the job') + disp(['Job ',fname,' on CPU ',int2str(whoiam),' broken from master.']); + fOutputVar.message = theerror; + save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' ) + delete(['P_',fname,'_',int2str(whoiam),'End.txt']); else - waitbarTitle=[Parallel(ThisMatlab).ComputerName]; + disp(['Job ',fname,' on CPU ',int2str(whoiam),' crashed.']); + fOutputVar.error = theerror; + save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' ); + waitbarString = fOutputVar.error.message; + if Parallel(ThisMatlab).Local, + waitbarTitle='Local '; + else + waitbarTitle=[Parallel(ThisMatlab).ComputerName]; + end + fMessageStatus(NaN,whoiam,waitbarString, waitbarTitle, Parallel(ThisMatlab)); + delete(['P_',fname,'_',int2str(whoiam),'End.txt']); + break end - fMessageStatus(NaN,whoiam,waitbarString, waitbarTitle, Parallel(ThisMatlab)); - delete(['P_',fname,'_',int2str(whoiam),'End.txt']); - break end end