Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • stepan-a/benchmark-pfm
1 result
Show changes
Commits on Source (4)
......@@ -50,20 +50,20 @@ rho = 0.8000;
effstar = 1.0000;
sigma2 = 0;
@#if !BLOCKS && !BYTECODE && !USE_DLL
model;
@#elseif BLOCKS && !BYTECODE && !USE_DLL
model(block, cutoff=@{CUTOFF_VALUE}, mfs=@{MFS_VALUE});
@#elseif !BLOCKS && BYTECODE
model(bytecode);
@#elseif BLOCKS && BYTECODE
model(block, bytecode, cutoff=@{CUTOFF_VALUE}, mfs=@{MFS_VALUE});
@#elseif !BLOCKS && USE_DLL
model(use_dll);
@#else
model(block, use_dll, cutoff=@{CUTOFF_VALUE}, mfs=@{MFS_VALUE});
@#if BLOCKS
model_options(block, cutoff=@{CUTOFF_VALUE}, mfs=@{MFS_VALUE});
@#endif
@#if USE_DLL
model_options(use_dll);
@#endif
@#if BYTECODE
model_options(bytecode);
@#endif
model;
// Eq. n°1:
efficiency = rho*efficiency(-1) + EfficiencyInnovation;
......
......@@ -53,12 +53,18 @@ run_simulations(MODEL, stack_solve_algo, static_solve_algo, niter, ccrit);
texname = sprintf('%s-%s', MODEL, lower(regexprep(char(java.net.InetAddress.getLocalHost.getHostName),'.local\>',''))); % TODO: Check if we need a trap for Octave.
write_table_short(sprintf('simulations-%s.mat', MODEL), texname, nopng)
write_table_short(sprintf('simulations-%s.mat', MODEL), texname, nopng, stack_solve_algo)
% Delete files and subfolders
delete(sprintf('%s.log', MODEL))
rmdir(sprintf('%s', MODEL), 's')
rmdir(sprintf('+%s', MODEL), 's')
try % Do not fail if directories have already been removed (e.g. when only regenerating the tables)
rmdir(sprintf('%s', MODEL), 's')
catch
end
try
rmdir(sprintf('+%s', MODEL), 's')
catch
end
% Move generated table in the current folder
p = strrep(which('run_all_simulations'), sprintf('matlab%srun_all_simulations.m', filesep), sprintf('tables%s', filesep));
......
......@@ -19,6 +19,10 @@ function run_simulations(model, stack_solve_algo, static_solve_algo, niter, ccri
global oo_
dynare_config;
tmp = strsplit(dynare_version, {'.','-'});
dynare_version_major = str2num(tmp{1});
if niter==0
error('Fourth argument (number of iterations) cannot be equal to zero.')
end
......@@ -62,7 +66,13 @@ end
%
% Matlab
%
for algo = [0, 1]
for algo = stack_solve_algo
if ismember(algo, [4 5]) || (ismember(algo, [2 3]) && dynare_version_major <= 6)
% These algorithms are not available
Timings.MATLAB_preprocessing(id(stack_solve_algo==algo), 1) = -10;
Timings.MATLAB_computing(id(stack_solve_algo==algo), 1) = -10;
continue
end
if algo<7
if isnan(Timings.MATLAB_computing(id(stack_solve_algo==algo), 1))
% Try to simulate the model if this configuration has not been tried before (with or without success).
......@@ -111,15 +121,16 @@ for algo = [0, 1]
end
end
end
for algo = [2, 3, 4, 5]
% These algorithms are not available
Timings.MATLAB_preprocessing(id(stack_solve_algo==algo), 1) = -10;
Timings.MATLAB_computing(id(stack_solve_algo==algo), 1) = -10;
end
%
% use_dll
%
for algo = [0, 1]
for algo = stack_solve_algo
if ismember(algo, [4 5]) || (ismember(algo, [2 3]) && dynare_version_major <= 6)
% These algorithms are not available
Timings.USE_DLL_preprocessing(id(stack_solve_algo==algo), 1) = -10;
Timings.USE_DLL_computing(id(stack_solve_algo==algo), 1) = -10;
continue
end
if algo<7
try
if isnan(Timings.USE_DLL_computing(id(stack_solve_algo==algo), 1))
......@@ -166,15 +177,10 @@ for algo = [0, 1]
end
end
end
for algo = [2, 3, 4, 5]
% These algorithms are not available
Timings.USE_DLL_preprocessing(id(stack_solve_algo==algo), 1) = -10;
Timings.USE_DLL_computing(id(stack_solve_algo==algo), 1) = -10;
end
%
% Bytecode
%
for algo = [0, 1, 2, 3, 4, 5]
for algo = stack_solve_algo
try
if isnan(Timings.BYTECODE_computing(id(stack_solve_algo==algo), 1))
disp_title(sprintf('| BYTECODE (solve_algo=%u, no blocks, model=%s) |', algo, model));
......@@ -200,7 +206,13 @@ end
% Matlab with blocks
%
for mfs = 0:3
for algo = [0, 1, 2, 3, 4]
for algo = stack_solve_algo
if algo == 5
% Algorithm not available
Timings.MATLAB_WITH_BLOCKS_preprocessing(id(stack_solve_algo==algo), mfs+1) = -10;
Timings.MATLAB_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1) = -10;
continue
end
if isnan(Timings.MATLAB_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1))
try
disp_title(sprintf('| MATLAB (solve_algo=%u, with blocks, mfs=%u, model=%s) |', algo, mfs, model));
......@@ -227,7 +239,13 @@ end
% USE_DLL with blocks
%
for mfs = 0:3
for algo = [0, 1, 2, 3, 4]
for algo = stack_solve_algo
if algo == 5
% Algorithm not available
Timings.USE_DLL_WITH_BLOCKS_preprocessing(id(stack_solve_algo==algo), mfs+1) = -10;
Timings.USE_DLL_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1) = -10;
continue
end
if isnan(Timings.USE_DLL_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1))
try
disp_title(sprintf('| USE_DLL (solve_algo=%u, with blocks, mfs=%u, model=%s) |', algo, mfs, model));
......@@ -256,7 +274,7 @@ end
% Bytecode with blocks
%
for mfs = 0:3
for algo = [0, 1, 2, 3, 4, 5]
for algo = stack_solve_algo
if isnan(Timings.BYTECODE_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1))
try
disp_title(sprintf('| BYTECODE (solve_algo=%u, with blocks, mfs=%u, model=%s) |', algo, mfs, model));
......
function write_table_short(datafile, texfilename, nopng)
function write_table_short(datafile, texfilename, nopng, stack_solve_algo)
% Produce a table of results with LaTex compiled as a pdf file and converted to a png file.
%
......@@ -15,12 +15,9 @@ if nargin<3
nopng = true;
end
stack_solve_algo = [0, 1, 2, 3, 4, 5];
id = 1:length(stack_solve_algo);
cfolder = pwd;
load(datafile);
D = load(datafile); % Must be in a local variable since we have a nested function below
[folder,~, ~] = fileparts(mfilename('fullpath'));
idf = strfind(folder, filesep());
......@@ -29,112 +26,66 @@ fid = fopen(sprintf('%stables/template-short.tex', rootfolder),'r');
T = fread(fid, '*char')';
fclose(fid);
function replace_template_field(field_name, value)
if ~isnan(value)
switch value
case -1
T = strrep(T, field_name, 'crash'); % code crash
case -2
T = strrep(T, field_name, 'FAIL'); % algorithm did not converge
case -3
T = strrep(T, field_name, 'CRASH'); % matlab crash
case -10
T = strrep(T, field_name, 'NA'); % not available
otherwise
T = strrep(T, field_name, int2str(value));
end
end
end
%
% Matlab
%
for algo = [0, 1]
if ~isnan(MATLAB_computing(id(stack_solve_algo==algo), 1))
switch MATLAB_computing(id(stack_solve_algo==algo), 1)
case -1
T = strrep(T, sprintf('{a%u_mat}', algo), 'crash'); % code crash
case -2
T = strrep(T, sprintf('{a%u_mat}', algo), 'FAIL'); % algorithm did not converge
case -3
T = strrep(T, sprintf('{a%u_mat}', algo), 'CRASH'); % matlab crash
otherwise
T = strrep(T, sprintf('{a%u_mat}', algo), int2str(MATLAB_computing(id(stack_solve_algo==algo), 1)));
end
end
for algo = stack_solve_algo
replace_template_field(sprintf('{a%u_mat}', algo), D.MATLAB_computing(find(stack_solve_algo==algo), 1));
end
%
% use_dll
%
for algo = [0, 1]
if ~isnan(USE_DLL_computing(id(stack_solve_algo==algo), 1))
switch USE_DLL_computing(id(stack_solve_algo==algo), 1)
case -1
T = strrep(T, sprintf('{a%u_dll}', algo), 'crash');
case -2
T = strrep(T, sprintf('{a%u_dll}', algo), 'FAIL');
case -3
T = strrep(T, sprintf('{a%u_dll}', algo), 'CRASH');
otherwise
T = strrep(T, sprintf('{a%u_dll}', algo), int2str(USE_DLL_computing(id(stack_solve_algo==algo), 1)));
end
end
for algo = stack_solve_algo
replace_template_field(sprintf('{a%u_dll}', algo), D.USE_DLL_computing(find(stack_solve_algo==algo), 1));
end
%
% Bytecode
%
for algo = [0, 1, 2, 3, 4, 5]
if ~isnan(BYTECODE_computing(id(stack_solve_algo==algo), 1))
switch BYTECODE_computing(id(stack_solve_algo==algo), 1)
case -1
T = strrep(T, sprintf('{a%u_byt}', algo), 'crash');
case -2
T = strrep(T, sprintf('{a%u_byt}', algo), 'FAIL');
case -3
T = strrep(T, sprintf('{a%u_byt}', algo), 'CRASH');
otherwise
T = strrep(T, sprintf('{a%u_byt}', algo), int2str(BYTECODE_computing(id(stack_solve_algo==algo), 1)));
end
end
for algo = stack_solve_algo
replace_template_field(sprintf('{a%u_byt}', algo), D.BYTECODE_computing(find(stack_solve_algo==algo), 1));
end
%
% Matlab with blocks
%
for mfs = 0:3
for algo = [0, 1, 2, 3, 4]
if ~isnan(MATLAB_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1))
switch MATLAB_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1)
case -1
T = strrep(T, sprintf('{a%u_mat_blk_%u}', algo, mfs), 'crash');
case -2
T = strrep(T, sprintf('{a%u_mat_blk_%u}', algo, mfs), 'FAIL');
case -3
T = strrep(T, sprintf('{a%u_mat_blk_%u}', algo, mfs), 'CRASH');
otherwise
T = strrep(T, sprintf('{a%u_mat_blk_%u}', algo, mfs), int2str(MATLAB_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1)));
end
end
for algo = stack_solve_algo
replace_template_field(sprintf('{a%u_mat_blk_%u}', algo, mfs), ...
D.MATLAB_WITH_BLOCKS_computing(find(stack_solve_algo==algo), mfs+1));
end
end
%
% USE_DLL with blocks
%
for mfs = 0:3
for algo = [0, 1, 2, 3, 4]
if ~isnan(USE_DLL_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1))
switch USE_DLL_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1)
case -1
T = strrep(T, sprintf('{a%u_dll_blk_%u}', algo, mfs), 'crash');
case -2
T = strrep(T, sprintf('{a%u_dll_blk_%u}', algo, mfs), 'FAIL');
case -3
T = strrep(T, sprintf('{a%u_dll_blk_%u}', algo, mfs), 'CRASH');
otherwise
T = strrep(T, sprintf('{a%u_dll_blk_%u}', algo, mfs), int2str(USE_DLL_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1)));
end
end
for algo = stack_solve_algo
replace_template_field(sprintf('{a%u_dll_blk_%u}', algo, mfs), ...
D.USE_DLL_WITH_BLOCKS_computing(find(stack_solve_algo==algo), mfs+1));
end
end
%
% Bytecode with blocks
%
for mfs = 0:3
for algo = [0, 1, 2, 3, 4, 5]
if ~isnan(BYTECODE_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1))
switch BYTECODE_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1)
case -1
T = strrep(T, sprintf('{a%u_byt_blk_%u}', algo, mfs), 'crash');
case -2
T = strrep(T, sprintf('{a%u_byt_blk_%u}', algo, mfs), 'FAIL');
case -3
T = strrep(T, sprintf('{a%u_byt_blk_%u}', algo, mfs), 'CRASH');
otherwise
T = strrep(T, sprintf('{a%u_byt_blk_%u}', algo, mfs), int2str(BYTECODE_WITH_BLOCKS_computing(id(stack_solve_algo==algo), mfs+1)));
end
end
for algo = stack_solve_algo
replace_template_field(sprintf('{a%u_byt_blk_%u}', algo, mfs), ...
D.BYTECODE_WITH_BLOCKS_computing(find(stack_solve_algo==algo), mfs+1));
end
end
......@@ -166,3 +117,5 @@ cd(sprintf('%stables', rootfolder));
system(sprintf('rm %s.log', texfilename));
system(sprintf('rm %s.aux', texfilename));
cd(cfolder);
end
......@@ -11,10 +11,10 @@
\cline{2-16}
\texttt{0} & {a0_mat} & {a0_dll} & {a0_byt} & {a0_mat_blk_0} & {a0_mat_blk_1} & {a0_mat_blk_2} & {a0_mat_blk_3} & {a0_dll_blk_0} & {a0_dll_blk_1} & {a0_dll_blk_2} & {a0_dll_blk_3} & {a0_byt_blk_0} & {a0_byt_blk_1} & {a0_byt_blk_2} & {a0_byt_blk_3} \\
\texttt{1} & {a1_mat} & {a1_dll} & {a1_byt} & {a1_mat_blk_0} & {a1_mat_blk_1} & {a1_mat_blk_2} & {a1_mat_blk_3} & {a1_dll_blk_0} & {a1_dll_blk_1} & {a1_dll_blk_2} & {a1_dll_blk_3} & {a1_byt_blk_0} & {a1_byt_blk_1} & {a1_byt_blk_2} & {a1_byt_blk_3} \\
\texttt{2} & NA & NA & {a2_byt} & {a2_mat_blk_0} & {a2_mat_blk_1} & {a2_mat_blk_2} & {a2_mat_blk_3} & {a2_dll_blk_0} & {a2_dll_blk_1} & {a2_dll_blk_2} & {a2_dll_blk_3} & {a2_byt_blk_0} & {a2_byt_blk_1} & {a2_byt_blk_2} & {a2_byt_blk_3} \\
\texttt{3} & NA & NA & {a3_byt} & {a3_mat_blk_0} & {a3_mat_blk_1} & {a3_mat_blk_2} & {a3_mat_blk_3} & {a3_dll_blk_0} & {a3_dll_blk_1} & {a3_dll_blk_2} & {a3_dll_blk_3} & {a3_byt_blk_0} & {a3_byt_blk_1} & {a3_byt_blk_2} & {a3_byt_blk_3} \\
\texttt{4} & NA & NA & {a4_byt} & {a4_mat_blk_0} & {a4_mat_blk_1} & {a4_mat_blk_2} & {a4_mat_blk_3} & {a4_dll_blk_0} & {a4_dll_blk_1} & {a4_dll_blk_2} & {a4_dll_blk_3} & {a4_byt_blk_0} & {a4_byt_blk_1} & {a4_byt_blk_2} & {a4_byt_blk_3} \\
\texttt{5} & NA & NA & {a5_byt} & NA & NA & NA & NA & NA & NA & NA & NA & {a5_byt_blk_0} & {a5_byt_blk_1} & {a5_byt_blk_2} & {a5_byt_blk_3}\\
\texttt{2} & {a2_mat} & {a2_dll} & {a2_byt} & {a2_mat_blk_0} & {a2_mat_blk_1} & {a2_mat_blk_2} & {a2_mat_blk_3} & {a2_dll_blk_0} & {a2_dll_blk_1} & {a2_dll_blk_2} & {a2_dll_blk_3} & {a2_byt_blk_0} & {a2_byt_blk_1} & {a2_byt_blk_2} & {a2_byt_blk_3} \\
\texttt{3} & {a3_mat} & {a3_dll} & {a3_byt} & {a3_mat_blk_0} & {a3_mat_blk_1} & {a3_mat_blk_2} & {a3_mat_blk_3} & {a3_dll_blk_0} & {a3_dll_blk_1} & {a3_dll_blk_2} & {a3_dll_blk_3} & {a3_byt_blk_0} & {a3_byt_blk_1} & {a3_byt_blk_2} & {a3_byt_blk_3} \\
\texttt{4} & {a4_mat} & {a4_dll} & {a4_byt} & {a4_mat_blk_0} & {a4_mat_blk_1} & {a4_mat_blk_2} & {a4_mat_blk_3} & {a4_dll_blk_0} & {a4_dll_blk_1} & {a4_dll_blk_2} & {a4_dll_blk_3} & {a4_byt_blk_0} & {a4_byt_blk_1} & {a4_byt_blk_2} & {a4_byt_blk_3} \\
\texttt{5} & {a5_mat} & {a5_dll} & {a5_byt} & {a5_mat_blk_0} & {a5_mat_blk_1} & {a5_mat_blk_2} & {a5_mat_blk_3} & {a5_dll_blk_0} & {a5_dll_blk_1} & {a5_dll_blk_2} & {a5_dll_blk_3} & {a5_byt_blk_0} & {a5_byt_blk_1} & {a5_byt_blk_2} & {a5_byt_blk_3} \\
\hline
\end{tabular}
......
......@@ -11,10 +11,10 @@
\cline{2-16}
\texttt{0} & {a0_mat} & {a0_dll} & {a0_byt} & {a0_mat_blk_0} & {a0_mat_blk_1} & {a0_mat_blk_2} & {a0_mat_blk_3} & {a0_dll_blk_0} & {a0_dll_blk_1} & {a0_dll_blk_2} & {a0_dll_blk_3} & {a0_byt_blk_0} & {a0_byt_blk_1} & {a0_byt_blk_2} & {a0_byt_blk_3} \\
\texttt{1} & {a1_mat} & {a1_dll} & {a1_byt} & {a1_mat_blk_0} & {a1_mat_blk_1} & {a1_mat_blk_2} & {a1_mat_blk_3} & {a1_dll_blk_0} & {a1_dll_blk_1} & {a1_dll_blk_2} & {a1_dll_blk_3} & {a1_byt_blk_0} & {a1_byt_blk_1} & {a1_byt_blk_2} & {a1_byt_blk_3} \\
\texttt{2} & NA & NA & {a2_byt} & {a2_mat_blk_0} & {a2_mat_blk_1} & {a2_mat_blk_2} & {a2_mat_blk_3} & {a2_dll_blk_0} & {a2_dll_blk_1} & {a2_dll_blk_2} & {a2_dll_blk_3} & {a2_byt_blk_0} & {a2_byt_blk_1} & {a2_byt_blk_2} & {a2_byt_blk_3} \\
\texttt{3} & NA & NA & {a3_byt} & {a3_mat_blk_0} & {a3_mat_blk_1} & {a3_mat_blk_2} & {a3_mat_blk_3} & {a3_dll_blk_0} & {a3_dll_blk_1} & {a3_dll_blk_2} & {a3_dll_blk_3} & {a3_byt_blk_0} & {a3_byt_blk_1} & {a3_byt_blk_2} & {a3_byt_blk_3} \\
\texttt{4} & NA & NA & {a4_byt} & {a4_mat_blk_0} & {a4_mat_blk_1} & {a4_mat_blk_2} & {a4_mat_blk_3} & {a4_dll_blk_0} & {a4_dll_blk_1} & {a4_dll_blk_2} & {a4_dll_blk_3} & {a4_byt_blk_0} & {a4_byt_blk_1} & {a4_byt_blk_2} & {a4_byt_blk_3} \\
\texttt{5} & NA & NA & {a5_byt} & NA & NA & NA & NA & NA & NA & NA & NA & {a5_byt_blk_0} & {a5_byt_blk_1} & {a5_byt_blk_2} & {a5_byt_blk_3}\\
\texttt{2} & {a2_mat} & {a2_dll} & {a2_byt} & {a2_mat_blk_0} & {a2_mat_blk_1} & {a2_mat_blk_2} & {a2_mat_blk_3} & {a2_dll_blk_0} & {a2_dll_blk_1} & {a2_dll_blk_2} & {a2_dll_blk_3} & {a2_byt_blk_0} & {a2_byt_blk_1} & {a2_byt_blk_2} & {a2_byt_blk_3} \\
\texttt{3} & {a3_mat} & {a3_dll} & {a3_byt} & {a3_mat_blk_0} & {a3_mat_blk_1} & {a3_mat_blk_2} & {a3_mat_blk_3} & {a3_dll_blk_0} & {a3_dll_blk_1} & {a3_dll_blk_2} & {a3_dll_blk_3} & {a3_byt_blk_0} & {a3_byt_blk_1} & {a3_byt_blk_2} & {a3_byt_blk_3} \\
\texttt{4} & {a4_mat} & {a4_dll} & {a4_byt} & {a4_mat_blk_0} & {a4_mat_blk_1} & {a4_mat_blk_2} & {a4_mat_blk_3} & {a4_dll_blk_0} & {a4_dll_blk_1} & {a4_dll_blk_2} & {a4_dll_blk_3} & {a4_byt_blk_0} & {a4_byt_blk_1} & {a4_byt_blk_2} & {a4_byt_blk_3} \\
\texttt{5} & {a5_mat} & {a5_dll} & {a5_byt} & {a5_mat_blk_0} & {a5_mat_blk_1} & {a5_mat_blk_2} & {a5_mat_blk_3} & {a5_dll_blk_0} & {a5_dll_blk_1} & {a5_dll_blk_2} & {a5_dll_blk_3} & {a5_byt_blk_0} & {a5_byt_blk_1} & {a5_byt_blk_2} & {a5_byt_blk_3} \\
\texttt{7(0)} & {a7_0_mat} & {a7_0_dll} & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA\\
\texttt{7(1)} & {a7_1_mat} & {a7_1_dll} & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA & NA\\
......