def parse_cmd_arguments():
    """a function to parse command-line arguments

    Parameters
    ----------
    None

    Returns
    -------
    None
    """
    arg_parser = argparse.ArgumentParser(
        description="update entries in the profiling database",
        usage="""
Examples:
  * insert an sm75 entry for the given op_type and op_keys from an existing sm80 entry:
    --gen_one_75_entry_from_80 --db=cuda.db --op_type=gemm_crc_bias --op_keys="4x5x6", or
    --gen_one_75_entry_from_80 --db=cuda.db --op_type=bmm_crc --op_keys="3x4x5x6"
    --gen_one_75_entry_from_80 --db=cuda.db --op_type=group_gemm_crc --op_keys="1x2x3;4x5x6"
  * query an sm75 entry for the given op_type and op_keys:
    --query_device=75 --db=cuda.db --op_type=gemm_crc_bias --op_keys="4x5x6"
  * query entries for all devices for the given op_type and op_keys:
    --query_all_devices --db=cuda.db --op_type=gemm_crc_bias --op_keys="4x5x6"
  * query missing sm75 entries for all op_type:
    --db=cuda.db --op_type="all" --query_missing_75_entries_from_80
  * generate missing sm75 entries for gemm_crc_bias:
    --db=cuda.db --op_type="gemm_crc_bias" --gen_75_entries_from_80
""",
    )

    arg_parser.add_argument("--db", required=True, help="specify the data base")
    arg_parser.add_argument(
        "--table", default="cuda_gemm", choices=["cuda_gemm"], help="specify the table"
    )
    arg_parser.add_argument(
        "--op_type", required=True, help="specify the op type of the cache entry"
    )
    arg_parser.add_argument(
        "--op_keys",
        help="specify the keys that will be used to construct exec_hash_sh1 for "
        "the cache entry. Each op_type follows its own format below: "
        "  * gemm family: MxNxK, e.g. --op_keys='8x4x2'"
        "  * bmm family: BxMxNxK, e.g., --op_keys='4x8x4x2'"
        "  * group_gemm family: BxMxNxK, e.g., --op_keys='8x4x2;4x5x2;3x4x5' "
        "        where gemm's problem sizes are separated by semicolon",
    )
    arg_parser.add_argument(
        "--query_all_devices",
        action="store_true",
        help="query cache entries for all devices in the current table",
    )
    arg_parser.add_argument(
        "--query_device",
        choices=["75", "80"],
        help="query cache entries for a single device in the current table",
    )
    arg_parser.add_argument(
        "--gen_one_75_entry_from_80",
        action="store_true",
        help="generate a cuda sm75 entry based on an existing sm80 entry. "
        "If --algo is not specified, we will generate an algo field based "
        "the existing algo field in the sm80 entry. We make our best guess "
        "to ensure the auto-generated algo would work for sm75. If it did "
        "not work, you could use --algo to specify a correct one.",
    )
    arg_parser.add_argument(
        "--gen_75_entries_from_80",
        action="store_true",
        help="generate a missing cuda sm75 entry for each existing sm80 entry "
        "for the given op_type. If op_type is 'all', we will generate a missing "
        "cuda sm75 entry from each existing sm80 entry for all op_type(s).",
    )
    arg_parser.add_argument(
        "--query_missing_75_entries_from_80",
        action="store_true",
        help="for the given op_type, print out all missing cuda sm75 entries if "
        "there exists an sm80 counterpart. If op_type is 'all', we print all "
        "missing cuda sm75 entries for all op_type(s).",
    )
    arg_parser.add_argument(
        "--algo",
        help="specify the algo (e.g. cutlass_tensorop_f16_xxx_tn_align_1_8) for "
        "the entry. We will set the algo field to this passed argument for "
        "the generated entry.",
    )
    arg_parser.add_argument(
        "--del_entry_by_id", help="delete an entry with the specified id"
    )

    return arg_parser.parse_args()
a function to parse command-line arguments

Parameters
----------
None

Returns
-------
None
tests/ci_profile_cache/update_cache.py