(lib="phi", kernel_type="function", print_detail=False)
| 89 | |
| 90 | |
| 91 | def parse_paddle_kernels(lib="phi", kernel_type="function", print_detail=False): |
| 92 | assert lib in ["fluid", "phi"] |
| 93 | |
| 94 | if lib == "phi": |
| 95 | assert kernel_type in ["function", "structure", "all"] |
| 96 | # phi kernel type can be: function, structure, all |
| 97 | kernel_infos = paddle.base.core._get_registered_phi_kernels(kernel_type) |
| 98 | else: |
| 99 | # fluid, phi, all |
| 100 | assert kernel_type in ["fluid", "phi", "all"] |
| 101 | kernel_infos = paddle.base.core._get_all_register_op_kernels( |
| 102 | kernel_type |
| 103 | ) |
| 104 | |
| 105 | max_op_type_lengths = 0 |
| 106 | stats = KernelRegistryStatistics() |
| 107 | |
| 108 | kernel_info_dict = {} |
| 109 | for key, value in kernel_infos.items(): |
| 110 | info = KernelInfo(key) |
| 111 | if lib == "phi": |
| 112 | info.parse_phi_dtypes(value, device="GPU") |
| 113 | else: |
| 114 | info.parse_fluid_dtypes(value, device="gpu") |
| 115 | kernel_info_dict[key] = info |
| 116 | if len(info.op_type) > max_op_type_lengths: |
| 117 | max_op_type_lengths = len(info.op_type) |
| 118 | stats.update(info.supported_dtypes) |
| 119 | |
| 120 | if print_detail: |
| 121 | print( |
| 122 | f"==================== lib={lib}, kernel_type={kernel_type} ====================" |
| 123 | ) |
| 124 | print( |
| 125 | "{} : {}".format( |
| 126 | "op_type".ljust(max_op_type_lengths + 4), |
| 127 | "supported_dtypes for GPU", |
| 128 | ) |
| 129 | ) |
| 130 | for key, value in sorted(kernel_info_dict.items()): |
| 131 | print( |
| 132 | f"{value.op_type.ljust(max_op_type_lengths + 4)} : {value.supported_dtypes}" |
| 133 | ) |
| 134 | print() |
| 135 | return stats |
| 136 | |
| 137 | |
| 138 | def main(lib): |
no test coverage detected