def set_lib_bin_from_list(
        self,
        name_input,
        name_map,
        category,
        supported,
        fn,
        skip_list=None,
        extra_warning_msg_with_default_choice="",
    ):
        """
        Function to set libraries or commands that are predefined in support lists.
        The support list is formed in format ['auto', default choice, alternative A, alternative B, ...].
        The list can only contain 'auto' and the default choice.
        Arguments:
            name_input: name of the lib/bin that user inputs.
            name_map: a dictionary. {'key': ['alias name', 'package installation command']} Its key is name of the
            lib/bin, its value is a list of string with 2 elements. First string of the list is alias name of the
            lib/bin that is searched in the system. For instance, when key is 'intel' for OpenMP runtime, the function
            will invoke fn (describe below) to search a library file 'libiomp5.so'.
            The fn function passed forms the library file name with its identifier 'iomp5'. Thus, the first string of
            this list for key 'intel' should be 'iomp5'. This value depends on how fn function searches for the lib/bin
            file.
            The second string should be a installation command guides users to install this package. When it is empty,
            the installation guide will not be prompted. category: category of this lib/bin. 'memory allocator',
            'multi-task manager', etc.
            supported: predefined support list
            fn: a function how the lib/bin files will be searched. Return True to indicate a successful searching,
            otherwise return False.
            skip_list: a list containing name of lib/bin that will not be used.
            extra_warning_msg_with_default_choice: a warning message that will be prompted if designated choices
            are not available and fallen back to the default choice.
        """
        if skip_list is None:
            skip_list = []
        name_local = name_input.lower()
        if name_local not in supported:
            name_local = supported[0]
            self.verbose(
                "warning",
                f"Designated {category} '{name_input}' is unknown. Changing it to '{name_local}'."
                + f"Supported {category} are {supported}.",
                warning_type=WarningType.WrongArgument,
            )
        if name_local in skip_list:
            name_local = supported[0]
            self.verbose(
                "warning",
                f"Designated {category} '{name_input}' is not applicable at this moment. Changing it to '{name_local}'."
                + f"Please choose another {category} from {supported}.",
                warning_type=WarningType.WrongArgument,
            )
        if name_local == supported[0]:
            self.verbose("info", f"auto choosing {category}...")
            for name in supported[2:]:
                if name in skip_list:
                    continue
                if fn(name_map[name][0]):
                    self.verbose("info", f"Use '{name_local}' => '{name}' {category}.")
                    name_local = name
                    break
            if name_local == supported[0]:
                name_local = supported[1]
                if len(supported[2:]) > 0:
                    msg = ""
                    if len(supported[2:]) == 1:
                        msg = f"'{supported[2]}' {category} is not found"
                    elif len(supported[2:]) < 3:
                        msg = f"Neither of {supported[2:]} {category} is found"
                    else:
                        msg = f"None of {supported[2:]} {category} is found"
                    self.verbose("info", f"{msg} in {self.library_paths}.")
                if extra_warning_msg_with_default_choice != "":
                    extra_warning_msg_with_default_choice = (
                        f" {extra_warning_msg_with_default_choice}"
                    )
                self.verbose(
                    "info",
                    f"Use '{name_local}' {category}.{extra_warning_msg_with_default_choice}",
                )
        elif name_local in supported[2:]:
            if not fn(name_map[name_local][0]):
                extra_warning_msg_install_guide = ""
                if name_map[name_local][1] != "":
                    extra_warning_msg_install_guide = (
                        f' You can install it with "{name_map[name_local][1]}".'
                    )
                self.verbose(
                    "warning",
                    f"Unable to find the '{name_local}' {category} library file in"
                    + f"{self.library_paths}.{extra_warning_msg_install_guide}",
                    warning_type=WarningType.MissingDependency,
                )
                name_local = supported[1]
                if extra_warning_msg_with_default_choice != "":
                    extra_warning_msg_with_default_choice = (
                        f" {extra_warning_msg_with_default_choice}"
                    )
                self.verbose(
                    "info",
                    f"Use '{name_local}' {category}.{extra_warning_msg_with_default_choice}",
                )
            else:
                self.verbose("info", f"Use '{name_local}' {category}.")
        else:
            self.verbose("info", f"Use '{name_local}' {category}.")
        if fn == self.add_lib_preload:
            for k, v in name_map.items():
                if k == name_local:
                    continue
                for item in self.ld_preload:
                    if item.endswith(f"lib{v[0]}.so"):
                        self.ld_preload.remove(item)
        return name_local

        Function to set libraries or commands that are predefined in support lists.
        The support list is formed in format ['auto', default choice, alternative A, alternative B, ...].
        The list can only contain 'auto' and the default choice.
        Arguments:
            name_input: name of the lib/bin that user inputs.
            name_map: a dictionary. {'key': ['alias name', 'package installation command']} Its key is name of the
            lib/bin, its value is a list of string with 2 elements. First string of the list is alias name of the
            lib/bin that is searched in the system. For instance, when key is 'intel' for OpenMP runtime, the function
            will invoke fn (describe below) to search a library file 'libiomp5.so'.
            The fn function passed forms the library file name with its identifier 'iomp5'. Thus, the first string of
            this list for key 'intel' should be 'iomp5'. This value depends on how fn function searches for the lib/bin
            file.
            The second string should be a installation command guides users to install this package. When it is empty,
            the installation guide will not be prompted. category: category of this lib/bin. 'memory allocator',
            'multi-task manager', etc.
            supported: predefined support list
            fn: a function how the lib/bin files will be searched. Return True to indicate a successful searching,
            otherwise return False.
            skip_list: a list containing name of lib/bin that will not be used.
            extra_warning_msg_with_default_choice: a warning message that will be prompted if designated choices
            are not available and fallen back to the default choice.
        
intel_extension_for_pytorch/cpu/launch/launcher_base.py