OpInterface tanımları

ShardableDataFlowOpInterface (ShardableDataFlowOpInterface)

Bu arayüzü genişleten işlemler için veri akışı kenarları aracılığıyla parçaların dağıtılmasına izin veren bir işlem arayüzü.

Bir işlem X'in veri akışı kenarı, kaynak kümesi (her biri X'in işlem göreni veya X'in blok sonlandırıcının bir işleneni) ile bir hedef kümesi (her biri X'in sonucu veya X'in blok bağımsız değişkenidir.) arasındaki bir köprüyü tanımlar. Öyle ki, tüm kaynaklar ve hedefler aynı şekilde parçalanmalıdır. Bir işlem, birbirine dik olan birden fazla veri akışı kenarı içerebilir.

Sahip, shardy'nin dağıtımı tarafından kullanılan veri akışı kenarının kullanıcı tarafından belirtilen hedefidir. Kullanıcı bunu rastgele seçebilir ancak URL'nin statik olması gerekir.

Örneğin:

  y_1, ..., y_n = custom_op (x_1, ..., x_n)
                  ((body_arg_1,..., body_arg_n) {
                    ...
                    return return_value_1, ..., return_value_n
                  })

Bu custom_op, veri akışı kenarları için iki türe sahiptir: return_value_i (kaynaklar) ile y_i (hedefler) arasında n tane ve x_i(kaynaklar) ile body_arg_i(hedefler) arasında n tane kenar. Bu durumda kenar sahipleri, hedeflerle aynıdır.

Birden fazla hedefi olan bir operasyon örneğini aşağıda bulabilirsiniz:

  y_0, ..., y_n = while (x_0, ..., x_n)
                  ((pred_arg_0,... , pred_arg_n) { ... })
                  ((body_arg_0,..., body_arg_n) {
                    ...
                    return return_value_0, ..., return_value_n
                  })

Bu sırada işlem n tane veri akışı kenarı içerir. i. veri akışı kenarı, x_i, return_value_i kaynakları ile y_i, pred_arg_i, body_arg_i hedefleri arasındadır.

Yöntemler:

getBlockArgumentEdgeOwnerShardings

mlir::ArrayRef<mlir::sdy::TensorShardingAttr> getBlockArgumentEdgeOwnerShardings();

Tüm blok bağımsız değişken veri akışı ucu sahiplerinin parçalamalarını döndürür.

setBlockArgumentEdgeOwnerSharding

void setBlockArgumentEdgeOwnerSharding(unsigned index, mlir::sdy::TensorShardingAttr sharding);

Engelleme bağımsız değişkeni kenar sahibinin sharding değerini belirtilen index ile ayarlar.

setBlockArgumentEdgeOwnerShardings

void setBlockArgumentEdgeOwnerShardings(mlir::ArrayRef<mlir::sdy::TensorShardingAttr> shardings);

Tüm blok bağımsız değişkeni kenar sahiplerinin shardings değerini ayarlar.

getOpResultEdgeOwnerShardings

mlir::ArrayRef<mlir::sdy::TensorShardingAttr> getOpResultEdgeOwnerShardings();

Tüm işlem sonucu veri akışı kenarı sahiplerinin parçalamalarını döndürür.

setOpResultEdgeOwnerSharding

void setOpResultEdgeOwnerSharding(unsigned index, mlir::sdy::TensorShardingAttr sharding);

Op sonucu kenar sahibinin sharding değerini belirtilen index ile ayarlar.

setOpResultEdgeOwnerShardings

void setOpResultEdgeOwnerShardings(mlir::ArrayRef<mlir::sdy::TensorShardingAttr> shardings);

Tüm op sonuç kenar sahiplerinin shardings değerini ayarlar.

getBlockArgumentEdgeOwners

mlir::ArrayRef<mlir::BlockArgument> getBlockArgumentEdgeOwners();

Tüm engelleme bağımsız değişkeni kenar sahiplerini alır.

getOpResultEdgeOwners

mlir::ResultRange getOpResultEdgeOwners();

Tüm işlem sonucu kenarı sahiplerini alır.

getEdgeSources

mlir::SmallVector<mlir::Value> getEdgeSources(mlir::Value target);

target değeri verilen veri akışı kenar kaynaklarını alır.

getEdgeOwnerFromTarget

mlir::Value getEdgeOwnerFromTarget(mlir::Value target);

Sahip olabilecek veya olamayacak bir target verildiğinde veri akışı kenarının sahibini target alır.

getEdgeOwnerFromSource

mlir::Value getEdgeOwnerFromSource(mlir::OpOperand&source);

source verildiğinde bir veri akışı kenarının sahip hedefini alır.

getNonEdgeOwnerTargets

mlir::SmallVector<mlir::Value> getNonEdgeOwnerTargets(mlir::Value owner);

owner kenarı verildiğinde bir veri akışı kenarının sahip olmayan hedeflerini alır.

ShardingRuleOpInterface (ShardingRuleOpInterface)

İşlemin kendi bölme kuralını tanımlamasına olanak tanıyan bir işlem arayüzü. Parçalama kuralı, bir işlemin işlem üzerindeki çeşitli özelliklere (tüm özellikler, işlenenlerin şekli, sonuçların şekli vb.) göre nasıl bölümlenebileceğini belirtir. Daha fazla bilgi için OpShardingRuleAttr adresini ziyaret edin.

Yöntemler:

getShardingRule

mlir::sdy::OpShardingRuleAttr getShardingRule();

İşlemin bölme kuralını döndürür.