楼主:
nhnc (nhnc)
2017-07-01 23:17:40在我上一篇文章(#1PJeJdA6)中,
最后有提到想尝试更改他默认每个Core使用2M cache的设定。
即更改crypto/cryptonight.h中,
#define MEMORY 2097152的设定。
但无论怎么改执行时都会被他的self_test档下来,
后来感谢yshihyu板友来信提到,
他的self_test函数是放在crypto/cryptonight_common.cpp里面。
所以我索性后面那段if给注解掉,
这样我就可以慢慢更改define MEMORY数值来测试,
而测试的结果让我相当意外。
更新:
但是最新的结果发现,这样更改后,
送出的结果会变成Invalid Shares。
我以一台只使用5 Cores在跑的i7-4930k来测试,
(因为这台6 Core全开会变慢),
我把define MEMORY数值加大会变慢,
变小反而变快。结果如下:
设定值 速度(H/s)
2097152 435
1048576 448
524288 454
262144 458
131072 460
65536 460
32768 461
16384 461
可以看到其值是慢慢收敛,到16384以下几乎不变了。
同时得到几个结论:
1. 我在另一台i7-5930k(使用6 Core,并把第一个Core使用的cache加倍)
的电脑上得到相同的结果,将define MEMORY数值由2097152改为16384后,
速度由559 H/s变为580 H/s。
2. 本来我的想法是要使用掉剩余的cache,但结果看来完全不影响本来的
config.txt设定。本来该使用几个Core最快? 哪个Core使用的cache要
加倍? 测试的结果最佳化的设定都还是跟原本一样不变。
3. 根据第二点,因此我猜测,define MEMORY的设定值跟cache无关。
4. yshihyu版友另外有提到,在crypto/cryptonight_common.cpp中
有段ptr->long_state = (uint8_t*)_mm_malloc(MEMORY, 2*1024*1024);
这个疑似才是跟cache的配置有关,但我目前测试结果更动此设定值
都还看不出差别,不知道是否有人可以提供一些想法?
谢谢。