Filecoin – Precommit2计算介绍

这篇文章主要介绍了Filecoin – Precommit2计算介绍 ,文中通过代码以及文档配合进行讲解,很详细,它对在座的每个人的研究和工作具有很经典的参考价值。 如果需要,让我们与区块链资料网一起学习。

https://www.interchains.cc/1362.html

Filecoin – Precommit2计算介绍是很好的区块链资料,他说明了区块链当中的经典原理,可以给我们提供资料,Filecoin – Precommit2计算介绍学习起来其实是很简单的,

不多的几个较为抽象的概念也很容易理解,之所以很多人感觉Filecoin – Precommit2计算介绍比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难

Filecoin – Precommit2计算介绍

  • FileCoin

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

Sector计算的部分分为Precommit1和Precommit2两部分。两部分合在一起,称为SDR算法。整个SDR算法的相关计算在之前的文章介绍过:

Filecoin – 为什么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::(  layers,  nodes_count,  tree_count,  configs,  labels,  ) } else {  Self::generate_tree_c_cpu::(  layers,  nodes_count,  tree_count,  configs,  labels,  ) }

GPU版本的逻辑相对复杂一些,讲讲GPU的逻辑: Filecoin - Precommit2计算介绍

进行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的结果。 Filecoin - Precommit2计算介绍

3 Merkle树的构造

Merkle树的构造都是采用merkletree库。这个库实现通用的Merkle树的结构和计算。通用的Merkle树,指的是Merkle并不只是通常我们理解的二叉树,而是分成3层:top,sub和base。 Filecoin - Precommit2计算介绍

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

type Tree = storage_proofs::merkle::OctMerkleTree; pub type OctMerkleTree = DiskTree;

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。


我的公众号星想法有很多原创高质量文章,欢迎大家扫码关注。

Filecoin - Precommit2计算介绍

部分转自网络,侵权联系删除www.interchains.cchttps://www.interchains.cc/1362.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 ! QQ3039046426
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » Filecoin – Precommit2计算介绍

提供最优质的资源集合

立即查看 了解详情