def aps_summary()

in var/ramble/repos/builtin/modifiers/intel-aps/modifier.py [0:0]


    def aps_summary(self, executable_name, executable, app_inst=None):
        from ramble.util.executable import CommandExecutable

        pre_exec = []
        post_exec = []

        exe_regex = self.expander.expand_var_name("apply_aps_exe_regex")
        applicable = exe_regex and re.match(exe_regex, executable_name)
        if applicable or executable.mpi:
            env_var_name = self.expander.expand_var_name(
                "external_aps_env_var"
            )
            pre_cmds = [
                "export APS_STAT_LEVEL={aps_stat_level}",
                "spack load intel-oneapi-vtune",
                # Clean up previous aps logs to avoid the potential
                # of out-dated reports.
                "rm -rf {aps_log_dir}",
                f"rm -f {{experiment_run_dir}}/{_REPORT_PREFIX}*",
            ]
            if env_var_name:
                pre_cmds.append(f"export {env_var_name}='aps {{aps_flags}}'")
            pre_exec.append(
                CommandExecutable(
                    f"load-aps-{executable_name}",
                    template=pre_cmds,
                )
            )
            post_exec.append(
                CommandExecutable(
                    f"unload-aps-{executable_name}",
                    template=["spack unload intel-oneapi-vtune"],
                )
            )
            post_exec.append(
                CommandExecutable(
                    f"gen-aps-{executable_name}",
                    template=[
                        'echo "APS Results for executable {executable_name}"',
                        # Prints text summary as well as generating an html report
                        "aps-report -D {aps_log_dir}",
                    ],
                    mpi=False,
                    redirect="{log_file}",
                )
            )

            extra_reports = self.expander.expand_var_name("aps_extra_reports")
            if extra_reports:
                predefined_reports = _PREDEFINED_REPORTS[self._usage_mode]
                specs = [item.strip() for item in extra_reports.split(",")]
                stat_level = self.expander.expand_var_name(
                    "aps_stat_level", typed=True
                )
                cmds = set()

                def _add_cmd(report, opts, min_level=0):
                    if stat_level < min_level:
                        logger.warn(
                            f"Report {report} is skipped as APS_STAT_LEVEL"
                            f" {stat_level} is less than {min_level}"
                        )
                    else:
                        report_path = f'"{{experiment_run_dir}}/{_REPORT_PREFIX}{report}.txt"'
                        cmds.add(
                            f"aps-report {opts} {{aps_log_dir}} > {report_path} 2>&1"
                        )

                for spec in specs:
                    if spec.startswith(_CUSTOM_PREFIX):
                        custom = spec[len(_CUSTOM_PREFIX) :]
                        _add_cmd(
                            f"custom_{custom.replace('-', '').replace(' ', '_')}",
                            custom,
                        )
                    elif spec == "all":
                        for report, (
                            opts,
                            min_level,
                        ) in predefined_reports.items():
                            _add_cmd(report, opts, min_level)
                    else:
                        if spec not in predefined_reports:
                            logger.warn(f"Report {spec} is not defined")
                        else:
                            opts, min_level = predefined_reports[spec]
                            _add_cmd(spec, opts, min_level)

                for i, cmd in enumerate(cmds):
                    post_exec.append(
                        CommandExecutable(
                            f"gen-report{i}",
                            template=cmd,
                            mpi=False,
                            output_capture="",
                            redirect="",
                        )
                    )

        return pre_exec, post_exec