diff options
Diffstat (limited to 'xmrstak/backend/cpu/autoAdjust.hpp')
-rw-r--r-- | xmrstak/backend/cpu/autoAdjust.hpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/xmrstak/backend/cpu/autoAdjust.hpp b/xmrstak/backend/cpu/autoAdjust.hpp index 294bc6f..7bdb14e 100644 --- a/xmrstak/backend/cpu/autoAdjust.hpp +++ b/xmrstak/backend/cpu/autoAdjust.hpp @@ -6,6 +6,7 @@ #include "xmrstak/jconf.hpp" #include "xmrstak/misc/configEditor.hpp" #include "xmrstak/params.hpp" +#include "xmrstak/backend/cryptonight.hpp" #include <string> #ifdef _WIN32 @@ -32,8 +33,21 @@ class autoAdjust { public: + size_t hashMemSize; + size_t halfHashMemSize; + autoAdjust() { + if(::jconf::inst()->IsCurrencyMonero()) + { + hashMemSize = MONERO_MEMORY; + halfHashMemSize = hashMemSize / 2u; + } + else + { + hashMemSize = AEON_MEMORY; + halfHashMemSize = hashMemSize / 2u; + } } bool printConfig() @@ -49,9 +63,9 @@ public: std::string conf; - if(!detectL3Size() || L3KB_size < 1024 || L3KB_size > 102400) + if(!detectL3Size() || L3KB_size < halfHashMemSize || L3KB_size > (halfHashMemSize * 100u)) { - if(L3KB_size < 1024 || L3KB_size > 102400) + if(L3KB_size < halfHashMemSize || L3KB_size > (halfHashMemSize * 100)) printer::inst()->print_msg(L0, "Autoconf failed: L3 size sanity check failed - %u KB.", L3KB_size); conf += std::string(" { \"low_power_mode\" : false, \"no_prefetch\" : true, \"affine_to_cpu\" : false },\n"); @@ -74,7 +88,7 @@ public: if(L3KB_size <= 0) break; - double_mode = L3KB_size / 2048 > (int32_t)(corecnt-i); + double_mode = L3KB_size / hashMemSize > (int32_t)(corecnt-i); conf += std::string(" { \"low_power_mode\" : "); conf += std::string(double_mode ? "true" : "false"); @@ -93,9 +107,9 @@ public: aff_id++; if(double_mode) - L3KB_size -= 4096; + L3KB_size -= hashMemSize * 2u; else - L3KB_size -= 2048; + L3KB_size -= hashMemSize; } } @@ -128,7 +142,7 @@ private: } L3KB_size = ((get_masked(cpu_info[1], 31, 22) + 1) * (get_masked(cpu_info[1], 21, 12) + 1) * - (get_masked(cpu_info[1], 11, 0) + 1) * (cpu_info[2] + 1)) / 1024; + (get_masked(cpu_info[1], 11, 0) + 1) * (cpu_info[2] + 1)) / halfHashMemSize; return true; } |