Improved HashFactor detection based on base variant

This commit is contained in:
Ben Gräf 2019-04-26 08:32:24 +02:00
parent ff4058a2a9
commit 6d0ebc610b
3 changed files with 34 additions and 6 deletions

View file

@ -94,13 +94,10 @@ void CpuImpl::optimizeParameters(size_t& threadsCount, size_t& hashFactor,
if (algo == Options::ALGO_CRYPTONIGHT_HEAVY || powVariant == POW_XFH) {
maximumReasonableHashFactor = 3;
} else if (algo == Options::ALGO_CRYPTONIGHT_ULTRALITE) {
if (m_asmOptimization == ASM_INTEL) {
maximumReasonableHashFactor = 2;
} else {
maximumReasonableHashFactor = 1;
}
} else if (getBaseVariant(powVariant) == POW_V2 || getBaseVariant(powVariant) == POW_V4) {
maximumReasonableHashFactor = 2;
}
if (safeMode) {
if (threadsCount > maximumReasonableThreadCount) {
threadsCount = maximumReasonableThreadCount;

View file

@ -340,6 +340,8 @@ constexpr static const char *pow_variant_names[] = {
"wow",
"r",
"xcash",
"zls",
"graft",
"upx2"
};

View file

@ -184,5 +184,34 @@ inline PowVariant parseVariant(const std::string variant)
return powVariant;
}
inline PowVariant getBaseVariant(PowVariant powVariant)
{
switch (powVariant)
{
case POW_V1:
case POW_XTL:
case POW_MSR:
case POW_RTO:
case POW_HOSP:
case POW_UPX:
return POW_V1;
case POW_V2:
case POW_TURTLE:
case POW_DOUBLE:
case POW_ZELERIUS:
case POW_RWZ:
case POW_UPX2:
case POW_FAST_2:
return POW_V2;
case POW_WOW:
case POW_V4:
return POW_V4;
default:
return POW_V0;
}
}
#endif /* __POW_VARIANT_H__ */