http://www.7klian.com

Filecoin Precommit2计较先容

} else {

FIL_PROOFS_USE_GPU_TREE_BUILDER – 利用GPU,结构Merkle树
在Precommit2计较中,Column Hash的计较以及Merkle树的结构是回收GPU加快。相关的代码在neptune代码库中。有意思的是,这部门的代码并不是用cuda可能opencl实现的,而是一种新的更高层的语言:Futhark。
           tree_count,

if settings::SETTINGS.lock().unwrap().use_gpu_column_builder {
1. Column Hash计较

Sector计较的部门分为Precommit1和Precommit2两部门。两部门合在一起,称为SDR算法。整个SDR算法的相关计较在之前的文章先容过:Filecoin – 为什么SDR这么慢?
       Self::generate_tree_c_cpu::<ColumnArity, TreeArity>(
2. Replica计较
总结:
本文着重先容一下Precommit2的计较逻辑。Precommit2计较分为两部门:1/ Column Hash计较以及Merkle树结构 2/ Replica计较以及Merkle树的结构。相关的逻辑请查察rust-fil-proofs/storage-proofs/porep/src/stacked/vanilla/proof.rs中的transform_and_replicate_layers函数。
           configs,
       Self::generate_tree_c_gpu::<ColumnArity, TreeArity>(

Merkle树的结构都是回收merkletree库。这个库实现通用的Merkle树的布局和计较。通用的Merkle树,指的是Merkle并不可是凡是我们领略的二叉树,而是分成3层:top,sub和base。

type Tree = storage_proofs::merkle::OctMerkleTree<DefaultTreeHasher>;
           nodes_count,
FIL_PROOFS_MAX_GPU_COLUMN_BATCH_SIZE – 每次计较Column的batch巨细,默认400000
           layers,
       )
4. GPU加快

举办column计较,需要从硬盘读取11层layer的数据,并整合成column排布。GPU版本,一批批的举办处理惩罚,将一部门column读取排序后,通过channel送给GPU处理惩罚(Column Hash以及结构Merkle树)。代码逻辑概略上就是两个线程,一个读取layer的数据,column排序,别的一个GPU处理惩罚。每次batch的节点个数默认是400000,也就是135M阁下。在column计较完成后,GPU结构Merkle树。
}

           nodes_count,
           labels,
           layers,
FIL_PROOFS_COLUMN_WRITE_BATCH_SIZE – 每次刷Column数据的batch巨细,默认262144
           tree_count,
Column Hash计较的实此刻generate_tree_c函数。详细的实现分为两个版本:CPU和GPU版本。
Replica是最后一层layer的数据和原始数据编码之后的功效。每次Encoding一部门Replica,通过channel送给GPU(结构Merkle树)。每次batch的节点个数默认是700000,也就是22M阁下。留意,batch的是Encoding的功效。

Precommit2阶段,主要是计较Column Hash以及生成Replica,,并结构相应的Merkle树。个中,Column Hash的计较以及Merkle树的结构可以回收GPU加快。GPU的实现回收一种新的高层语言:Futhark。

如上图的示例,top是1叉,sub是3叉,base是4叉。在Precommit2计较中,tree_c和tree_r_last都是8叉树:
pub type OctMerkleTree = DiskTree;

GPU版本的逻辑相对巨大一些,讲讲GPU的逻辑:

FIL_PROOFS_MAX_GPU_TREE_BATCH_SIZE – 每次Encoding计较的batch巨细,默认700000
5. 相关宏界说
           labels,
        )
           configs,
FIL_PROOFS_USE_GPU_COLUMN_BUILDER – 利用GPU,举办column hash的计较

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读