    def _extract_exec_path(self, dynamic_profiling_strategy=DynamicProfileStrategy.MAX):
        """Extract execution key, i.e. input arguments for the profiler.

        Parameters
        ----------
        dynamic_profiling_strategy: DynamicProfileStrategy, optional
            A dynamic profiling strategy. By default MAX is used, i.e. to profile
            a dynamic range, an upper bound will be used.
        """
        n_dim = self._attrs["inputs"][0]._attrs["shape"][0]
        n_max = max(n_dim._attrs["values"])
        n_min = min(n_dim._attrs["values"])

        h_dim = self._attrs["inputs"][0]._attrs["shape"][1]
        assert isinstance(h_dim, IntImm), "groupnorm requires h_dim to be static"
        w_dim = self._attrs["inputs"][0]._attrs["shape"][2]
        assert isinstance(w_dim, IntImm), "groupnorm requires w_dim to be static"
        c_dim = self._attrs["inputs"][0]._attrs["shape"][3]
        assert isinstance(c_dim, IntImm), "groupnorm requires c_dim to be static"

        # N, H, W, G, C
        shape_values_dict = {
            "N": [n_min, n_max],
            "H": [h_dim.value()],
            "W": [w_dim.value()],
            "G": [self._attrs["num_groups"]],
            "C": [c_dim.value()],
        }

        self._attrs["exec_path"] = OrderedDict()
        if dynamic_profiling_strategy == DynamicProfileStrategy.MAX:
            max_values = {
                name: [max(shape_values)]
                for name, shape_values in shape_values_dict.items()
            }
            exec_item = ExecItem(
                profiling_key=self._gen_exec_key(max_values),
                exec_cond=self._gen_exec_key(shape_values_dict),
                algo="",
            )
            self._attrs["exec_path"][exec_item.profiling_key] = exec_item
        elif dynamic_profiling_strategy == DynamicProfileStrategy.MIN:
            min_values = {
                name: [min(shape_values)]
                for name, shape_values in shape_values_dict.items()
            }
            exec_item = ExecItem(
                profiling_key=self._gen_exec_key(min_values),
                exec_cond=self._gen_exec_key(shape_values_dict),
                algo="",
            )
            self._attrs["exec_path"][exec_item.profiling_key] = exec_item
Extract execution key, i.e. input arguments for the profiler.

Parameters
----------
dynamic_profiling_strategy: DynamicProfileStrategy, optional
A dynamic profiling strategy. By default MAX is used, i.e. to profile
a dynamic range, an upper bound will be used.
python/aitemplate/compiler/ops/groupnorm/groupnorm.py