2014-01-25 86 views
3

我正在爲只有32KB內存的處理器開發Litecoin Miner。所以我在看SCrypt算法,對於Litecoin它使用N = 1024,這給我2^10 * 1 * 128 = 128KB內存使用aproximate。SCrypt Lookup Gap Negative Effect

所以我正在研究具有參數查找間隙的GPU算法。對於閱讀我使用從CudaMiner開普勒代碼: https://github.com/cbuchner1/CudaMiner/blob/master/kepler_kernel.cu(行535)

所以我明白,查找差距是CPU和內存之間的折衷。所以越高,CPU使用率越高,記憶力越低。我不明白的是它是如何工作的。

在代碼中,我有

int pos = c_N_1/LOOKUP_GAP, loop = 1 + (c_N_1-pos*LOOKUP_GAP); 

這將使它看起來暫存器每LOOKUP_GAP字節(如果2,這將是0,2,4,6,8,10),但如果是算法的CPU使用越多?

我的實現不會高度優化,就像嘗試運行

我還看到了一個使用插值的FPGA實現(https://github.com/kramble/FPGA-Litecoin-Miner),這對我來說更奇怪。我不知道他們如何能夠在暫存器中對值進行插值。

謝謝!

回答

2

如果您未選擇預先計算的條目,則會增加CPU使用率。使用LOOKUP 2計算0-1023,但只能存儲0,2,4等...因此,如果您需要用於臨時填充條目3的數據,則必須使用2中的數據實時計算。是一個額外的計算,而不是永久存儲它們。隨着查找間隔增加,您將執行的動態計算量將增加。

+0

哦,這很有道理!我想我現在明白了。謝謝! :d –