Khi tự khởi động StableHLO từ MHLO, chúng tôi đã kế thừa cách triển khai của MHLO về nhiều tính năng, bao gồm cả việc in hình rất đẹp, xác minh và dự đoán hình dạng. Nhờ đó, chúng ta đã có phạm vi bao phủ đáng kể của điện thoại thông minh, nhưng vẫn còn nhiều việc cần làm để xem lại các phương thức triển khai hiện có để đảm bảo tính hoàn chỉnh và cung cấp các phương thức triển khai mới chưa có.
Tài liệu trực tiếp này dành cho các nhà phát triển và người dùng để theo dõi tiến trình về các khía cạnh khác nhau của thiết bị điều khiển – như quy cách, hoạt động xác minh, suy luận kiểu, in đẹp, thông dịch viên, v.v.
Cách sử dụng
Tiến trình của một hoạt động StableHLO (như đã đề cập trong hàng tương ứng) trên một khía cạnh cụ thể (như đã đề cập trong cột tương ứng) được theo dõi bằng một trong các nhãn theo dõi sau.
- Nhãn chung
- yes: có cách triển khai toàn diện.
- no: không có cách triển khai nào, nhưng việc triển khai như vậy là một phần trong lộ trình phát triển. Xin lưu ý rằng bạn không thể gắn nhãn Người xác minh là "không" vì ODS đã triển khai một số quy trình xác minh.
- Các nhãn tuỳ chỉnh cho Trình xác minh và Dự đoán loại
- yes: đã có một cách triển khai và đồng bộ hoá với ngữ nghĩa StableHLO.
- yes*: có một cách triển khai và đồng bộ hoá với ngữ nghĩa XLA. Vì ngữ nghĩa XLA thường không được ghi nhận trong tài liệu, nên chúng tôi dùng hlo_verifier.cc và shape_inference.cc làm tệp tham chiếu.
- revisit: có cách triển khai, nhưng không thuộc trường "yes" (có) hoặc "yes*" (có) – do chúng tôi chưa kiểm tra, hoặc do chúng tôi đã phát hiện và phát hiện ra vấn đề.
- không khả thi: không có cách triển khai nào vì không khả thi. Ví dụ: vì hệ thống không thể suy ra loại kết quả của một op từ các toán hạng và thuộc tính của toán hạng đó.
Trạng thái
Hoạt động StableHLO | Thông số kỹ thuật | Xác minh | Suy luận kiểu dữ liệu | Tạo bản in đẹp | Phiên dịch viên |
---|---|---|---|---|---|
abs | có | có | có | có | có |
thêm | có | có | có | có | có |
after_all | có | có | có | có | có |
all_gather | có | xem lại | no | no | có |
all_reduce | có | xem lại | có | no | có |
all_to_all | có | xem lại | có | no | có |
và | có | có | có | có | có |
atan2 | có | có | có | có | có |
batch_norm_grad | có | xem lại | có | no | xem lại |
batch_norm_inference | có | xem lại | có | no | xem lại |
batch_norm_training | có | xem lại | có | no | xem lại |
bitcast_convert | có | có | không khả thi | có | có |
truyền tin | no | có* | có* | có | xem lại |
broadcast_in_dim | có | có | không khả thi | có | có |
ốp lưng | có | xem lại | có | no | có |
cbrt | có | có | có | có | có |
câu lạc bộ ceil | có | có | có | có | có |
sặc sỡ | có | có | có | có | xem lại |
kẹp | có | xem lại | có | có | có |
collective_broadcast | có | xem lại | có | no | có |
collective_permute | có | xem lại | có | no | có |
so sánh | có | có | có | có | có |
phức tạp | có | có | có | có | có |
tổng hợp | có | có | không khả thi | có | có |
concatenate | có | có | có | có | có |
hằng số | có | có | có | có | có |
chuyển đổi | có | có | không khả thi | có | có |
tích chập | có | có | không khả thi | xem lại | có |
cosin | có | có | có | có | có |
count_leading_zeros | có | có | có | có | có |
create_token | no | có* | có* | có | xem lại |
tổng lặp lại | no | xem lại | có* | no | xem lại |
custom_call | có | có | không khả thi | có | có |
chia | có | có | có | có | có |
chấm | no | xem lại | không khả thi | có | xem lại |
dot_general | có | xem lại | không khả thi | no | có |
dynamic_broadcast_in_dim | có | có | không khả thi | có | xem lại |
dynamic_conv | có | có | không khả thi | xem lại | xem lại |
dynamic_gather | có | có | không khả thi | no | xem lại |
dynamic_iota | có | có | không khả thi | có | xem lại |
dynamic_pad | có | có | không khả thi | có | xem lại |
dynamic_reshape | có | có | không khả thi | có | xem lại |
dynamic_slice | có | có | có | có | có |
dynamic_update_slice | có | có | có | có | có |
einsum | no | xem lại | no | có | xem lại |
hàm mũ | có | có | có | có | có |
exponential_minus_one | có | có | có | có | có |
fft | có | xem lại | có | có | no |
phần nguyên gần nhất bên trái | có | có | có | có | có |
tập hợp | có | có | có | no | có |
get_dimension_size | có | có | có | có | có |
get_tuple_element | có | có | có | có | có |
if | có | xem lại | có | no | có |
hình ảnh | có | có | có | có | có |
nguồn cấp dữ liệu | có | có | không khả thi | no | có |
ô tô iota | có | có | không khả thi | có | có |
is_finite | có | có | có | có | có |
log | có | có | có | có | có |
log_plus_one | có | có | có | có | có |
hậu cần | có | có | có | có | có |
map | có | xem lại | có | no | có |
tối đa | có | có | có | có | có |
tối thiểu | có | có | có | có | có |
nhân | có | có | có | có | có |
phủ định | có | có | có | có | có |
không | có | có | có | có | có |
optimization_barrier | có | có | có | có | có |
hoặc | có | có | có | có | có |
nguồn cấp dữ liệu bên ngoài | có | có | có | no | có |
đệm | có | có | có | có | có |
partition_id | có | có | có | có | có |
Popcnt | có | có | có | có | có |
công suất | có | có | có | có | có |
thực | có | có | có | có | có |
real_dynamic_slice | no | xem lại | no | có | no |
nhận tín hiệu | có | có | không khả thi | no | có |
giảm | có | xem lại | có | xem lại | có |
reduce_precision | có | có | có | có | có |
reduce_scatter | có | xem lại | no | no | có |
reduce_window | có | xem lại | có | no | có |
phần còn lại | có | có | có | có | có |
replica_id | có | có | có | có | có |
đổi hình dạng | có | có | không khả thi | có | có |
return | no | xem lại | không khả thi | có | có |
đảo ngược | có | có | có | có | có |
RNG | có | có | có | có | xem lại |
rng_bit_generator | có | xem lại | không khả thi | có | xem lại |
round_nearest_afz | có | có | có | có | có |
round_nearest_even | có | có | có | có | có |
giải đấu rsqrt | có | có | có | có | có |
scatter | có | xem lại | có | no | có |
chọn | có | có | có | có | có |
select_and_scatter | có | xem lại | có | no | có |
gửi | có | có | có | no | có |
set_dimension_size | no | có* | có* | có | no |
shift_left | có | có | có | có | có |
shift_right_arithmetic | có | có | có | có | có |
shift_right_logical | có | có | có | có | có |
biển báo | có | có | có | có | có |
sin | có | có | có | có | có |
lát cắt | có | có | có | no | có |
sắp xếp | có | có | có | no | có |
sqrt | có | có | có | có | có |
trừ | có | có | có | có | có |
tanh | có | có | có | có | có |
torch_index_select | no | xem lại | no | no | xem lại |
hoán vị | có | có | có | có | có |
triangular_solve | có | xem lại | có | no | xem lại |
tuple | có | có | có | có | có |
unary_einsum | no | xem lại | no | có | xem lại |
uniform_dequantize | có | có | có | có | no |
uniform_quantize | có | xem lại | không khả thi | có | no |
trong khi | có | xem lại | có | xem lại | có |
xor | có | có | có | có | có |
Suy luận kiểu dữ liệu cho các phép toán tử lượng tử
Cột Type Inference
trong bảng ở trên được dùng để tập trung vào các thao tác không có lượng tử. Đối với phần lớn các phép toán lượng tử, bạn không thể suy luận ra loại kết quả vì tham số lượng tử hoá của các loại kết quả có thể khác với tham số của các toán hạng. Ngoại trừ một số trường hợp, toán hạng và loại kết quả phải khớp giống nhau, hoặc toán hạng có các hạn chế hữu ích để suy ra loại kết quả, các hoạt động đó được liệt kê dưới đây: all_gather
, all_to_all
, case
, collective_permute
, compare
, concatenate
, constant
, dynamic_slice
, dynamic_update_slice
, gather
, get_tuple_element
, if
, infeed
, is_finite
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
, all_to_all
map
optimization_barrier
outfeed
pad
recv
reduce
reduce_scatter
reduce_window
reverse
scatter
select_and_scatter
send
slice
sort
transpose
tuple
uniform_dequantized
while