文章出于:http://wangxiaoming.com/blog/2016/07/18/e20/
算法是內(nèi)存難解的,為了使DAG適合內(nèi)存,每個GPU需要1-2GB內(nèi)存,如果你得到錯誤提示:Error GPU mining. GPU memory fragmentation? 說明你沒有足夠的內(nèi)存。GPU挖礦軟件是基于OpenCL實(shí)現(xiàn)的,AMD GPU會比同一水準(zhǔn)的NVIDIA GPU更快。ASIC和FPGA相對低效因而被阻攔。要給芯片集成平臺獲取openCL,嘗試:
對于這個快速指南,你會需要Ubuntu 14.04或15.04以及fglrx圖像驅(qū)動器。你也可以使用NVidia驅(qū)動器和其他平臺,但是你必須要找到自己的方式來獲得有效的OpenCL安裝,比如Genoil的ethminer分叉。
如果你在用15.04,到"軟件與更新〉額外的驅(qū)動器"設(shè)置為"從fglrx為AMD圖形加速器使用視頻驅(qū)動器"。
如果你在用14.04,到"軟件與更新〉額外的驅(qū)動器"設(shè)置為"從fglrx為AMD圖形加速器使用視頻驅(qū)動器"。很遺憾,對于一些人來說,這種方法可能不管用,因?yàn)閁buntu 14.04.02中有個已知的程序錯誤會阻止你轉(zhuǎn)換到GPU挖礦所必須的專屬圖形驅(qū)動器。
所以,如果你遇到這個程序錯誤,先到"軟件與更新〉更新"選擇"預(yù)發(fā)行的可靠更新提議"。然后,回到"軟件與更新〉額外的驅(qū)動器"設(shè)置為"從fglrx為AMD圖形加速器使用視頻驅(qū)動器"。重啟之后,值得檢查一下現(xiàn)在確實(shí)正確安裝了驅(qū)動器(例如通過再到"額外驅(qū)動器")。
不管做什么,如果你在用14.04.02,一旦安裝之后,就不要改變驅(qū)動器或者驅(qū)動器配置。例如,aticonfig –initial的使用(尤其是-f, –force選項(xiàng))會"破壞"你的設(shè)置。如果你偶然改變了配置,會需要卸載驅(qū)動器,重啟,再次安裝驅(qū)動器并重啟。
wget http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.29_mac.pkg
sudo installer -pkg ~/Desktop/cuda_7.0.29_mac.pkg -target /
brew update
brew tap ethereum/ethereum
brew reinstall cpp-ethereum --with-gpu-mining --devel --headless --build-from-source
查看冷卻狀態(tài):
aticonfig --adapter=0 --od-gettemperature
下載最新的Eth++安裝,在安裝界面的"選擇組件"頁面選擇ethminer。
http://wiki.jikexueyuan.com/project/ethereum/images/e20.png" alt="20" />
eth account new // Set-up ethereum account if you do not have one
geth --rpc --rpccorsdomain localhost 2>> geth.log &
ethminer -G // -G for GPU, -M for benchmark
tail -f geth.log
ethminer在端口8545(geth的默認(rèn)RPC端口)和geth溝通。你可以通過給geth—rpcport選項(xiàng)來改變這種情況。ethminer會在任何端口發(fā)現(xiàn)geth。注意你需要用—rpccorsdomain localhos設(shè)置CORS標(biāo)題。你也可以用-Fhttp://127.0.0.1:3301
在ethminer設(shè)置端口。如果你想要在同一個電腦上挖幾個實(shí)例,設(shè)置端口是必需的,盡管有些沒有意義。如果你在私有鏈上測試,我們推薦你用CPU挖掘代替。
注意:你不需要把—mine選項(xiàng)給geth,或者在控制臺開啟挖礦,除非你想要在GPU挖掘頂端做CPU挖掘。
如果ethminer的默認(rèn)無效,試試用—opencl-device X來規(guī)定OpenCL裝置,其中X是{0, 1, 2,…}。用-M(基礎(chǔ)測試程序)運(yùn)行ethminer時,你會看到這樣的文字:
Benchmarking on platform: { "platform": "NVIDIA CUDA", "device": "GeForce GTX 750 Ti", "version": "OpenCL 1.1 CUDA" }
Benchmarking on platform: { "platform": "Apple", "device": "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.7
為geth排錯:
geth --rpccorsdomain "localhost" --verbosity 6 2>> geth.log
為礦工排錯:
make -DCMAKE_BUILD_TYPE=Debug -DETHASHCL=1 -DGUI=0
gdb --args ethminer -G -M
注意:GPU挖礦時,散列率信息在geth上不可用。
用ethminer檢查散列率,miner.hashrate總會報告0。
為了在單獨(dú)的GPU上挖礦,只需要用以下參數(shù)運(yùn)行eth:
eth -v 1 -a 0xcadb3223d4eebcaa7b40ec5722967ced01cfc8f2 --client-name "OPTIONALNAMEHERE" -x 50 -m
客戶端運(yùn)行時,你可以用geth附屬或[ethconsole]和它互動(https://github.com/ethereum/ethereum-console)。
用多個GPU和eth挖礦與用geth和多個GPU挖礦十分相似。確保eth節(jié)點(diǎn)和正確設(shè)置的coinbase地址一起運(yùn)行: eth -v 1 -a 0xcadb3223d4eebcaa7b40ec5722967ced01cfc8f2 —client-name "OPTIONALNAMEHERE" -x 50 -j
注意我們也添加了-j參數(shù)以使客戶端有可用的JSON-RPC服務(wù)器與ethminer實(shí)例溝通。此外由于ethminer可以為我們挖礦,我們移除了與挖礦相關(guān)的參數(shù)。每個GPU都會執(zhí)行一個不同的ethminer實(shí)例:
ethminer --no-precompute -G --opencl-device X
X是索引號碼,與你想ethminer用{0, 1, 2,…}的OpenCL裝置一致。為了輕松獲取OpenCL裝置列表,你可以執(zhí)行ethminer —list-devices,它會提供一個OpenCL可以檢測到的所有裝置,以及每個裝置的一些附加信息。
下面是一個樣本輸出:
[0] GeForce GTX 770
CL_DEVICE_TYPE: GPU
CL_DEVICE_GLOBAL_MEM_SIZE: 4286345216
CL_DEVICE_MAX_MEM_ALLOC_SIZE: 1071586304
CL_DEVICE_MAX_WORK_GROUP_SIZE: 1024
最終—no-precompute參數(shù)請求ethiminers不要提前創(chuàng)建下一個epoch的DAG。盡管不推薦這樣,因?yàn)槊看蝒poch過渡的時候,你都會有一個挖礦中斷。
挖礦能力通常以內(nèi)存帶寬衡量。我們的實(shí)現(xiàn)寫在OpenCL上,很典型地在NVidia上被AMD GPU支持得更好。實(shí)驗(yàn)證據(jù)確認(rèn)了在價格方面,AMD GPU比對應(yīng)的NVidia挖礦表現(xiàn)更好。
用基準(zhǔn)程序測試單一裝置設(shè)置,你可以在基準(zhǔn)測試程序模式下通過-M使用ethminer。
ethminer -G -M
如果你有很多裝置,你會喜歡分別用基準(zhǔn)程序測試,可以用–opencl-device選項(xiàng),與之前章節(jié)相似: ethminer -G -M —opencl-device X 用ethminer —list-devices來列出可能的數(shù)字替代X {0, 1, 2,…}。 開始在Windows上挖礦,首先要下載geth windows binary。
此時可能會出現(xiàn)一些問題。如果有錯誤發(fā)生, 可以輸入Ctrl+C來中斷礦工。如果錯誤顯示(提示)"內(nèi)存不足",就說明沒有足夠的GPU內(nèi)存來挖以太幣。
礦池挖礦是旨在通過聯(lián)合參與礦工的挖礦力來解決預(yù)期收益問題的合作社(挖礦的礦工的算力來解決預(yù)期收益問題的合作組織)。作為回報,通常收取0-5%的挖礦獎勵。挖礦池從中央賬戶用工作量證明提交區(qū)塊并按照參與人貢獻(xiàn)的挖礦力比例來重新分配獎勵。
警告:大多數(shù)挖礦池包含第三方,中心組件,意味著他們是不需信任的。換言之,挖礦池操作人可以把你的收入拿走。謹(jǐn)慎操作。有很多具備開源數(shù)據(jù)庫、不需信任的、去中心化的挖礦池。
警告:挖礦池只會外包工作量證明運(yùn)算,他們不會使區(qū)塊生效或運(yùn)行虛擬機(jī)來檢查執(zhí)行交易帶來的狀態(tài)過渡。 這能有效地使挖礦池在安全方面像單個節(jié)點(diǎn)一樣表現(xiàn),他們的增長會造成51%攻擊的中心化威脅。確保遵守網(wǎng)絡(luò)能力分配,不要讓挖礦池長得太大。
文章中的列表對應(yīng)的鏈接可以參考《Ethereum Homestead Documentation》第67頁1.6.4 GPU mining