allbet欧博真人客户端:Filecoin - Precommit2盘算先容

admin 9个月前 (06-20) 财经 122 0

Sector盘算的部门分为Precommit1和Precommit2两部门。两部门合在一起,称为SDR算法。

本文着重先容一下Precommit2的盘算逻辑。Precommit2盘算分为两部门:1/ Column Hash盘算以及Merkle树组织 2/ Replica盘算以及Merkle树的组织。相关的逻辑请查看rust-fil-proofs/storage-proofs/porep/src/stacked/vanilla/proof.rs中的transform_and_replicate_layers函数。

1

Column Hash盘算

Column Hash盘算的实现在generate_tree_c函数。详细的实现分为两个版本:CPU和GPU版本。

if settings::SETTINGS.lock().unwrap().use_gpu_column_builder {
      Self::generate_tree_c_gpu::<ColumnArity, TreeArity>(
          layers,
          nodes_count,
          tree_count,
          configs,
          labels,
       )
} else {
      Self::generate_tree_c_cpu::<ColumnArity, TreeArity>(
          layers,
          nodes_count,
          tree_count,
          configs,
          labels,
      )
}

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

举行column盘算,需要从硬盘读取11层layer的数据,并整合成column排布。GPU版本,一批批的举行处置,将一部门column读取排序后,通过channel送给GPU处置(Column Hash以及组织Merkle树)。代码逻辑大体上就是两个线程,一个读取layer的数据,column排序,另外一个GPU处置。每次batch的节点个数默认是400000,也就是135M左右。在column盘算完成后,GPU组织Merkle树。

2

Replica盘算

Replica是最后一层layer的数据和原始数据编码之后的效果。每次Encoding一部门Replica,通过channel送给GPU(组织Merkle树)。每次batch的节点个数默认是700000,也就是22M左右。注重,batch的是Encoding的效果。

3

Merkle树的组织

Merkle树的组织都是接纳merkletree库。这个库实现通用的Merkle树的结构和盘算。通用的Merkle树,指的是Merkle并不只是通常我们明白的二叉树,而是分成3层:top,sub和base。

如上图的示例,top是1叉,sub是3叉,base是4叉。在Precommit2盘算中,tree_c和tree_r_last都是8叉树:

type Tree = storage_proofs::merkle::OctMerkleTree<DefaultTreeHasher>;
pub type OctMerkleTree<H> = DiskTree<H, U8, U0, U0>;

4

GPU加速

在Precommit2盘算中,Column Hash的盘算以及Merkle树的组织是接纳GPU加速。相关的代码在neptune代码库中。有意思的是,这部门的代码并不是用cuda或者opencl实现的,而是一种新的更高层的语言:Futhark

5

相关宏界说

  • FIL_PROOFS_USE_GPU_COLUMN_BUILDER - 使用GPU,举行column hash的盘算

  • FIL_PROOFS_MAX_GPU_COLUMN_BATCH_SIZE - 每次盘算Column的batch巨细,默认400000

  • FIL_PROOFS_COLUMN_WRITE_BATCH_SIZE - 每次刷Column数据的batch巨细,默认262144

  • FIL_PROOFS_USE_GPU_TREE_BUILDER - 使用GPU,组织Merkle树

  • FIL_PROOFS_MAX_GPU_TREE_BATCH_SIZE - 每次Encoding盘算的batch巨细,默认700000

总结:

Precommit2阶段,主要是盘算Column Hash以及天生Replica,并组织响应的Merkle树。其中,Column Hash的盘算以及Merkle树的组织可以接纳GPU加速。GPU的实现接纳一种新的高层语言:Futhark。

,

Allbet注册

欢迎进入Allbet注册(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

Sunbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:allbet欧博真人客户端:Filecoin - Precommit2盘算先容

网友评论

  • (*)

最新评论

标签列表

    文章归档

      站点信息

      • 文章总数:972
      • 页面总数:0
      • 分类总数:8
      • 标签总数:1430
      • 评论总数:738
      • 浏览总数:74938