-mpmd-copy-topology-from-main
Sao chép cấu trúc liên kết từ hàm chính sang các hàm được mpmd.call tham chiếu.
Sao chép thuộc tính cấu trúc liên kết từ hàm chính sang bất kỳ hàm nào được mpmd.call tham chiếu. Thao tác này cũng đặt đối tượng được mpmd.call gọi thành chế độ hiển thị riêng tư để tránh bị nhầm với hàm điểm truy cập.
-mpmd-enforce-input-output-equisharding
Thi hành các ràng buộc về việc chia đều cho các hàm MPMD.
Thi hành các ràng buộc về việc chia đều giá trị đầu vào và đầu ra cho các hàm MPMD bằng cách giới thiệu TransferOps khi cần.
Tùy chọn
-constraints : A list of constraint, each enforcing that an input and output should be assigned to the same mesh.
-mpmd-generate-sdy-meshes-from-topology
Tạo các lưới phân mảnh dựa trên cấu trúc liên kết MPMD.
Lượt truyền này sẽ xoá mọi thao tác lưới phân mảnh hiện có và thay thế bằng các thao tác dựa trên cấu trúc liên kết MPMD. Lượt truyền này cũng cập nhật các phân mảnh tensor để tham chiếu đến các thao tác lưới mới.
-mpmd-infer-mesh-assign-mesh-func-leaves
_Chỉ định một lưới cho từng phép tính, đầu ra của hàm và giá trị đầu vào của hàm chưa sử dụng bằng cách sử dụng phân tích use_set và srcset.
Lượt truyền này sẽ chỉ định các lưới cho các nút lá của phần thân hàm (tức là kết quả của các phép tính chưa sử dụng, đối số hàm chưa sử dụng và đầu ra của hàm) bằng cách tạo AssignOps hoặc thay đổi loại, sử dụng thông tin use_set và src_set.
Chúng tôi cũng coi một số giá trị trung gian là nút lá để phân tích. Cụ thể: các toán hạng của mpmd.reduce và mpmd.broadcast được coi là nút lá và một cặp chỉ định-huỷ chỉ định sẽ được tạo trên các toán hạng đó.
Việc chỉ định này sẽ xoá use_set của tất cả các op không phải nút lá, vì các lượt sử dụng được chú thích trước đó sẽ lỗi thời do việc suy luận các op giảm sẽ thay đổi use_set của một số giá trị: việc truyền use_set ban đầu không nhận biết được các op giảm, nhưng giờ đây chúng tôi đã suy luận các op giảm, việc truyền sẽ khác.
Lượt truyền này sẽ không thành công và phát ra lỗi nếu use-set và src-set không được điền đúng cho các thao tác nút lá.
Điều kiện tiên quyết: mọi thao tác đều có src-set không trống hoặc chúng tôi suy luận các lượt truyền.
Tùy chọn
-infer-transfers : Whether to create transfers when needed, instead of erroring.
-error-limit : The number of errors to emit. Set to -1 to emit all errors. Cannot be 0.
-mpmd-infer-mesh-assign-using-input-output-constraints
Chỉ định một lưới cho các giá trị đầu vào và đầu ra theo các ràng buộc về việc chỉ định giá trị đầu vào và đầu ra.
Lượt truyền này sử dụng các ràng buộc về việc chỉ định đều giá trị đầu vào và đầu ra để chỉ định cả giá trị đầu vào và đầu ra cho cùng một lưới.
Xin lưu ý rằng điều này đảm bảo giá trị đầu vào nằm trên cùng một lưới, bất kể sau đó giá trị này có được truyền sang các lưới khác hay không. Nhưng điều này có nghĩa là chúng ta không nên chạy populate-src-set sau lượt truyền này.
Yêu cầu:
- đối với mọi giá trị đầu vào
icủa hàm điểm truy cập có thể là một phần của ràng buộc về việc chỉ định đều:icó MeshTensorType HOẶC use-set được xác định rõ ràng. - đối với mọi giá trị đầu ra
ocủa hàm điểm truy cập có thể là một phần của ràng buộc về việc chỉ định đều:ocó loại MeshTensorType HOẶC src-set và use-set được xác định rõ ràng.
Trong đó, use-set được xác định rõ ràng của một giá trị bao gồm tất cả các lưới mà giá trị đó được chỉ định (một cách bắc cầu) thông qua các thao tác mpmd.assign và không có lưới nào khác. src-set được xác định rõ ràng bao gồm tất cả các lưới mà tensor được phép tồn tại và không có lưới nào khác.
Mặc dù chỉ chạy trên các hàm điểm truy cập, nhưng chúng tôi sẽ tạo lượt truyền thao tác mô-đun vì lượt truyền này yêu cầu tất cả các lượt truyền trên các hàm hiện có phải hoàn tất trước khi chạy. Ví dụ: nếu chúng tôi tạo lượt truyền này thành EntryPointFunctionPass, thì trình quản lý lượt truyền có thể chạy lượt truyền này trước khi quá trình xác thực hoàn tất trên các hàm không phải điểm truy cập.
Tùy chọn
-verbose-logging : Whether to enable verbose logging
-constraints : A list of constraint, each enforcing that an input and output should be assigned to the same mesh.
-mpmd-infer-mesh-convert-reduce-ops
Chuyển đổi các thao tác giảm được chú thích thành các thao tác mpmd.reduce và làm phẳng các chuỗi thao tác giảm.
Chuyển đổi các thao tác giảm được chú thích thành các thao tác mpmd.reduce, đồng thời làm phẳng các chuỗi thao tác giảm này.
Trong các ký hiệu:
x = add(w0, w1) {mpmd.reduce = #mpmd.reduce
Tùy chọn
-infer-cross-mesh-reductions : Whether to infer cross-mesh reductions. Will be enabled by default once stable.
-mpmd-infer-mesh-finalize
Áp dụng quy trình dọn dẹp cuối cùng sau khi suy luận lưới mẫu.
Tùy chọn
-infer-transfers : Whether to create transfers when needed, instead of erroring.
-mpmd-infer-mesh-populate-src-set
_Khởi chạy src_set cho UnassignOps và đối số hàm, đồng thời truyền srcset.
Lượt truyền này sẽ khởi chạy src_set và truyền src_set đó, điền thông tin src_set vào biểu đồ.
Điều kiện tiên quyết: để đối số hàm có src_set, bạn phải điền use_set.
Khởi chạy: src_set của UnassignOp được đặt thành lưới mà UnassignOp chỉ định. src_set của đối số hàm được đặt thành use_set của đối số đó.
Truyền: src_set truyền về phía trước từ các toán hạng đến chính thao tác, lấy giao điểm của các toán hạng. Hãy xem PropagateSrcSet để biết chi tiết.
-mpmd-infer-mesh-populate-use-set
_Khởi chạy use_set cho AssignOps và truyền useset.
Lượt truyền này sẽ khởi chạy use_set và truyền use_set đó về phía sau, điền thông tin use_set vào biểu đồ.
Khởi chạy: use_set của AssignOp được đặt thành lưới mà AssignOp chỉ định.
Truyền: use_set truyền về phía sau từ người dùng đến chính thao tác, lấy hợp của người dùng. Theo định nghĩa, use_set của một thao tác là hợp của use_set của người dùng, vì use_set là tập hợp các lượt sử dụng bắc cầu.
-mpmd-infer-mesh-rewrite-using-analysis
_Viết lại các thao tác theo useset.
Lượt truyền này sẽ chỉ định các thao tác không có lưới bằng cách gói các thao tác đó trong các mảnh, sử dụng phân tích use_set và src_set.
Lượt truyền này cũng xoá các thuộc tính use_set và src_set trong quá trình dọn dẹp, vì bạn không cần các phân tích này nữa sau khi thực hiện lượt truyền này.
Điều kiện tiên quyết: mọi thao tác đều có use_set, tức là quá trình phân tích đã hoàn tất. Điều kiện tiên quyết: mọi đối số của hàm không phải điểm truy cập đều được sử dụng ít nhất bởi một thao tác không phải thao tác kết thúc.
LƯU Ý: jupvfranco – cân nhắc việc đổi tên lượt truyền này vì lượt truyền này không còn phụ thuộc nhiều vào quá trình phân tích nữa.
Tùy chọn
-max-clones : How many copies of a meshless operation we allow. Setting it to 1 means we never clone the op.
-mpmd-infer-mesh-validate-no-additional-transfers-needed
Xác thực rằng bạn không cần thực hiện thêm lượt truyền nào để chỉ định lưới.
Lượt truyền này xác thực rằng bạn có thể chỉ định lưới cho tất cả các thao tác không có lưới mà không cần thực hiện thêm lượt truyền nào.
Đối với các thao tác không có lưới không phải là thao tác hàm, hệ thống sẽ báo lỗi khi:
- use_set không có trong src_set cho một thao tác nhất định, tức là bạn cần thực hiện một lượt truyền.
Đối với các thao tác hàm, bạn chỉ cần kiểm tra các điều kiện trên cho đối số hàm, vì hàm trả về các thao tác không có lưới hoặc đối số khối.
Tùy chọn
-error-limit : The number of errors to emit. Set to -1 to emit all errors. Cannot be 0.
-mpmd-infer-mesh-validate-src-set-not-empty
_Xác thực rằng mọi thao tác không có lưới đều có srcset.
Lượt truyền này sẽ xác thực tất cả các thao tác không có lưới, kiểm tra xem thao tác có thể được chỉ định ở đâu đó hay không. Tức là đối với các thao tác không có lưới không phải là thao tác hàm, hệ thống sẽ báo lỗi khi src_set trống trên một thao tác hoặc nếu hệ thống suy luận rằng đó là thao tác giảm trên nhiều lưới nhưng thao tác đó không được chuyển đổi. Đây là điều kiện tiên quyết để chỉ định nút lá của hàm.
Đối với các thao tác hàm, bạn chỉ cần kiểm tra các điều kiện trên cho đối số hàm, vì hàm trả về các thao tác không có lưới hoặc đối số khối.
Đây phải là lượt truyền ở cấp mô-đun, vì trong trường hợp xảy ra lỗi trên hàm được gọi, chúng tôi muốn in các phương thức gọi.
Điều kiện tiên quyết: các thao tác giảm trên nhiều lưới phải được chuyển đổi thành các thao tác giảm trước khi chạy lượt truyền này.
Tùy chọn
-error-limit : The number of errors to emit. Set to -1 to emit all errors. Cannot be 0.
-mpmd-inline-nested-user-exposed-ops
_Nội tuyến mọi thao tác mpmd do người dùng hiển thị được lồng trong một phép tính được đặt tên.
Nội tuyến mọi thao tác named_computation, named_tensor, broadcast và reduce được lồng trong một named_computation, kiểm tra xem việc chỉ định lưới của thao tác đó (khi được xác định) có khớp với lưới của đối tượng mẹ hay không.
Tùy chọn
-assignment : Mapping between names (of computations and tensors) and mesh names, and optionally stage ids. E.g., 'n0@m0,n1@m1' defines that names n0 and n1 will be assigned to meshes m0 and m1, respectively. Alternatively 'n0@m0/0,n1@m1/1' means that these names are also assigned to the stages 0 and 1.
-mpmd-insert-nameless-clone-of-negligible-ops
Sao chép các thao tác không đáng kể bên ngoài các phép tính được đặt tên.
Sao chép các thao tác không đáng kể, tức là các thao tác có một kết quả, không có toán hạng, bên ngoài các phép tính được đặt tên bất cứ khi nào các thao tác này được thao tác trả về của phép tính sử dụng, thay thế kết quả của named_computation bằng bản sao. Bạn cần thực hiện thao tác này vì nếu các kết quả như vậy được các phép tính được đặt tên được chỉ định cho các lưới khác nhau sử dụng, thì điều này có thể gây ra xung đột suy luận lưới. Bằng cách áp dụng lượt truyền này, chúng tôi cho phép suy luận lưới sao chép các thao tác không đáng kể này.
Lượt truyền này KHÔNG thay đổi phép tính được đặt tên.
-mpmd-introduce-transfers
Tạo các lượt truyền dữ liệu dựa trên việc chỉ định lưới của người dùng.
Tạo một lượt truyền giới thiệu các thao tác truyền dựa trên việc chỉ định lưới của người dùng. Nội dung như vậy bao gồm:
- Đẩy UnassignOp vào các lệnh gọi mpmd nếu kết quả của UnassignOp sau đó được chỉ định trong đối tượng được gọi.
- Thay thế AssignOp của UnassignOp bằng TransferOp.
- Chỉ định phần bổ sung cho lưới tiêu thụ và giới thiệu một lượt truyền nếu có phần bổ sung không có lưới giữa các mảnh.
-mpmd-map-input-output-to-mesh
Chỉ định lưới cho giá trị đầu vào và đầu ra của hàm.
Tạo một lượt truyền ánh xạ giá trị đầu vào/đầu ra của hàm với các lưới dựa trên việc chỉ định lưới do người dùng xác định.
Đối với các đối số đầu vào, lượt truyền này sẽ:
- Truyền các tensor đầu vào cần được đặt trên một lưới thành tensor lưới.
- Cập nhật chữ ký hàm.
- Thêm mpmd.unassign trước khi tensor được sử dụng.
Đối với các đối số đầu ra, lượt truyền này sẽ thêm mpmd.assign trước khi tensor được trả về và cập nhật chữ ký hàm.
Yêu cầu: Mỗi chỉ mục đầu vào/đầu ra đều hợp lệ và mỗi lưới được ánh xạ là một lưới hợp lệ trong cấu trúc liên kết.
Tùy chọn
-input-assignment : Mapping between function input indices and assigned mesh names.E.g., '0@m0,1@m1' defines that input with index 0 will be assigned to mesh m0 and input with index 1 will be assigned to mesh m1.
-output-assignment : Mapping between function output indices and assigned mesh names.E.g., '0@m0,1@m1' defines that output with index 0 will be assigned to mesh m0 and output with index 1 will be assigned to mesh m1.
-mpmd-map-named-ops-to-mpmd-ops
Chỉ định lưới cho các thao tác do người dùng xác định.
Tạo một lượt truyền tuỳ ý chỉ định mpmd.named_tensor cho Assign(Unassign(%v)) (tuỳ thuộc vào việc có mục nhập trong assignment) và ánh xạ từng named_computation với một lưới, sử dụng ánh xạ do người dùng xác định giữa các named_computation và tên lưới. Điều này có nghĩa là thay thế từng named_computation bằng một Mảnh và tạo AssignOps cho các toán hạng và UnassignOps cho kết quả của các Mảnh này. Mẫu Assign(Unassign(%v)) hiện được giới thiệu sẽ được viết lại thành Transfer(%v).
Sau lượt truyền này, sẽ không có thao tác named_computation/named_tensor nào.
Yêu cầu: tất cả các named_computation và named_tensor phải nằm ở cấp cao nhất của hàm.
Tùy chọn
-assignment : Mapping between names (of computations and tensors) and mesh names, and optionally stage ids. E.g., 'n0@m0,n1@m1' defines that names n0 and n1 will be assigned to meshes m0 and m1, respectively. Alternatively 'n0@m0/0,n1@m1/1' means that these names are also assigned to the stages 0 and 1.
-mpmd-simplify-named-computations
Đơn giản hoá giá trị đầu vào và đầu ra của các thao tác tính toán được đặt tên.
Đơn giản hoá từng phép tính được đặt tên một cách độc lập. Cụ thể, lượt truyền này sẽ:
- loại bỏ các kết quả trùng lặp và các giá trị trả về tương ứng;
- loại bỏ các toán hạng trùng lặp và các đối số khối tương ứng;
- xoá các kết quả có toán hạng trả về tương ứng là đối số khối của thao tác;
- xoá các toán hạng có đối số khối tương ứng không còn được sử dụng (hoặc không có bất kỳ đối số nào ngay từ đầu); và
- xoá các kết quả không được sử dụng.
- thay thế mẫu
arg -> stablehlo.optimization_barrier -> returntrong một phép tính được đặt tên bằng mẫuarg -> return, cho phép đơn giản hoá thêm.
-mpmd-validate-named-ops-in-mpmd-func
Xác thực rằng các thao tác được đặt tên chỉ được lồng trong các hàm mpmd.
Xác thực rằng NamedComputationOp và NamedTensorOp chỉ được lồng trong các hàm mpmd, tức là các hàm có thuộc tính cấu trúc liên kết.