diff --git a/matlab/parallel/GiveCPUnumber.m b/matlab/parallel/GiveCPUnumber.m index 6305a2502e16a6025db16b902e2a4c7b5fd4c5d3..d1d254d46de6ec55ca3e3607429694090250957c 100644 --- a/matlab/parallel/GiveCPUnumber.m +++ b/matlab/parallel/GiveCPUnumber.m @@ -4,12 +4,12 @@ function [nCPU]= GiveCPUnumber (ComputerInformations) % on the computer used for run parallel code. % % INPUTS -% an array contained several fields that describe the hardaware +% an array contained several fields that describe the hardaware % software enviroments of a generic computer. -% +% % OUTPUTS -% The CPUs or Cores numbers of computer. -% +% The CPUs or Cores numbers of computer. +% % SPECIAL REQUIREMENTS % none @@ -31,26 +31,41 @@ function [nCPU]= GiveCPUnumber (ComputerInformations) % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -nCPU=-1; +nCPU=''; -OffSet=27; +Enviroment=-1; -SringPosition=strfind(ComputerInformations, 'Processors:'); -nCPU=ComputerInformations(SringPosition+OffSet); +% Determine a specific operating system or software version when necessary +% for different command (sintax, name, ...). + Enviroment=isunix || (~matlab_ver_less_than('7.4') && ismac); -% We check if there are Processors/Cores more than 9. +switch Enviroment + case 0 %WINDOWS OPERATING SYSTEM + OffSet=27; + SringPosition=strfind(ComputerInformations, 'Processors:'); + nCPU=ComputerInformations(SringPosition+OffSet); -t0=ComputerInformations(SringPosition+OffSet+1); -t1=str2num(t0); -t1=isempty(t1); + % We check if there are Processors/Cores more than 9. -% if t1 is 0 the machine have more than 9 CPU. -if t1==0 - nCPU=strcat(nCPU,t0); -end + t0=ComputerInformations(SringPosition+OffSet+1); + t1=str2num(t0); + t1=isempty(t1); + + % if t1 is 0 the machine have more than 9 CPU. -nCPU=str2num(nCPU); + if t1==0 + nCPU=strcat(nCPU,t0); + end -return + nCPU=str2num(nCPU); + + return + case 1 %LIKE UNIX OPERATING SYSTEM + + % Da generalizzare a un numero di CPu maggiore di 9!!! + + nCPU=str2num(ComputerInformations(length(ComputerInformations)-1))+1; + +end