diff --git a/src/backend/common/GpuWorker.cpp b/src/backend/common/GpuWorker.cpp new file mode 100644 index 00000000..5a9c3d13 --- /dev/null +++ b/src/backend/common/GpuWorker.cpp @@ -0,0 +1,52 @@ +/* XMRig + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include "backend/common/GpuWorker.h" +#include "base/tools/Chrono.h" + + +xmrig::GpuWorker::GpuWorker(size_t id, int64_t affinity, int priority, uint32_t deviceIndex) : Worker(id, affinity, priority), + m_deviceIndex(deviceIndex) +{ +} + + +void xmrig::GpuWorker::storeStats() +{ + // Get index which is unused now + const uint32_t index = m_index.load(std::memory_order_relaxed) ^ 1; + + // Fill in the data for that index + m_hashCount[index] = m_count; + m_timestamp[index] = Chrono::steadyMSecs(); + + // Switch to that index + // All data will be in memory by the time it completes thanks to std::memory_order_seq_cst + m_index.fetch_xor(1, std::memory_order_seq_cst); +} + + +void xmrig::GpuWorker::hashrateData(uint64_t &hashCount, uint64_t &timeStamp, uint64_t &rawHashes) const +{ + const uint32_t index = m_index.load(std::memory_order_relaxed); + + rawHashes = m_hashrateData.interpolate(timeStamp); + hashCount = m_hashCount[index]; + timeStamp = m_timestamp[index]; +} diff --git a/src/backend/common/GpuWorker.h b/src/backend/common/GpuWorker.h new file mode 100644 index 00000000..3c828e52 --- /dev/null +++ b/src/backend/common/GpuWorker.h @@ -0,0 +1,58 @@ +/* XMRig + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef XMRIG_GPUWORKER_H +#define XMRIG_GPUWORKER_H + + +#include + + +#include "backend/common/HashrateInterpolator.h" +#include "backend/common/Worker.h" + + +namespace xmrig { + + +class GpuWorker : public Worker +{ +public: + GpuWorker(size_t id, int64_t affinity, int priority, uint32_t m_deviceIndex); + +protected: + inline const VirtualMemory *memory() const override { return nullptr; } + inline uint32_t deviceIndex() const { return m_deviceIndex; } + + void hashrateData(uint64_t &hashCount, uint64_t &timeStamp, uint64_t &rawHashes) const override; + +protected: + void storeStats(); + + const uint32_t m_deviceIndex; + HashrateInterpolator m_hashrateData; + std::atomic m_index = {}; + uint64_t m_hashCount[2] = {}; + uint64_t m_timestamp[2] = {}; +}; + + +} // namespace xmrig + + +#endif /* XMRIG_GPUWORKER_H */ diff --git a/src/backend/common/HashrateInterpolator.cpp b/src/backend/common/HashrateInterpolator.cpp index 2edda6a6..0ac11514 100644 --- a/src/backend/common/HashrateInterpolator.cpp +++ b/src/backend/common/HashrateInterpolator.cpp @@ -1,10 +1,4 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , * Copyright 2018-2020 SChernykh * Copyright 2016-2020 XMRig , * diff --git a/src/backend/common/HashrateInterpolator.h b/src/backend/common/HashrateInterpolator.h index b4c7b8c7..65e62443 100644 --- a/src/backend/common/HashrateInterpolator.h +++ b/src/backend/common/HashrateInterpolator.h @@ -1,10 +1,4 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , * Copyright 2018-2020 SChernykh * Copyright 2016-2020 XMRig , * @@ -47,7 +41,7 @@ public: private: // Buffer of hashrate counters, used for linear interpolation of past data mutable std::mutex m_lock; - std::deque> m_data; + std::deque > m_data; }; diff --git a/src/backend/common/Worker.cpp b/src/backend/common/Worker.cpp index cf244ab3..b24ac280 100644 --- a/src/backend/common/Worker.cpp +++ b/src/backend/common/Worker.cpp @@ -1,13 +1,6 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2018 Lee Clagett - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,7 +19,6 @@ #include "backend/common/Worker.h" #include "base/kernel/Platform.h" -#include "base/tools/Chrono.h" #include "crypto/common/VirtualMemory.h" @@ -39,27 +31,3 @@ xmrig::Worker::Worker(size_t id, int64_t affinity, int priority) : Platform::trySetThreadAffinity(affinity); Platform::setThreadPriority(priority); } - - -void xmrig::Worker::storeStats() -{ - // Get index which is unused now - const uint32_t index = m_index.load(std::memory_order_relaxed) ^ 1; - - // Fill in the data for that index - m_hashCount[index] = m_count; - m_timestamp[index] = Chrono::steadyMSecs(); - - // Switch to that index - // All data will be in memory by the time it completes thanks to std::memory_order_seq_cst - m_index.fetch_xor(1, std::memory_order_seq_cst); -} - - -void xmrig::Worker::getHashrateData(uint64_t& hashCount, uint64_t& timeStamp) const -{ - const uint32_t index = m_index.load(std::memory_order_relaxed); - - hashCount = m_hashCount[index]; - timeStamp = m_timestamp[index]; -} diff --git a/src/backend/common/Worker.h b/src/backend/common/Worker.h index 23c592b9..f4c12ea5 100644 --- a/src/backend/common/Worker.h +++ b/src/backend/common/Worker.h @@ -1,13 +1,6 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2018 Lee Clagett - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,9 +20,6 @@ #define XMRIG_WORKER_H -#include - - #include "backend/common/interfaces/IWorker.h" @@ -41,23 +31,17 @@ class Worker : public IWorker public: Worker(size_t id, int64_t affinity, int priority); - inline const VirtualMemory *memory() const override { return nullptr; } - inline size_t id() const override { return m_id; } - inline uint64_t rawHashes() const override { return m_count; } - inline void jobEarlyNotification(const Job&) override {} - - void getHashrateData(uint64_t& hashCount, uint64_t& timeStamp) const override; - protected: - void storeStats(); + inline int64_t affinity() const { return m_affinity; } + inline size_t id() const override { return m_id; } + inline uint32_t node() const { return m_node; } + uint64_t m_count = 0; + +private: const int64_t m_affinity; const size_t m_id; - std::atomic m_index = {}; uint32_t m_node = 0; - uint64_t m_count = 0; - uint64_t m_hashCount[2] = {}; - uint64_t m_timestamp[2] = {}; }; diff --git a/src/backend/common/Workers.cpp b/src/backend/common/Workers.cpp index e9416776..8155c6fa 100644 --- a/src/backend/common/Workers.cpp +++ b/src/backend/common/Workers.cpp @@ -58,20 +58,6 @@ public: }; -template -inline static void getHashrateData(IWorker *worker, uint64_t &hashCount, uint64_t &timeStamp) -{ - worker->getHashrateData(hashCount, timeStamp); -} - - -template<> -inline void getHashrateData(IWorker *worker, uint64_t &hashCount, uint64_t &) -{ - hashCount = worker->rawHashes(); -} - - } // namespace xmrig @@ -100,19 +86,20 @@ bool xmrig::Workers::tick(uint64_t) uint64_t ts = Chrono::steadyMSecs(); bool totalAvailable = true; uint64_t totalHashCount = 0; + uint64_t hashCount = 0; + uint64_t rawHashes = 0; for (Thread *handle : m_workers) { IWorker *worker = handle->worker(); if (worker) { - uint64_t hashCount; - getHashrateData(worker, hashCount, ts); + worker->hashrateData(hashCount, ts, rawHashes); d_ptr->hashrate->add(handle->id() + 1, hashCount, ts); - const uint64_t n = worker->rawHashes(); - if (n == 0) { + if (rawHashes == 0) { totalAvailable = false; } - totalHashCount += n; + + totalHashCount += rawHashes; } } diff --git a/src/backend/common/common.cmake b/src/backend/common/common.cmake index 95c72440..52a5ee6f 100644 --- a/src/backend/common/common.cmake +++ b/src/backend/common/common.cmake @@ -1,6 +1,5 @@ set(HEADERS_BACKEND_COMMON src/backend/common/Hashrate.h - src/backend/common/HashrateInterpolator.h src/backend/common/Tags.h src/backend/common/interfaces/IBackend.h src/backend/common/interfaces/IRxListener.h @@ -16,7 +15,6 @@ set(HEADERS_BACKEND_COMMON set(SOURCES_BACKEND_COMMON src/backend/common/Hashrate.cpp - src/backend/common/HashrateInterpolator.cpp src/backend/common/Threads.cpp src/backend/common/Worker.cpp src/backend/common/Workers.cpp @@ -35,3 +33,16 @@ if (WITH_RANDOMX AND WITH_BENCHMARK) src/backend/common/benchmark/BenchState.cpp ) endif() + + +if (WITH_OPENCL OR WITH_CUDA) + list(APPEND HEADERS_BACKEND_COMMON + src/backend/common/HashrateInterpolator.h + src/backend/common/GpuWorker.h + ) + + list(APPEND SOURCES_BACKEND_COMMON + src/backend/common/HashrateInterpolator.cpp + src/backend/common/GpuWorker.cpp + ) +endif() diff --git a/src/backend/common/interfaces/IWorker.h b/src/backend/common/interfaces/IWorker.h index 114f545d..7ed6ff00 100644 --- a/src/backend/common/interfaces/IWorker.h +++ b/src/backend/common/interfaces/IWorker.h @@ -42,14 +42,13 @@ public: IWorker() = default; virtual ~IWorker() = default; - virtual bool selfTest() = 0; - virtual const VirtualMemory *memory() const = 0; - virtual size_t id() const = 0; - virtual size_t intensity() const = 0; - virtual uint64_t rawHashes() const = 0; - virtual void getHashrateData(uint64_t &hashCount, uint64_t &timeStamp) const = 0; - virtual void jobEarlyNotification(const Job &job) = 0; - virtual void start() = 0; + virtual bool selfTest() = 0; + virtual const VirtualMemory *memory() const = 0; + virtual size_t id() const = 0; + virtual size_t intensity() const = 0; + virtual void hashrateData(uint64_t &hashCount, uint64_t &timeStamp, uint64_t &rawHashes) const = 0; + virtual void jobEarlyNotification(const Job &job) = 0; + virtual void start() = 0; }; diff --git a/src/backend/cpu/CpuWorker.cpp b/src/backend/cpu/CpuWorker.cpp index 778f8e46..f55d153c 100644 --- a/src/backend/cpu/CpuWorker.cpp +++ b/src/backend/cpu/CpuWorker.cpp @@ -1,13 +1,6 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2018 Lee Clagett - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -80,7 +73,7 @@ xmrig::CpuWorker::CpuWorker(size_t id, const CpuLaunchData &data) : m_threads(data.threads), m_ctx() { - m_memory = new VirtualMemory(m_algorithm.l3() * N, data.hugePages, false, true, m_node); + m_memory = new VirtualMemory(m_algorithm.l3() * N, data.hugePages, false, true, node()); } @@ -100,7 +93,7 @@ xmrig::CpuWorker::~CpuWorker() template void xmrig::CpuWorker::allocateRandomX_VM() { - RxDataset *dataset = Rx::dataset(m_job.currentJob(), m_node); + RxDataset *dataset = Rx::dataset(m_job.currentJob(), node()); while (dataset == nullptr) { std::this_thread::sleep_for(std::chrono::milliseconds(200)); @@ -109,13 +102,13 @@ void xmrig::CpuWorker::allocateRandomX_VM() return; } - dataset = Rx::dataset(m_job.currentJob(), m_node); + dataset = Rx::dataset(m_job.currentJob(), node()); } if (!m_vm) { // Try to allocate scratchpad from dataset's 1 GB huge pages, if normal huge pages are not available uint8_t* scratchpad = m_memory->isHugePages() ? m_memory->scratchpad() : dataset->tryAllocateScrathpad(); - m_vm = RxVm::create(dataset, scratchpad ? scratchpad : m_memory->scratchpad(), !m_hwAES, m_assembly, m_node); + m_vm = RxVm::create(dataset, scratchpad ? scratchpad : m_memory->scratchpad(), !m_hwAES, m_assembly, node()); } } #endif @@ -189,6 +182,14 @@ bool xmrig::CpuWorker::selfTest() } +template +void xmrig::CpuWorker::hashrateData(uint64_t &hashCount, uint64_t &, uint64_t &rawHashes) const +{ + hashCount = m_count; + rawHashes = m_count; +} + + template void xmrig::CpuWorker::start() { diff --git a/src/backend/cpu/CpuWorker.h b/src/backend/cpu/CpuWorker.h index 06c92fa4..785763af 100644 --- a/src/backend/cpu/CpuWorker.h +++ b/src/backend/cpu/CpuWorker.h @@ -1,13 +1,6 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2018 Lee Clagett - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -56,10 +49,12 @@ public: protected: bool selfTest() override; + void hashrateData(uint64_t &hashCount, uint64_t &timeStamp, uint64_t &rawHashes) const override; void start() override; - inline const VirtualMemory *memory() const override { return m_memory; } - inline size_t intensity() const override { return N; } + inline const VirtualMemory *memory() const override { return m_memory; } + inline size_t intensity() const override { return N; } + inline void jobEarlyNotification(const Job&) override {} private: inline cn_hash_fun fn(const Algorithm &algorithm) const { return CnHash::fn(algorithm, m_av, m_assembly); } diff --git a/src/backend/cuda/CudaWorker.cpp b/src/backend/cuda/CudaWorker.cpp index 7bb8844c..3585308f 100644 --- a/src/backend/cuda/CudaWorker.cpp +++ b/src/backend/cuda/CudaWorker.cpp @@ -1,13 +1,6 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2018 Lee Clagett - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -61,7 +54,7 @@ static constexpr uint32_t kReserveCount = 32768; std::atomic CudaWorker::ready; -static inline bool isReady() { return !Nonce::isPaused() && CudaWorker::ready; } +static inline bool isReady() { return !Nonce::isPaused() && CudaWorker::ready; } } // namespace xmrig @@ -69,10 +62,9 @@ static inline bool isReady() { return !Nonce::isPaused() xmrig::CudaWorker::CudaWorker(size_t id, const CudaLaunchData &data) : - Worker(id, data.thread.affinity(), -1), + GpuWorker(id, data.thread.affinity(), -1, data.device.index()), m_algorithm(data.algorithm), - m_miner(data.miner), - m_deviceIndex(data.device.index()) + m_miner(data.miner) { switch (m_algorithm.family()) { case Algorithm::RANDOM_X: @@ -119,13 +111,7 @@ xmrig::CudaWorker::~CudaWorker() } -uint64_t xmrig::CudaWorker::rawHashes() const -{ - return m_hashrateData.interpolate(Chrono::steadyMSecs()); -} - - -void xmrig::CudaWorker::jobEarlyNotification(const Job& job) +void xmrig::CudaWorker::jobEarlyNotification(const Job &job) { if (m_runner) { m_runner->jobEarlyNotification(job); @@ -213,5 +199,5 @@ void xmrig::CudaWorker::storeStats() const uint64_t timeStamp = Chrono::steadyMSecs(); m_hashrateData.addDataPoint(m_count, timeStamp); - Worker::storeStats(); + GpuWorker::storeStats(); } diff --git a/src/backend/cuda/CudaWorker.h b/src/backend/cuda/CudaWorker.h index e82e3425..24cf1e65 100644 --- a/src/backend/cuda/CudaWorker.h +++ b/src/backend/cuda/CudaWorker.h @@ -1,13 +1,6 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2018 Lee Clagett - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,8 +20,7 @@ #define XMRIG_CUDAWORKER_H -#include "backend/common/HashrateInterpolator.h" -#include "backend/common/Worker.h" +#include "backend/common/GpuWorker.h" #include "backend/common/WorkerJob.h" #include "backend/cuda/CudaLaunchData.h" #include "base/tools/Object.h" @@ -41,7 +33,7 @@ namespace xmrig { class ICudaRunner; -class CudaWorker : public Worker +class CudaWorker : public GpuWorker { public: XMRIG_DISABLE_COPY_MOVE_DEFAULT(CudaWorker) @@ -50,8 +42,7 @@ public: ~CudaWorker() override; - uint64_t rawHashes() const override; - void jobEarlyNotification(const Job&) override; + void jobEarlyNotification(const Job &job) override; static std::atomic ready; @@ -68,9 +59,6 @@ private: const Miner *m_miner; ICudaRunner *m_runner = nullptr; WorkerJob<1> m_job; - uint32_t m_deviceIndex; - - HashrateInterpolator m_hashrateData; }; diff --git a/src/backend/opencl/OclWorker.cpp b/src/backend/opencl/OclWorker.cpp index ac493ab5..ee5c4a04 100644 --- a/src/backend/opencl/OclWorker.cpp +++ b/src/backend/opencl/OclWorker.cpp @@ -1,13 +1,6 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2018 Lee Clagett - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -59,7 +52,7 @@ namespace xmrig { std::atomic OclWorker::ready; -static inline bool isReady() { return !Nonce::isPaused() && OclWorker::ready; } +static inline bool isReady() { return !Nonce::isPaused() && OclWorker::ready; } static inline void printError(size_t id, const char *error) @@ -73,11 +66,10 @@ static inline void printError(size_t id, const char *error) xmrig::OclWorker::OclWorker(size_t id, const OclLaunchData &data) : - Worker(id, data.affinity, -1), + GpuWorker(id, data.affinity, -1, data.device.index()), m_algorithm(data.algorithm), m_miner(data.miner), - m_sharedData(OclSharedState::get(data.device.index())), - m_deviceIndex(data.device.index()) + m_sharedData(OclSharedState::get(data.device.index())) { switch (m_algorithm.family()) { case Algorithm::RANDOM_X: @@ -137,13 +129,7 @@ xmrig::OclWorker::~OclWorker() } -uint64_t xmrig::OclWorker::rawHashes() const -{ - return m_hashrateData.interpolate(Chrono::steadyMSecs()); -} - - -void xmrig::OclWorker::jobEarlyNotification(const Job& job) +void xmrig::OclWorker::jobEarlyNotification(const Job &job) { if (m_runner) { m_runner->jobEarlyNotification(job); @@ -180,7 +166,7 @@ void xmrig::OclWorker::start() break; } - m_sharedData.resumeDelay(m_id); + m_sharedData.resumeDelay(id()); if (!consumeJob()) { return; @@ -188,7 +174,7 @@ void xmrig::OclWorker::start() } while (!Nonce::isOutdated(Nonce::OPENCL, m_job.sequence())) { - m_sharedData.adjustDelay(m_id); + m_sharedData.adjustDelay(id()); const uint64_t t = Chrono::steadyMSecs(); @@ -254,5 +240,5 @@ void xmrig::OclWorker::storeStats(uint64_t t) m_sharedData.setRunTime(timeStamp - t); - Worker::storeStats(); + GpuWorker::storeStats(); } diff --git a/src/backend/opencl/OclWorker.h b/src/backend/opencl/OclWorker.h index 403a0765..4dfe2a77 100644 --- a/src/backend/opencl/OclWorker.h +++ b/src/backend/opencl/OclWorker.h @@ -1,13 +1,6 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2018 Lee Clagett - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,8 +20,7 @@ #define XMRIG_OCLWORKER_H -#include "backend/common/HashrateInterpolator.h" -#include "backend/common/Worker.h" +#include "backend/common/GpuWorker.h" #include "backend/common/WorkerJob.h" #include "backend/opencl/OclLaunchData.h" #include "base/tools/Object.h" @@ -42,7 +34,7 @@ class IOclRunner; class Job; -class OclWorker : public Worker +class OclWorker : public GpuWorker { public: XMRIG_DISABLE_COPY_MOVE_DEFAULT(OclWorker) @@ -51,8 +43,7 @@ public: ~OclWorker() override; - uint64_t rawHashes() const override; - void jobEarlyNotification(const Job&) override; + void jobEarlyNotification(const Job &job) override; static std::atomic ready; @@ -70,9 +61,6 @@ private: IOclRunner *m_runner = nullptr; OclSharedData &m_sharedData; WorkerJob<1> m_job; - uint32_t m_deviceIndex; - - HashrateInterpolator m_hashrateData; };