Updated MoBenchmark names
This commit is contained in:
parent
2cf2fcaf8c
commit
6b406cf82c
4 changed files with 22 additions and 28 deletions
|
@ -126,7 +126,7 @@ set(SOURCES_CRYPTO
|
|||
|
||||
if (WITH_BENCHMARK)
|
||||
list(APPEND SOURCES
|
||||
src/core/Benchmark.cpp
|
||||
src/core/MoBenchmark.cpp
|
||||
)
|
||||
add_definitions(/DXMRIG_FEATURE_BENCHMARK)
|
||||
endif()
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "core/Benchmark.h"
|
||||
#include "core/MoBenchmark.h"
|
||||
#include "3rdparty/rapidjson/document.h"
|
||||
#include "backend/common/Hashrate.h"
|
||||
#include "backend/common/interfaces/IBackend.h"
|
||||
|
@ -34,20 +34,20 @@
|
|||
|
||||
namespace xmrig {
|
||||
|
||||
Benchmark::Benchmark() : m_controller(nullptr), m_isNewBenchRun(true) {
|
||||
MoBenchmark::MoBenchmark() : m_controller(nullptr), m_isNewBenchRun(true) {
|
||||
for (BenchAlgo bench_algo = BenchAlgo::MIN; bench_algo != BenchAlgo::MAX; bench_algo = static_cast<BenchAlgo>(bench_algo + 1)) {
|
||||
m_bench_job[bench_algo] = new Job(false, Algorithm(ba2a[bench_algo]), "benchmark");
|
||||
}
|
||||
}
|
||||
|
||||
Benchmark::~Benchmark() {
|
||||
MoBenchmark::~MoBenchmark() {
|
||||
for (BenchAlgo bench_algo = BenchAlgo::MIN; bench_algo != BenchAlgo::MAX; bench_algo = static_cast<BenchAlgo>(bench_algo + 1)) {
|
||||
delete m_bench_job[bench_algo];
|
||||
}
|
||||
}
|
||||
|
||||
// start performance measurements from the first bench_algo
|
||||
void Benchmark::start() {
|
||||
void MoBenchmark::start() {
|
||||
JobResults::setListener(this, m_controller->config()->cpu().isHwAES()); // register benchmark as job result listener to compute hashrates there
|
||||
// write text before first benchmark round
|
||||
LOG_INFO("%s " BRIGHT_BLACK_BG(CYAN_BOLD_S " STARTING ALGO PERFORMANCE CALIBRATION (with " MAGENTA_BOLD_S "%i" CYAN_BOLD_S " seconds round) "), Tags::benchmark(), m_controller->config()->benchAlgoTime());
|
||||
|
@ -57,7 +57,7 @@ void Benchmark::start() {
|
|||
}
|
||||
|
||||
// end of benchmarks, switch to jobs from the pool (network), fill algo_perf
|
||||
void Benchmark::finish() {
|
||||
void MoBenchmark::finish() {
|
||||
for (Algorithm::Id algo = Algorithm::MIN; algo != Algorithm::MAX; algo = static_cast<Algorithm::Id>(algo + 1)) {
|
||||
algo_perf[algo] = get_algo_perf(algo);
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ void Benchmark::finish() {
|
|||
m_controller->start();
|
||||
}
|
||||
|
||||
rapidjson::Value Benchmark::toJSON(rapidjson::Document &doc) const
|
||||
rapidjson::Value MoBenchmark::toJSON(rapidjson::Document &doc) const
|
||||
{
|
||||
using namespace rapidjson;
|
||||
auto &allocator = doc.GetAllocator();
|
||||
|
@ -83,7 +83,7 @@ rapidjson::Value Benchmark::toJSON(rapidjson::Document &doc) const
|
|||
return obj;
|
||||
}
|
||||
|
||||
void Benchmark::read(const rapidjson::Value &value)
|
||||
void MoBenchmark::read(const rapidjson::Value &value)
|
||||
{
|
||||
for (Algorithm::Id algo = Algorithm::MIN; algo != Algorithm::MAX; algo = static_cast<Algorithm::Id>(algo + 1)) {
|
||||
algo_perf[algo] = 0.0f;
|
||||
|
@ -110,7 +110,7 @@ void Benchmark::read(const rapidjson::Value &value)
|
|||
}
|
||||
}
|
||||
|
||||
double Benchmark::get_algo_perf(Algorithm::Id algo) const {
|
||||
double MoBenchmark::get_algo_perf(Algorithm::Id algo) const {
|
||||
switch (algo) {
|
||||
case Algorithm::CN_CCX: return m_bench_algo_perf[BenchAlgo::CN_CCX];
|
||||
case Algorithm::CN_0: return m_bench_algo_perf[BenchAlgo::CN_CCX] / 2;
|
||||
|
@ -132,21 +132,19 @@ double Benchmark::get_algo_perf(Algorithm::Id algo) const {
|
|||
case Algorithm::CN_PICO_0: return m_bench_algo_perf[BenchAlgo::CN_PICO_0];
|
||||
case Algorithm::CN_PICO_TLO: return m_bench_algo_perf[BenchAlgo::CN_PICO_0];
|
||||
case Algorithm::CN_GPU: return m_bench_algo_perf[BenchAlgo::CN_GPU];
|
||||
case Algorithm::AR2_CHUKWA: return m_bench_algo_perf[BenchAlgo::AR2_CHUKWA];
|
||||
case Algorithm::AR2_WRKZ: return m_bench_algo_perf[BenchAlgo::AR2_WRKZ];
|
||||
case Algorithm::AR2_CHUKWA_V2: return m_bench_algo_perf[BenchAlgo::AR2_CHUKWA_V2];
|
||||
case Algorithm::ASTROBWT_DERO: return m_bench_algo_perf[BenchAlgo::ASTROBWT_DERO];
|
||||
case Algorithm::RX_0: return m_bench_algo_perf[BenchAlgo::RX_0];
|
||||
case Algorithm::RX_SFX: return m_bench_algo_perf[BenchAlgo::RX_0];
|
||||
case Algorithm::RX_WOW: return m_bench_algo_perf[BenchAlgo::RX_WOW];
|
||||
case Algorithm::RX_ARQ: return m_bench_algo_perf[BenchAlgo::RX_ARQ];
|
||||
case Algorithm::RX_KEVA: return m_bench_algo_perf[BenchAlgo::RX_KEVA];
|
||||
case Algorithm::RX_XLA: return m_bench_algo_perf[BenchAlgo::RX_XLA];
|
||||
default: return 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
// start performance measurements for specified perf bench_algo
|
||||
void Benchmark::start(const BenchAlgo bench_algo) {
|
||||
void MoBenchmark::start(const BenchAlgo bench_algo) {
|
||||
// calculate number of active miner backends in m_enabled_backend_count
|
||||
m_enabled_backend_count = 0;
|
||||
const Algorithm algo(ba2a[bench_algo]);
|
||||
|
@ -173,7 +171,7 @@ void Benchmark::start(const BenchAlgo bench_algo) {
|
|||
}
|
||||
|
||||
// run next bench algo or finish benchmark for the last one
|
||||
void Benchmark::run_next_bench_algo(const BenchAlgo bench_algo) {
|
||||
void MoBenchmark::run_next_bench_algo(const BenchAlgo bench_algo) {
|
||||
const BenchAlgo next_bench_algo = static_cast<BenchAlgo>(bench_algo + 1); // compute next perf bench_algo to benchmark
|
||||
if (next_bench_algo != BenchAlgo::MAX) {
|
||||
start(next_bench_algo);
|
||||
|
@ -182,7 +180,7 @@ void Benchmark::run_next_bench_algo(const BenchAlgo bench_algo) {
|
|||
}
|
||||
}
|
||||
|
||||
void Benchmark::onJobResult(const JobResult& result) {
|
||||
void MoBenchmark::onJobResult(const JobResult& result) {
|
||||
if (result.clientId != String("benchmark")) { // switch to network pool jobs
|
||||
JobResults::setListener(m_controller->network(), m_controller->config()->cpu().isHwAES());
|
||||
static_cast<IJobResultListener*>(m_controller->network())->onJobResult(result);
|
||||
|
@ -221,7 +219,7 @@ void Benchmark::onJobResult(const JobResult& result) {
|
|||
}
|
||||
}
|
||||
|
||||
uint64_t Benchmark::get_now() const { // get current time in ms
|
||||
uint64_t MoBenchmark::get_now() const { // get current time in ms
|
||||
using namespace std::chrono;
|
||||
return time_point_cast<milliseconds>(high_resolution_clock::now()).time_since_epoch().count();
|
||||
}
|
|
@ -28,7 +28,7 @@ class Controller;
|
|||
class Miner;
|
||||
class Job;
|
||||
|
||||
class Benchmark : public IJobResultListener {
|
||||
class MoBenchmark : public IJobResultListener {
|
||||
|
||||
enum BenchAlgo : int {
|
||||
CN_R, // "cn/r" CryptoNightR (Monero's variant 4).
|
||||
|
@ -38,13 +38,11 @@ class Benchmark : public IJobResultListener {
|
|||
CN_PICO_0, // "cn-pico" CryptoNight-Pico.
|
||||
CN_CCX, // "cn/ccx" Conceal (CCX).
|
||||
CN_GPU, // "cn/gpu" CryptoNight-GPU (Ryo).
|
||||
AR2_CHUKWA, // "argon2/chukwa" Argon2id (Chukwa).
|
||||
AR2_WRKZ, // "argon2/wrkz" Argon2id (WRKZ).
|
||||
AR2_CHUKWA_V2, // "argon2/chukwav2" Argon2id (Chukwa v2).
|
||||
ASTROBWT_DERO, // "astrobwt" AstroBWT (Dero).
|
||||
RX_0, // "rx/0" RandomX (Monero).
|
||||
RX_WOW, // "rx/wow" RandomWOW (Wownero).
|
||||
RX_ARQ, // "rx/arq" RandomARQ (Arqma).
|
||||
RX_KEVA, // "rx/keva" RandomKEVA (Keva).
|
||||
RX_XLA, // "panthera" Panthera (Scala2).
|
||||
MAX,
|
||||
MIN = 0,
|
||||
|
@ -59,13 +57,11 @@ class Benchmark : public IJobResultListener {
|
|||
Algorithm::CN_PICO_0,
|
||||
Algorithm::CN_CCX,
|
||||
Algorithm::CN_GPU,
|
||||
Algorithm::AR2_CHUKWA,
|
||||
Algorithm::AR2_WRKZ,
|
||||
Algorithm::AR2_CHUKWA_V2,
|
||||
Algorithm::ASTROBWT_DERO,
|
||||
Algorithm::RX_0,
|
||||
Algorithm::RX_WOW,
|
||||
Algorithm::RX_ARQ,
|
||||
Algorithm::RX_KEVA,
|
||||
Algorithm::RX_XLA,
|
||||
};
|
||||
|
||||
|
@ -74,7 +70,7 @@ class Benchmark : public IJobResultListener {
|
|||
|
||||
Controller* m_controller; // to get access to config and network
|
||||
bool m_isNewBenchRun; // true if benchmark is need to be executed or was executed
|
||||
Benchmark::BenchAlgo m_bench_algo; // current perf algo we benchmark
|
||||
MoBenchmark::BenchAlgo m_bench_algo; // current perf algo we benchmark
|
||||
uint64_t m_hash_count; // number of hashes calculated for current perf algo
|
||||
uint64_t m_time_start; // time of the first resultt for current perf algo (in ms)
|
||||
uint64_t m_bench_start; // time of measurements start for current perf algo (in ms) after all backends are started
|
||||
|
@ -83,14 +79,14 @@ class Benchmark : public IJobResultListener {
|
|||
|
||||
uint64_t get_now() const; // get current time in ms
|
||||
double get_algo_perf(Algorithm::Id algo) const; // get algo perf based on m_bench_algo_perf
|
||||
void start(const Benchmark::BenchAlgo); // start benchmark for specified perf algo
|
||||
void start(const MoBenchmark::BenchAlgo); // start benchmark for specified perf algo
|
||||
void finish(); // end of benchmarks, switch to jobs from the pool (network), fill algo_perf
|
||||
void onJobResult(const JobResult&) override; // onJobResult is called after each computed benchmark hash
|
||||
void run_next_bench_algo(BenchAlgo); // run next bench algo or finish benchmark for the last one
|
||||
|
||||
public:
|
||||
Benchmark();
|
||||
virtual ~Benchmark();
|
||||
MoBenchmark();
|
||||
virtual ~MoBenchmark();
|
||||
|
||||
void set_controller(Controller* controller) { m_controller = controller; }
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
#include "base/kernel/config/BaseConfig.h"
|
||||
#include "base/tools/Object.h"
|
||||
#ifdef XMRIG_FEATURE_BENCHMARK
|
||||
#include "core/Benchmark.h"
|
||||
#include "core/MoBenchmark.h"
|
||||
#endif
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue