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.