Commit 8ee867e7 authored by Jan Kiene's avatar Jan Kiene
Browse files

split for wmops and RAM, but not for ROM and wmops_per_op

parent f6e664a6
Loading
Loading
Loading
Loading
+17 −13
Original line number Diff line number Diff line
@@ -201,10 +201,10 @@ JS_FILE_TEMPLATE = """var {var_name} = {{

FILE_DATA = {
    "wmops": {
        "var_name": "Graphs_WMOPS",
        "var_name": "Graphs_WMOPS{}",
        "elem_name": "wmops_worstcase",
        "description": "Worst Case WMOPS",
        "filename": "graphs_wmops_flc_{}.js",
        "filename": "graphs_wmops_flc{}.js",
        "references": {
            "3xEVS": REF_WMOPS_3EVS,
            "6xEVS": REF_WMOPS_6EVS,
@@ -212,28 +212,28 @@ FILE_DATA = {
        },
    },
    "rom": {
        "var_name": "Graphs_ROM",
        "var_name": "Graphs_ROM{}",
        "elem_name": "rom_worstcase",
        "description": "ROM",
        "filename": "graphs_rom_flc_{}.js",
        "filename": "graphs_rom_flc{}.js",
        "references": {
            "requirementRom": 0,
        },
    },
    "ram": {
        "var_name": "Graphs_RAM",
        "var_name": "Graphs_RAM{}",
        "elem_name": "ram_worstcase",
        "description": "Worst Case RAM",
        "filename": "graphs_ram_flc_{}.js",
        "filename": "graphs_ram_flc{}.js",
        "references": {
            "requirementRam": 0,
        },
    },
    "wmops_per_op": {
        "var_name": "Graphs_WMOPS_perOP",
        "var_name": "Graphs_WMOPS_perOP{}",
        "elem_name": "wmops_worstcase_per_op",
        "description": "Worst Case WMOPS per OP",
        "filename": "graphs_wmops_flc_perOP_{}.js",
        "filename": "graphs_wmops_flc_perOP{}.js",
        "references": {},
    },
}
@@ -253,6 +253,10 @@ def main(
    FILE_DATA["ram"]["log_file"] = ram_log

    for x, data in FILE_DATA.items():
        if data["log_file"] is None:
            print(f"Skipping '{x}' because no logfile given")
            continue

        with open(data["log_file"]) as f:
            log_lines = f.readlines()

@@ -284,7 +288,7 @@ def main(
        ticks = ",\n".join(ticks)

        js_string = JS_FILE_TEMPLATE.format(
            var_name=data["var_name"],
            var_name=data["var_name"].format(suffix),
            elem_name=data["elem_name"],
            description=data["description"],
            runs=runs,
@@ -449,10 +453,10 @@ if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Generate Javascript code for the complexity webpage"
    )
    parser.add_argument("wmops_log")
    parser.add_argument("wmops_per_op_log")
    parser.add_argument("rom_log")
    parser.add_argument("ram_log")
    parser.add_argument("--wmops_log", default=None)
    parser.add_argument("--wmops_per_op_log", default=None)
    parser.add_argument("--rom_log", default=None)
    parser.add_argument("--ram_log", default=None)
    parser.add_argument("--wmops_per_op_log_for_comparison", default=None)
    parser.add_argument("--suffix", default="")

+31 −29
Original line number Diff line number Diff line
@@ -96,29 +96,24 @@ fi
./scripts/IvasBuildAndRunChecks.py $mode_arg_script $repo_arg_script -p $config_file --checks COMPLEXITY --create_complexity_tables ${wmopsFilenameFlc} -C $ivas_format $mode_arg -f ${ep} --oc $output_format
ret_val=$?

# TODO: only split wmops and ram files
./ci/complexity_measurements/split_by_levels.py $(ls ${wmopsFilenameFlc}*.csv)

split_suffixes=("rate_sw" "level_1" "level_2" "level_3")

# for wmops and RAM graphs, split by levels
split_suffixes=("_rate_sw" "_level_1" "_level_2" "_level_3")
for suffix in "${split_suffixes[@]}"; do
  echo "$suffix"

  wmopsFilenameFlc_split="${wmopsFilenameFlc}_WMOPS_${suffix}.csv"
  wmopsFilenameFlcLast_split="${wmopsFilenameFlcLast}_WMOPS_${suffix}.csv"
  log_wmops_all_split="${destDir}/wmops/log_wmops_all_${suffix}.txt"
  latest_wmops_split="${wmopsFilenameFlcDir}/latest_WMOPS_${suffix}.csv"

  heapFilenameFlc_split="${wmopsFilenameFlc}_HEAP_${suffix}.csv"
  stackFilenameFlc_split="${wmopsFilenameFlc}_STACK_${suffix}.csv"
  ramFilenameFlc_split="${wmopsFilenameFlc}_RAM_${suffix}.csv"
  ramFilenameFlcLast_split="${wmopsFilenameFlcLast}_RAM_${suffix}.csv"
  log_ram_all_split="${destDir}/wmops/log_ram_all_${suffix}.txt"
  wmopsFilenameFlc_split="${wmopsFilenameFlc}_WMOPS${suffix}.csv"
  wmopsFilenameFlcLast_split="${wmopsFilenameFlcLast}_WMOPS${suffix}.csv"
  log_wmops_all_split="${destDir}/wmops/log_wmops_all${suffix}.txt"
  latest_wmops_split="${wmopsFilenameFlcDir}/latest_WMOPS${suffix}.csv"

  promFilenameFlc_split="${wmopsFilenameFlc}_PROM_${suffix}.csv"
  tromFilenameFlc_split="${wmopsFilenameFlc}_TROM_${suffix}.csv"
  romFilenameFlc_split="${wmopsFilenameFlc}_ROM_${suffix}.csv"
  romFilenameFlcLast_split="${wmopsFilenameFlcLast}_ROM_${suffix}.csv"
  log_rom_all_split="${destDir}/wmops/log_rom_all_${suffix}.txt"
  heapFilenameFlc_split="${wmopsFilenameFlc}_HEAP${suffix}.csv"
  stackFilenameFlc_split="${wmopsFilenameFlc}_STACK${suffix}.csv"
  ramFilenameFlc_split="${wmopsFilenameFlc}_RAM${suffix}.csv"
  ramFilenameFlcLast_split="${wmopsFilenameFlcLast}_RAM${suffix}.csv"
  log_ram_all_split="${destDir}/wmops/log_ram_all${suffix}.txt"

  # get the info on worst-case operating point: WMOPS number, enc-operating mode, dec-operating mode
  ### WMOPS
@@ -132,20 +127,27 @@ for suffix in "${split_suffixes[@]}"; do
  ${scriptDir}/mergeNewsletterRam.py ${heapFilenameFlc_split} ${stackFilenameFlc_split} >${ramFilenameFlc_split}
  ${scriptDir}/parseNewsletterRam.py ${heapFilenameFlc_split} ${stackFilenameFlc_split} ${ramFilenameFlcLast_split} ${commit_sha} ${shortDate} ${fullDate} >>${log_ram_all_split}

  # generate javascript code from split log files
  python3 ci/complexity_measurements/genWebpageData.py --wmops_log ${log_wmops_all_split} --ram_log ${log_ram_all_split} --suffix ${suffix}
done

# for ROM and wmops_per_op graphs, no split is done
promFilenameFlc="${wmopsFilenameFlc}_PROM.csv"
tromFilenameFlc="${wmopsFilenameFlc}_TROM.csv"
romFilenameFlc="${wmopsFilenameFlc}_ROM.csv"
romFilenameFlcLast="${wmopsFilenameFlcLast}_ROM.csv"
log_rom_all="${destDir}/wmops/log_rom_all.txt"

### ROM
  ${scriptDir}/mergeNewsletterRom.py ${promFilenameFlc_split} ${tromFilenameFlc_split} >${romFilenameFlc_split}
  ${scriptDir}/parseNewsletterRom.py ${promFilenameFlc_split} ${tromFilenameFlc_split} ${romFilenameFlcLast_split} ${commit_sha} ${shortDate} ${fullDate} >>${log_rom_all_split}
${scriptDir}/mergeNewsletterRom.py ${promFilenameFlc} ${tromFilenameFlc} >${romFilenameFlc}
${scriptDir}/parseNewsletterRom.py ${promFilenameFlc} ${tromFilenameFlc} ${romFilenameFlcLast} ${commit_sha} ${shortDate} ${fullDate} >>${log_rom_all}

  # generate javascript code from log files
  # pass the ref log for comparison only if arg is given
if [ "$wmops_ref_logfile" != "" ]; then
    python3 ci/complexity_measurements/genWebpageData.py ${log_wmops_all_split} ${wmopsFilenameFlc_split} ${log_rom_all_split} ${log_ram_all_split} --suffix ${suffix} --wmops_per_op_log_for_comparison $wmops_ref_logfile
  python3 ci/complexity_measurements/genWebpageData.py --wmops_per_op_log ${wmopsFilenameFlc_split} --rom_log ${log_rom_all_split} --wmops_per_op_log_for_comparison $wmops_ref_logfile
else
    python3 ci/complexity_measurements/genWebpageData.py ${log_wmops_all_split} ${wmopsFilenameFlc_split} ${log_rom_all_split} ${log_ram_all_split} --suffix ${suffix}
  python3 ci/complexity_measurements/genWebpageData.py --wmops_per_op_log ${wmopsFilenameFlc_split} --rom_log ${log_rom_all_split}
fi

done

python3 ${scriptDir}/check_for_changes.py ${destDir}/wmops/log_wmops_all.txt ${destDir}/wmops/log_ram_all.txt ${destDir}/wmops/log_rom_all.txt
if [ "$?" != "0" ]; then
  ret_val=1