YeeZ-Privacy-Computing
YeeZ-Privacy-Computing copied to clipboard
hpda::processor::split 的实现不符合HPDA文档中三种状态转移的抽象
当前split
算子会在内部为每一个下游算子生成一个rawdata
实现的缓存队列,但是rawdata
与split
之间的数据流是通过push
操作,即rawdata.add_data
实现的。该数据流不被hpda::engine
所知。
所以在hpda::engine
的视角,split
算子是计算图的一个输出算子,rawdata
实现的缓存队列们是计算图的extractor。
对于copy split,虽然实现不符合HPDA文档的状态转移,但是不会导致调度错误
对于从hpda::processor::split
衍生的hash split算子,则会有问题:由于hash split不一定能立刻给栈顶的rawdata
产生输出,hpda::engine
会误以为栈顶的rawdata
算子已经达到终止状态,从而不在唤醒该缓存及其下游算子,导致一些数据不会流过hash split的下游算子。