Tài liệu này mô tả API bí danh XLA, cho phép bạn chỉ định tình trạng chồng phổ giữa vùng đệm đầu vào và đầu ra khi xây dựng chương trình XLA.
Xác định tình trạng chồng phổ tại thời gian biên dịch
Ví dụ: hãy xem xét một mô-đun HLO bình thường, chỉ thêm 1
vào dữ liệu đầu vào:
HloModule increment
ENTRY entry {
%p = f32[] parameter(0)
%c = f32[] constant(1)
ROOT %out = f32[] add(%p, %c)
}
Mô-đun này sẽ phân bổ 2 vùng đệm 4 byte: một vùng đệm cho đầu vào %p
và một vùng đệm
cho đầu ra %out
.
Tuy nhiên, thông thường bạn nên thực hiện cập nhật tại chỗ (ví dụ: nếu
trong giao diện người dùng tạo biểu thức, biến đầu vào không còn tồn tại
sau khi tính toán, như trong số tăng p++
).
Để thực hiện việc cập nhật một cách hiệu quả, bạn có thể chỉ định tình trạng chồng phổ đầu vào:
HloModule increment, input_output_alias={ {}: 0 }
ENTRY entry {
%p = f32[] parameter(0)
%c = f32[] constant(1)
ROOT %out = f32[] add(%p, %c)
}
Định dạng chỉ định rằng toàn bộ đầu ra (do {}
đánh dấu) được đặt bí danh thành
tham số đầu vào 0
.
Để chỉ định việc đặt chồng phổ theo phương thức lập trình, hãy xem
XlaBuilder::SetUpAlias
API.
Xác định tình trạng chồng phổ trong thời gian chạy
Tình trạng chồng phổ được xác định ở bước trước được chỉ định trong quá trình biên dịch.
Trong quá trình thực thi, bạn có thể sử dụng
LocalClient::RunAsync
API để chọn xem có đóng góp vùng đệm hay không.
Vùng đệm đầu vào cho chương trình được gói trong
ExecutionInput
!
chứa cây MaybeOwningDeviceMemory
. Nếu bộ nhớ là
được chỉ định là sở hữu (quyền sở hữu vùng đệm được truyền đến thời gian chạy XLA),
vùng đệm thực sự được đóng góp và quá trình cập nhật được thực thi tại chỗ, như
do API bí danh thời gian biên dịch yêu cầu.
Tuy nhiên, nếu vùng đệm được đặt bí danh tại thời gian biên dịch không được đóng góp tại
thời gian chạy, tính năng sao chép-bảo vệ sẽ kích hoạt: một vùng đệm đầu ra bổ sung O
được phân bổ,
và nội dung của vùng đệm đầu vào P
từng được đặt bí danh sẽ được sao chép
vào O
(để chương trình có thể thực thi hiệu quả như thể vùng đệm O
được đóng góp trong thời gian chạy).