Commit 9d704f56 authored by Lauros Pajunen's avatar Lauros Pajunen
Browse files

Add complexity script, add basop and skip_build arguments to script

parent cdfba923
Loading
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -100,6 +100,16 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript):
            help="pass the '-s' argument to the wmc tool to only measure memory",
            action="store_true",
        )
        self.parser.add_argument(
            "--basop",
            help="build the basop version for instrumentation",
            action="store_true",
        )
        self.parser.add_argument(
            "--skip_build",
            help="skip instrumentation and build",
            action="store_true",
        )

    def run(self):

@@ -165,6 +175,8 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript):
                    formats_fname=self.args["format_file"],
                    max_workers=self.args["max_workers"],
                    mem_only=self.args["wmc_tool_mem_only"],
                    basop=self.args["basop"],
                    skip_build=self.args["skip_build"],
                )
            else:
                br.add_check(
+126 −98
Original line number Diff line number Diff line
@@ -227,6 +227,8 @@ class IvasBuilder(IvasBaseClass):
        defines_to_disable=[],
        instrumented=False,
        mem_only=False,
        basop=False,
        skip_build=False,
    ):
        """

@@ -265,6 +267,9 @@ class IvasBuilder(IvasBaseClass):
        build_log = open(build_log_name, "w")
        # build
        if instrumented:
            if skip_build:
                self.logger.console("Skipping instrumentation", logging.INFO)
            else:
                self.logger.console("Instrumenting...", logging.INFO)
                make_dir = os.path.join(self.src_dir, "scripts", "c-code_instrument")
                # remove if it c-code_instrument already exists
@@ -274,7 +279,11 @@ class IvasBuilder(IvasBaseClass):
                    os.path.join(self.src_dir, "scripts", "prepare_instrumentation.sh")
                ]
                if mem_only:
                    instrument_cmd.append("-m")
                    instrument_cmd.append("mem_only")
                if basop:
                    instrument_cmd.append("-p")
                    instrument_cmd.append("basop")
                build_log.write(" ".join(instrument_cmd))
                build_log.write("\n")
                build_result = subprocess.run(
@@ -288,6 +297,9 @@ class IvasBuilder(IvasBaseClass):

        build_log.write("".join(["Build directory: ", make_dir]))
        build_log.write("\n")
        if skip_build:
            self.logger.console("Skipping building", logging.INFO)
        else:
            self.logger.console("Building...", logging.INFO)

            # to be safe remove existing binaries
@@ -644,6 +656,8 @@ class IvasSvnBuilder(IvasBuilder):
        defines_to_disable=[],
        instrumented=False,
        mem_only=False,
        basop=False,
        skip_build=False,
    ):
        """

@@ -673,6 +687,8 @@ class IvasSvnBuilder(IvasBuilder):
            defines_to_disable=defines_to_disable,
            instrumented=instrumented,
            mem_only=mem_only,
            basop=basop,
            skip_build=skip_build,
        )


@@ -781,6 +797,8 @@ class IvasBuilderAndRunner(IvasBaseClass):
        max_workers=1,
        timeout=None,
        mem_only=False,
        basop=False,
        skip_build=False,
    ):
        """

@@ -826,6 +844,8 @@ class IvasBuilderAndRunner(IvasBaseClass):
            self.build_and_run_dict[cfg_name]["instrumented"] = instrumented
            self.build_and_run_dict[cfg_name]["mem_only"] = mem_only
            self.build_and_run_dict[cfg_name]["make_options"] = make_options
            self.build_and_run_dict[cfg_name]["basop"] = basop
            self.build_and_run_dict[cfg_name]["skip_build"] = skip_build
        else:
            self.logger.console("Adding config {}".format(cfg_name), logging.INFO)
            run_dir = os.path.join(self.builder.src_dir, cfg_name)
@@ -871,6 +891,8 @@ class IvasBuilderAndRunner(IvasBaseClass):
                    "mem_only": mem_only,
                    "make_options": make_options,
                    "analyzer": new_analyzer,
                    "basop": basop,
                    "skip_build": skip_build,
                }
            }
            self.build_and_run_dict.update(cfg_dict)
@@ -1054,6 +1076,8 @@ class IvasBuilderAndRunner(IvasBaseClass):
                defines_to_disable=cfg["defines_to_disable"],
                instrumented=cfg["instrumented"],
                mem_only=cfg["mem_only"],
                basop=cfg["basop"],
                skip_build=cfg["skip_build"]
            )
            self.build_and_run_dict[cfg_name]["runner"].encoder = self.builder.encoder
            self.build_and_run_dict[cfg_name]["runner"].decoder = self.builder.decoder
@@ -1255,6 +1279,8 @@ class IvasBuilderAndRunner(IvasBaseClass):
        formats_fname="",
        max_workers=1,
        mem_only=False,
        basop=False,
        skip_build=False,
    ):
        """

@@ -1288,6 +1314,8 @@ class IvasBuilderAndRunner(IvasBaseClass):
            formats_fname=formats_fname,
            max_workers=max_workers,
            mem_only=mem_only,
            basop=basop,
            skip_build=skip_build,
        )

    # TODO: this is used nowhere, is this still needed?
+214 −0
Original line number Diff line number Diff line
#! /usr/bin/bash

# (C) 2022-2024 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
# contributors to this repository. All Rights Reserved.

# This software is protected by copyright law and by international treaties.
# The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
# Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
# Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
# Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
# contributors to this repository retain full ownership rights in their respective contributions in
# the software. This notice grants no license of any kind, including but not limited to patent
# license, nor is any license granted by implication, estoppel or otherwise.

# Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
# contributions.

# This software is provided "AS IS", without any express or implied warranties. The software is in the
# development stage. It is intended exclusively for experts who have experience with such software and
# solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
# and fitness for a particular purpose are hereby disclaimed and excluded.

# Any dispute, controversy or claim arising under or in relation to providing this software shall be
# submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
# accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
# the United Nations Convention on Contracts on the International Sales of Goods.

function usage {
    echo
    echo "Usage:"
    echo "      smoke_test_complexity_basop.sh [--max_cores nMaxCores]"
    echo 
    echo "      nMaxCores - the number of CPUs to use (default 42)"
    exit
}

if [ ! -d "lib_com" ]; then
    echo "not in root directory! - please run in IVAS root"
    exit 1
fi

if [[ -z "$1" ]]; then
    MAX_CORES=42
elif [[ "$1" == "--max_cores" ]]; then
    if [[ -z "$2" ]]; then
        echo "Need maximum number of cores"
        exit 1
    else
        MAX_CORES=$2
    fi
else
    usage
fi

cfg=./scripts/config/ci_linux_ltv.json
ism_md_cmd="--ism_metadata_files /usr/local/ltv/ltvISM1.csv /usr/local/ltv/ltvISM2.csv /usr/local/ltv/ltvISM3.csv /usr/local/ltv/ltvISM4.csv"
duration_arg=""
complexity_cmd="--checks COMPLEXITY --wmc_tool_mem_only --basop --skip_build --create_complexity_tables"
max_num_workers="--max_workers $MAX_CORES"

# prepare combined format test signals
echo "\n======================= 0. preparing combined format test inputs =======================\n\n"
./scripts/prepare_combined_format_inputs.py

# Modes
mono_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^mono)
FOA_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^FOA)
HOA2_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^HOA2)
HOA3_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^HOA3)
PlanarFOA_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^PlanarFOA)
PlanarHOA2_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^PlanarHOA2)
PlanarHOA3_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^PlanarHOA3)
MASA_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^MASA)
MC_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^MC)
stereo_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^stereo)
stereoDmx_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^StereoDmx)
OMASA_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OMASA)
OSBA_ISM1_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OSBA_ISM1)
OSBA_ISM2_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OSBA_ISM2)
OSBA_ISM3_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OSBA_ISM3)
OSBA_ISM4_modes=$(./scripts/IvasBuildAndRunChecks.py -l  | grep ^OSBA_ISM4)
ISM1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM1)
ISM2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM2)
ISM3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM3)
ISM4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM4)
ISM_plus1_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+1)
ISM_plus2_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+2)
ISM_plus3_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+3)
ISM_plus4_modes=$(./scripts/IvasBuildAndRunChecks.py -l | grep ^ISM+4)


echo "\n======================= 1. Mono =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_mono_no_fec -m $mono_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_mono.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 2. FOA =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_FOA_no_fec -m $FOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_FOA.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 3. HOA2 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_HOA2_no_fec -m $HOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 4. HOA3 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_HOA3_no_fec -m $HOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_HOA3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 5. PlanarFOA =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_PlanarFOA_no_fec -m $PlanarFOA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarFOA.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 6. PlanarHOA2 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_PlanarHOA2_no_fec -m $PlanarHOA2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 7. PlanarHOA3 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_PlanarHOA3_no_fec -m $PlanarHOA3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_PlanarHOA3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 8. MASA =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_MASA_no_fec -m $MASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MASA.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 9. MC =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_MC_no_fec -m $MC_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_MC.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 10. stereo =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_stereo_no_fec -m $stereo_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereo.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 11. stereoDmx =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_stereoDmx_no_fec -m $stereoDmx_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_stereoDmx.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 12. OMASA =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OMASA_no_fec -m $OMASA_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OMASA.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 13. OSBA ISM1 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM1_no_fec -m $OSBA_ISM1_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM1.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 14. OSBA ISM2 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM2_no_fec -m $OSBA_ISM2_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 15. OSBA ISM3 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM3_no_fec -m $OSBA_ISM3_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 16. OSBA ISM4 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_OSBA_ISM4_no_fec -m $OSBA_ISM4_modes -p $cfg $duration_arg $max_num_workers | tee smoke_test_output_OSBA_ISM4.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 15. ISM1 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM1_no_fec -m $ISM1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM1.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 16. ISM2 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM2_no_fec -m $ISM2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 17. ISM3 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM3_no_fec -m $ISM3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 18. ISM4 =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM4_no_fec -m $ISM4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM4.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 19. ISM1 + extended metadata =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus1_no_fec -m $ISM_plus1_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus1.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 20. ISM2 + extended metadata =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus2_no_fec -m $ISM_plus2_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus2.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 21. ISM3 + extended metadata =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus3_no_fec -m $ISM_plus3_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus3.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/
echo "\n======================= 22. ISM4 + extended metadata =======================\n\n"
./scripts/IvasBuildAndRunChecks.py $complexity_cmd ltv_complexity_ISM_plus4_no_fec -m $ISM_plus4_modes -p $cfg $duration_arg $ism_md_cmd $max_num_workers | tee smoke_test_output_ISM_plus4.txt
rm -r ./COMPLEXITY/dec/
rm -r ./COMPLEXITY/enc/
rm -r ./COMPLEXITY/pcm/