diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index 097cd3f..5bc53bb 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -1,52 +1,56 @@ add_custom_target(scripts_incl SOURCES FindSpecMiCP.cmake reactmicp.qsub pgo_sequence.sh specmicp.pc.in reactmicp.pc.in analyser/reactmicp_unsaturated_analyse.sh analyser/analyse_unsaturated_hdf5.py ) # the cmake find module # --------------------- install(FILES FindSpecMiCP.cmake DESTINATION ${SHARE_INSTALL_DIR}/cmake ) # openPBS submission file file(COPY reactmicp.qsub DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) install(FILES reactmicp.qsub DESTINATION ${SHARE_INSTALL_DIR} ) # Profile guided optimization file(COPY pgo_sequence.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) # pkg-config files configure_file(specmicp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/specmicp.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/specmicp.pc DESTINATION ${LIBRARY_INSTALL_DIR}/pkgconfig ) configure_file(reactmicp.pc.in ${CMAKE_CURRENT_BINARY_DIR}/reactmicp.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/reactmicp.pc DESTINATION ${LIBRARY_INSTALL_DIR}/pkgconfig ) # analyser file(COPY analyser/reactmicp_unsaturated_analyse.sh analyser/analyse_unsaturated_hdf5.py + analyser/short_iter.sh + analyser/short_iter.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/analyser ) install(FILES analyser/reactmicp_unsaturated_analyse.sh analyser/analyse_unsaturated_hdf5.py + analyser/short_iter.sh + analyser/short_iter.py DESTINATION ${SHARE_INSTALL_DIR}/analyser ) diff --git a/scripts/analyser/short_iter.py b/scripts/analyser/short_iter.py index 82268a8..0f5583b 100644 --- a/scripts/analyser/short_iter.py +++ b/scripts/analyser/short_iter.py @@ -1,75 +1,92 @@ import pandas import numpy as np def analyse_file(iter_file, out_file): df = open_file(iter_file) with open(out_file, 'w') as out_file: out_file.write("\n") analyse_timestep(df, out_file) analyse_iter(df, out_file) + analyse_return_code(df, out_file) analyse_cpu_time(df, out_file) analyse_cpu_transport_time(df, out_file) analyse_cpu_chemistry_time(df, out_file) out_file.write("\n") def open_file(iter_file): df = pandas.read_csv(iter_file, header=1, sep="\t\s*", skiprows=8, skipfooter=14, skip_blank_lines=False, usecols=range(1,11), index_col=False) return df def basic_print(serie, out_file): out_file.write("mean : {0:.4f}\n".format(serie.mean())) out_file.write("std : {0:.4f}\n".format(serie.std())) out_file.write("median : {0:.4f}\n".format(serie.median())) out_file.write("min : {0:.4f}\n".format(serie.min())) out_file.write("max : {0:.4f}\n".format(serie.max())) def analyse_iter(df, out_file): try: c_iter = df["Iterations"] except KeyError: c_iter = df["Iterations "] # ... format ... out_file.write("\nIterations\n=========\n") basic_print(c_iter, out_file) hist_n, hist_range = np.histogram(c_iter) out_file.write("\nHistogram : \n") for i, n in enumerate(hist_n): out_file.write("{0}\t{1}\n".format(hist_range[i], n)) out_file.write("{0}\t{1}\n".format(hist_range[-1], 0)) def analyse_timestep(df, out_file): - t_time = df["dt"] + dt_time = df["dt"] - out_file.write("Nb timesteps : {0}\n".format(t_time.count())) + out_file.write("Nb timesteps : {0}\n".format(dt_time.count())) + + t_time = df["T"] + ret_code = df["Return_code"] + + out_file.write("Last timestep : {0} with retcode {1}\n".format(t_time[t_time.last_valid_index()],ret_code[ret_code.last_valid_index()])) out_file.write("\nTimestep\n=========\n") - basic_print(t_time, out_file) + basic_print(dt_time, out_file) + +def analyse_return_code(df, out_file): + ret_code = df["Return_code"] + + out_file.write("\nReturn codes\n=========\n") + + hist_n, hist_range = np.histogram(ret_code, bins=[-3,-2,-1,0,1,2,3,4,5]) + for i, n in enumerate(hist_n): + out_file.write("{0}\t{1}\n".format(hist_range[i], n)) + out_file.write("{0}\t{1}\n".format(hist_range[-1], 0)) + def analyse_cpu_time(df, out_file): t_time = df["Time"] out_file.write("\nIteration CPU Time\n=========\n") basic_print(t_time, out_file) def analyse_cpu_transport_time(df, out_file): t_time = df["Transport_time"] out_file.write("\nIteration CPU Transport Time\n=========\n") basic_print(t_time, out_file) def analyse_cpu_chemistry_time(df, out_file): t_time = df["Chemistry_time"] out_file.write("\nIteration CPU Chemistry Time\n=========\n") basic_print(t_time, out_file) if __name__ == "__main__": import sys analyse_file(sys.argv[1], sys.argv[2]) - \ No newline at end of file +