Trang này được dịch bởi Cloud Translation API.
Switch to English

Bí danh trong XLA

Tài liệu này mô tả API răng cưa cho XLA: khi xây dựng chương trình XLA, bạn có thể chỉ định bí danh mong muốn giữa bộ đệm đầu vào và đầu ra.

Xác định răng cưa tại thời gian biên dịch

Ví dụ, hãy xem xét một mô-đun HLO tầm thường, chỉ cần thêm 1 vào đầu vào của nó:

 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ổ hai bộ đệm 4 byte: một cho %p đầu vào và một cho %out đầu %out .

Tuy nhiên, thường được thực hiện cập nhật tại chỗ (ví dụ: nếu ở giao diện 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 p++ tăng).

Để thực hiện cập nhật như vậy một cách hiệu quả, bạn có thể chỉ định bí danh đầ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 xác định rằng toàn bộ đầu ra (được đánh dấu bằng {} ) được đặt bí danh cho tham số đầu vào 0 .

Xem XlaBuilder::SetUpAlias API để chỉ định bí danh theo chương trình.

Xác định răng cưa trong thời gian chạy

Bí danh được xác định trong 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ể chọn thực sự quyên góp bộ đệm bằng API LocalClient::RunAsync .

Bộ đệm đầu vào cho chương trình được bọc trong ExecutionInput , mà lần lượt chứa một cây MaybeOwningDeviceMemory . Nếu bộ nhớ được chỉ định là sở hữu (quyền sở hữu bộ đệm được truyền cho thời gian chạy XLA), bộ đệm thực sự được tặng và cập nhật được thực hiện tại chỗ, theo yêu cầu của API bí danh thời gian biên dịch.

Tuy nhiên, nếu bộ đệm được đặt bí danh tại thời gian biên dịch không được tặng trong thời gian chạy, thì việc bảo vệ bản sao sẽ được cấp phát: một bộ đệm đầu ra bổ sung O được phân bổ và nội dung của bộ đệm đầu vào P có nghĩa là được đặt bí danh được sao chép vào O (rất hiệu quả, chương trình có thể thực thi như thể bộ đệm O được tặng trong thời gian chạy).

Frontend interop

TF / XLA

Trong các cụm chương trình TensorFlow được biên dịch bằng XLA, tất cả các cập nhật biến tài nguyên đều được đặt bí danh tại thời gian biên dịch (việc đặt bí danh trong thời gian chạy phụ thuộc vào việc có bất cứ điều gì khác giữ tham chiếu đến tenxơ biến tài nguyên không).