Xuepeng Fan
Xuepeng Fan
Same problem here. Any suggestion about how to fix this?
Seems missed defining values here is ``` template size_t Fp_model::num_bits; template bigint Fp_model::euler; template size_t Fp_model::s; template bigint Fp_model::t; template bigint Fp_model::t_minus_1_over_2; template Fp_model Fp_model::nqr; template Fp_model Fp_model::nqr_to_t; template Fp_model...
Just in case anyone have the same problem, you may check this repo: https://github.com/niekbouman/libff_init.git
add this line in file ~/.vim/bundles.vim before the last line "filetype plugin indent on" filetype off
Cool, nice work
> 当前`split`算子会在内部为每一个下游算子生成一个`rawdata`实现的缓存队列,但是`rawdata`与`split`之间的数据流是通过`push`操作,即`rawdata.add_data`实现的。该数据流不被`hpda::engine`所知。 所以在`hpda::engine`的视角,`split`算子是计算图的一个输出算子,`rawdata`实现的缓存队列们是计算图的extractor。 在`split`算子内部生成的是一个为下游每个算子准备的输出算子,而不是一个`rawdata`实现的队列,每个输出算子确实使用了`rawdata`实现,但是因为每个输出算子都加入到了`hpda::engine`中,且每个输出算子的前趋节点也指定为了相应的`split`算子,所以其实每个`split`内部的输出算子也是和其他算子一样参与调度的,是被`hpda::engine`所知的。 > > 对于copy split,虽然实现不符合HPDA文档的状态转移,但是不会导致调度错误 对于从`hpda::processor::split`衍生的hash split算子,则会有问题:由于hash split不一定能立刻给栈顶的`rawdata`产生输出,`hpda::engine`会误以为栈顶的`rawdata`算子已经达到终止状态,从而不在唤醒该缓存及其下游算子,导致一些数据不会流过hash split的下游算子。 这个`hash split`的代码我没有看到,能发一个链接吗?
> 给 > [fix suggestion](https://github.com/weixiao-zhan/understanding-hpda-code/blob/0620813114ae656073071c1acf926276cc458044/include/hpda/processor/transform/split.h) 注:这段代码不work,帮一起看看哪有问题 这个代码的问题在于`split`内部使用了多个`processor`,而不是之前的`rawdata`,`hpda::engine`处理`processor`时,需要看其前趋节点是否有输出,所以`split`的数据会被第一个`processor`消耗,但后续`processor`查看`split`时,其中的数据已经消失,所以`hpda::engine`会错误的认为后续的`processor`都没有数据可用。