当内存足够时,为什么`lookup_gap = 2`比`lookup_gap = 1`更快

时间:2014-01-02 13:31:06

标签: opencl gpu scrypt

我正在使用具有2G全局内存的AMD Radeon HD7850挖掘Litecoins,我的配置如下:

thread-concurrency=4096
lookup-gap=2

在阅读scrypt130511.cl的算法后,我发现查找间隙用于时间记忆权衡。

当loopup-gap为2时消耗512MB全局内存,而当loopup-gap为1时消耗1GB全局内存。

但是在将lookup-gap更改为1之后,哈希值从320K降至300K。为什么计算量较少时会慢一些?

2 个答案:

答案 0 :(得分:2)

这基本上是CPU和内存的权衡因素。所以你需要考虑几个因素。 使用暂存器的lookupgap混乱,每个hasher固定为128KB(用于Litecoin挖掘)。所以基本上你的GPU为每个核心都有一个小的本地内存,具有非常高的带宽和大的全局内存。 (您可以在此处查看有关GPU内存拱的更多信息:http://www.microway.com/hpc-tech-tips/gpu-memory-types-performance-comparison/

基本上,在暂存器上的操作是巨大的,如果你有更好的带宽,你将有更多的速度。所以可能正在发生的事情是暂存器不适合你的本地内存,但当你把lookup-gap = 2时,你得到一半的大小,所以它在本地内存上适合更多之前,所以GPU可以使这些操作在本地。

另一方面,当您使用GPU的所有内核时,共享内存会出现问题:它们不能同时在内存中进行读/写操作。而对于本地内存,GPU的每个处理器都有自己的处理器,所以它们都可以在便笺簿上进行大量的读/写操作。

这是一个可以使哈希值下降的因素,但不一定是这样。有很多因素可以改变您的哈希率。我希望它有所帮助:D

答案 1 :(得分:0)

也许是因为还有其他因素,比如内存访问时间和内存带宽?