def run_suite(case, config, summary):
config["<STR_LIT:name>"] = case<EOL>timing_data = dict()<EOL>model_dir = os.path.join(livvkit.model_dir, config['<STR_LIT>'], case)<EOL>bench_dir = os.path.join(livvkit.bench_dir, config['<STR_LIT>'], case)<EOL>plot_dir = os.path.join(livvkit.output_dir, "<STR_LIT>", "<STR_LIT>")<EOL>model_cases = functions.collect_cases(model_dir)<EOL>bench_cases = functions.collect_cases(bench_dir)<EOL>functions.mkdir_p(plot_dir)<EOL>for subcase in sorted(model_cases):<EOL><INDENT>bench_subcases = bench_cases[subcase] if subcase in bench_cases else []<EOL>timing_data[subcase] = dict()<EOL>for mcase in model_cases[subcase]:<EOL><INDENT>config["<STR_LIT>"] = "<STR_LIT:->".join([subcase, mcase])<EOL>bpath = (os.path.join(bench_dir, subcase, mcase.replace("<STR_LIT:->", os.path.sep))<EOL>if mcase in bench_subcases else None)<EOL>mpath = os.path.join(model_dir, subcase, mcase.replace("<STR_LIT:->", os.path.sep))<EOL>timing_data[subcase][mcase] = _analyze_case(mpath, bpath, config)<EOL><DEDENT><DEDENT>weak_data = weak_scaling(timing_data, config['<STR_LIT>'],<EOL>config['<STR_LIT>'])<EOL>strong_data = strong_scaling(timing_data, config['<STR_LIT>'],<EOL>config['<STR_LIT>'])<EOL>timing_plots = [<EOL>generate_scaling_plot(weak_data,<EOL>"<STR_LIT>" + case.capitalize(),<EOL>"<STR_LIT>", "<STR_LIT>",<EOL>os.path.join(plot_dir, case + "<STR_LIT>")<EOL>),<EOL>weak_scaling_efficiency_plot(weak_data,<EOL>"<STR_LIT>" + case.capitalize(),<EOL>"<STR_LIT>", "<STR_LIT>",<EOL>os.path.join(plot_dir, case + "<STR_LIT>")<EOL>),<EOL>generate_scaling_plot(strong_data,<EOL>"<STR_LIT>" + case.capitalize(),<EOL>"<STR_LIT>", "<STR_LIT>",<EOL>os.path.join(plot_dir, case + "<STR_LIT>")<EOL>),<EOL>strong_scaling_efficiency_plot(strong_data,<EOL>"<STR_LIT>" + case.capitalize(),<EOL>"<STR_LIT>", "<STR_LIT>",<EOL>os.path.join(plot_dir,<EOL>case + "<STR_LIT>")<EOL>),<EOL>]<EOL>timing_plots = timing_plots +[generate_timing_breakdown_plot(timing_data[s],<EOL>config['<STR_LIT>'],<EOL>"<STR_LIT>" + case.capitalize()+"<STR_LIT:U+0020>"+s,<EOL>"<STR_LIT>",<EOL>os.path.join(plot_dir, case+"<STR_LIT:_>"+s+"<STR_LIT>")<EOL>)<EOL>for s in sorted(six.iterkeys(timing_data), key=functions.sort_scale)]<EOL>el = [<EOL>elements.gallery("<STR_LIT>", timing_plots)<EOL>]<EOL>result = elements.page(case, config["<STR_LIT:description>"], element_list=el)<EOL>summary[case] = _summarize_result(timing_data, config)<EOL>_print_result(case, summary)<EOL>functions.create_page_from_template("<STR_LIT>",<EOL>os.path.join(livvkit.index_dir, "<STR_LIT>",<EOL>case + "<STR_LIT>"))<EOL>functions.write_json(result, os.path.join(livvkit.output_dir, "<STR_LIT>"),<EOL>case + "<STR_LIT>")<EOL>
Run the full suite of performance tests