Merge xmrig v6.6.0 into master

This commit is contained in:
MoneroOcean 2020-11-23 15:09:11 +00:00
commit 54e736aaaa
29 changed files with 794 additions and 454 deletions

View file

@ -30,6 +30,7 @@
#include "backend/cpu/CpuWorker.h"
#include "base/tools/Chrono.h"
#include "core/config/Config.h"
#include "core/Miner.h"
#include "crypto/cn/CnCtx.h"
#include "crypto/cn/CryptoNight_test.h"
@ -52,6 +53,11 @@
#endif
#ifdef XMRIG_FEATURE_BENCHMARK
# include "backend/common/benchmark/BenchState.h"
#endif
namespace xmrig {
static constexpr uint32_t kReserveCount = 32768;
@ -85,6 +91,7 @@ xmrig::CpuWorker<N>::CpuWorker(size_t id, const CpuLaunchData &data) :
m_av(data.av()),
m_astrobwtMaxSize(data.astrobwtMaxSize * 1000),
m_miner(data.miner),
m_threads(data.threads),
m_benchSize(data.benchSize),
m_ctx()
{
@ -242,6 +249,19 @@ void xmrig::CpuWorker<N>::start()
current_job_nonces[i] = *m_job.nonce(i);
}
# ifdef XMRIG_FEATURE_BENCHMARK
if (m_benchSize) {
if (current_job_nonces[0] >= m_benchSize) {
return BenchState::done(m_benchData, m_benchDiff, Chrono::steadyMSecs());;
}
// Make each hash dependent on the previous one in single thread benchmark to prevent cheating with multiple threads
if (m_threads == 1) {
*(uint64_t*)(m_job.blob()) ^= m_benchData;
}
}
# endif
bool valid = true;
# ifdef XMRIG_ALGO_RANDOMX
@ -285,10 +305,7 @@ void xmrig::CpuWorker<N>::start()
if (m_benchSize) {
if (current_job_nonces[i] < m_benchSize) {
m_benchData ^= value;
}
else {
m_benchDoneTime = Chrono::steadyMSecs();
return;
m_benchDiff = std::max(m_benchDiff, Job::toDiff(value));
}
}
else
@ -392,6 +409,10 @@ void xmrig::CpuWorker<N>::consumeJob()
m_job.add(m_miner->job(), m_benchSize ? 1 : kReserveCount, Nonce::CPU);
# ifdef XMRIG_FEATURE_BENCHMARK
m_benchData = 0;
# endif
# ifdef XMRIG_ALGO_RANDOMX
if (m_job.currentJob().algorithm().family() == Algorithm::RANDOM_X) {
allocateRandomX_VM();