BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

ProgPoW如何抵禦ASIC?開發團隊IfDefElse為你解答

MinerHub
特邀专栏作者
2019-04-19 09:09
本文約4221字,閱讀全文需要約7分鐘
在獲得一些主流媒體的關注之後,ProgPoW 開發團隊IfDefElse 收到了許多算法方面的提問,他們對其中幾個常見問題做出了解答。
AI總結
展開
在獲得一些主流媒體的關注之後,ProgPoW 開發團隊IfDefElse 收到了許多算法方面的提問,他們對其中幾個常見問題做出了解答。
在獲得一些主流媒體的關注之後,ProgPoW 開發團隊IfDefElse 收到了許多算法方面的提問,他們對其中幾個常見問題做出了解答。經原文作者的同意,礦視界對此進行了翻譯報導。

1

問:在以太坊治理方面,你們的立場是什麼?

答:暫無立場,我們覺得許多問題應該留給社區來回答,比如是否或者說何時採用ProgPoW。我們負責提出新的算法,並樂意回答與之相關的技術性問題。

2

問:ProgPoW 從何而來?

答:IfDefElse 是分析和優化PoW 算法的一個小團隊。我們觀察到ETH 社區一再要求使用一種新的PoW 算法,在這種算法中,專業的ASIC 礦機和常規硬件設施比起來,優勢不大。眼看著諸多算法在ASIC 礦機面前不堪一擊,實在令人心痛,每次新的ASIC 礦機問世都會讓整個ETH 社區陷入沮喪。

於是在2018 年春天裡的一天,我們就有了通過修改Ethash 算法,使其達到GPU 挖礦預期效果的想法。初步編輯好該算法後,我們把它放到了GitHub 公共版塊上進行研發和微調。

3

問:誰對ProgPoW 進行了測評?

答:在一次收集算法使用反饋的過程中,我們幸運地收到了來自以太坊基金會工程師,以太坊核心研發工程師,NVIDIA 工程師和AMD 工程師的反饋郵件。 NVIDIA 和AMD 工程師都對該算法作出了總體正面的評價。

值得一提的是,有兩處算法的更新優化是基於社區成員mbevand 和Schemykh 的評價作出的。

4

問:AMD 作何反應?

答:AMD 的回應解決了兩大疑慮:

如果用ProgPoW 算法替代Ethash PoW 算法,難道ASIC 礦機廠商就沒辦法迅速研究開源代碼並製造專門ASIC 礦機嗎?

ProgPoW 算法會不會讓GPU 礦工挖以太難上加難?

AMD 一位工程師給出了肯定回答,理論上是可以針對ProgPoW 造新的ASIC 礦機,但這需要製造方有專門的GPU 知識背景,尤其是內存控制器技術。

不僅如此,他們還表達了對緩存(存在本地數據共享和AMD 芯片上的數據)大小的擔憂。

他們在郵件中提到,不論緩存是8KB 還是16KB,AMD 和NVIDIA 在性能上無大差別。但在32KB 和64KB 時就可能會對兩種GPU 廠商架構產生重大影響,在Polaris 和Vega 上也會存在不兼容性。

根據他們的反饋,我們把PROGPOW_CACHE_BYTES的大小設置為16KB 。

5

問:NVIDIA 作何反應?

答:NVIDIA 工程師大體同意我們的方法。他們說,該算法用運算填補了內存訪問間的漏洞,而不是讓GPU 像高貴的內存控制器一樣無所事事地閒置在那。

他們主要的擔憂是,如果算法裡增加太多隨機運算,最後會變成受計算限制,而非受存儲限制。如此一來,為受計算限制算法打造的ASIC 礦機可能會獲得更大的效率和增益。

根據他們的反饋,我們微調了PROGPOW_CNT_CACHE 和PROGPOW_CNT_MATH 以保證該算法對當下大部分GPU 仍保有受存儲限制。

6

問:如果ProgPoW 是在主迴路上調用模並使用kiss99() 寫法來選擇隨機指令,那麼針對這一算法設計的ASIC 礦機難道不會更加高效嗎?

答:這是第一次查看該算法時常會有的誤區。事實上,在主迴路上模和kiss99() 寫法的調用,是由CPU 計算並以此生成一個隨機程序,然後再由CPU 進行編譯的。 GPU 負責的是執行優化代碼,而這些代碼已經解決了執行何種指令和使用何種混合狀態的問題。

正如Alexey 所言,ProgPoW 每50 個區塊生成一次源代碼。生成程序示例請見:kernel.cu.

我們也將在標準中作進一步說明。

7

問:為了編譯生成的源代碼,礦工需要安裝AMD 或者NVIDIA軟件開發工具包嗎?

答:不需要。 AMD 和NVIDIA 的驅動中包含OpenCL,DirectX 和Vulkan 編譯器。對於CUDA 來說,二進制內核文件會和小部分軟件開發工具包一起分配。

8

問:ProgPoW 算法有GPU 架構上的偏好嗎?

答:沒有,ProgPoW 算法的設計初衷就是盡可能地保證公平性。 OpenCL 和CUDA 在執行上並無差異,16KB 大小的緩存在這兩種架構上都能順暢運行。

我們避免了只在一個架構上進行16 位或24 位運算,無論是AMD 編入索引的寄存器文件,還是NVIDIA 的LOP3,所有的操作都得到了跨代體系架構的良好支持。

用ProgPoW 算法的GPU 在挖礦工作負載中的性能也將反映該GPU 的平均遊戲性能。

9

問:為什麼經過大量修改VBIOS 的GPU,在Ethash 和ProgPoW 之間的速度差反而比預期慢2 倍以上了?

答:ProgPoW 讀取每哈希的內存是Ethash 的兩倍,因此預期哈希率為1/2。我們之前報告的所有調優和样本哈希率(詳見“Results:Hashrate”)都是在以正常頻率運行的GPU 上面完成的。為降低核心頻率而大量修改VBIOS 將會導致礦機運行該算法時受計算限制,而非受存儲限制。

如果用戶需要更換到新算法,VBIOS 的修改與調優將需要重新進行。

10

問:你們能講講Ethash ASIC 礦機如何比GPU 礦機效率高出兩倍嗎?

Ethash 算法只需執行3 個組件:

高帶寬存儲器(用於DAG 訪問)

Keccak f1600 引擎(用於初始/最終哈希)

微型計算核心(用於內迴路FNV 和模塊調用)

FPGA 的數據表明,Keccak 計算所耗費的功率幾乎可以忽略不計。我們估計,在執行Ethash 算法時,大約只有1/2 的GPU 功率花在了內存訪問上。而Ethash ASIC 礦機的Keccak 和計算核心的功率可以忽略不計,其功率主要消耗在內存訪問上,所以GPU 在挖礦效率上還有兩倍的改進空間。

當前Ethash 挖礦硬件快速摘要:

除Titan V,所有數據均來自whattomine.com 和asicminervalue.com。

第一代Ethash ASIC 礦機,比特大陸的Antminer E3 和GPU 礦機相比沒有任何效率上的優勢。這是因為它的DDR3 內存比GPU 礦機的GDDR 內存功耗更高。

據我們所知,尚未發布的Innosilicon A10 ETHMaster 據說在效率上會有更優表現。因為Innosilicon 在該系列礦機上使用了GDDR6 IP 技術,這將使得它的效率可以達到目前最高效挖礦GPU RTX 2070 的兩倍。

11

問:HBM 的實用性如何?

答:我們最初的算法評估是使用同種內存類型進行同標準比較的。 HBM 功耗低,但價格貴,就顯得不夠實用。舉個例子,帶有HBM 的NVIDIA Titan V 比起A10 ETHMaster,效率上僅遜色一點,但成本高達3,000 美元,明顯沒有實用性。

帶有HBM 的AMD Vega 卡價格倒是合理,但又因為一些原因它的算力只能達到175 KH/s/W。 Vega 效率受何限制我們尚不確定,增加訪問大小能夠明顯改善這一情況(帶寬利用率從61% 提升至75% —詳見“Results:Hashrate”)但Vega 顯卡的功耗仍然過高。我們期待剛剛宣布的雙倍帶寬AMD Radeon VII 顯卡能在效率上有顯著改善。

我們預估HBM 的功率約為GDDR6 的一半,如果使用HBM 製造昂貴的Ethash ASIC 礦機,算力將超1 MH/s/W,這效率大約是市面上常規GPU 的4 倍。

12

問:ProgPoW ASIC 能有多高效率?

答:ProgPoW 旨在大幅減少專用ASIC 礦機的效率增益。該算法執行需滿足如下組件:

高帶寬存儲器(用於DAG 訪問)

Keccak f800 引擎(用於初始/最終哈希)

大型寄存器文件(用於混合狀態)

高吞吐量SIMD 整數學(用於隨機運算)

高吞吐量SIMD 緩存(用於隨機緩存訪問)

Keccak 容量變小,因此它在GPU 上的功耗也已經可以忽略不計了。這麼一來,ASIC 礦機在降低功耗方面的優勢也將不復存在。

為了執行隨機序列,ProgPoW ASIC 礦機需要執行和GPU 上的計算核心非常相似東西。所有SIMD 的寄存器訪問、數學運算和緩存訪問都需要類似GPU 的運行環境。

沒錯,ProgPoW ASIC ISA 能夠通過精確設計,使之匹配ProgPoW 算法,例如刪除浮點、增加顯式merge() 等操作。然而這種專業化只會提供少量的邊緣效益,而不是數量級的收益增加。

樂觀來說,我們假設精心設計的ProPoW ASIC ISA 可以移除1/4 計算核心功耗。由於GPU 內核在執行ProPoW 時要活躍得多,我們估計內存接口大約消耗GPU 功率的1/3。那麼使用GDDR 的Prop PoW ASIC 礦機相對功耗則為:

1/3 (內存) * 1 + 2/3 (計算) * 3/4 = 5/6

優勢為1.2 倍

若使用HBM,則ProgPoW ASIC 礦機的相對功耗則為:

1/3 (內存) * 1/2 + 2/3 (計算) * 3/4 = 2/3

優勢為1.5 倍

13

問:能在FPGA 上運行ProgPoW 嗎?

答:首先,在FPGA 上運行ProgPoW 存在實際問題。因為隨機程序每12.5 分鐘更改一次,因此需要經常編譯和加載新的比特流。完成此任務的工具和設施基本上不存在。

就算忽略這個問題,ProgPoW 也不能很好的映射到FPGA,FPGA 對於計算密集的算法(如Keccak 或Lyra)行之有效。通過將多個操作封裝到單個時鐘週期中,同時運行多個操作,這些算法可以顯著地提高性能和降低功耗。

ProgPoW 算法循環有許多在序列中交錯的緩存讀取,這極大地減少了可以打包到單個時鐘週期或併行運行的操作。在ProgPoW 算法下,FPGA 的打包操作既降低了挖礦硬件的性能,又增加了信息通道的長度。因為大型的混合狀態(16 lanes * 32 regs * 4 bytes = 2 kilobytes),增加的信息通道長度也成了一個問題。

如果沿每個信息通道階段性地複制此大混合狀態,則會浪費大量電能。當然,我們也可以把混合狀態存儲在寄存器文件中,讓FPGA 的計算核心看起來很像ASIC 或GPU,但那樣做的話, FPGA 的運算效率將顯低於ASIC。

14

問:以上所有問答貌似十分冗長,能簡單做個總結嗎?

答:當然

 

原文鏈接:

原文鏈接:


原文鏈接:

https://medium.com/@ifdefelse/progpow-faq-6d2dce8b5c8b

原作者: IfDefElse 翻譯&校對:有條魚

本文由礦視界翻譯整理編輯,如需轉載,請標明出處。




开发者
歡迎加入Odaily官方社群