mirror of
https://github.com/xmrig/xmrig.git
synced 2024-12-22 19:49:36 +00:00
Merge pull request #3605 from SChernykh/dev
CUDA backend: update RandomX dataset when it changes
This commit is contained in:
commit
0229c65232
4 changed files with 22 additions and 0 deletions
|
@ -55,6 +55,15 @@ bool xmrig::CudaRxRunner::run(uint32_t startNonce, uint32_t *rescount, uint32_t
|
||||||
|
|
||||||
bool xmrig::CudaRxRunner::set(const Job &job, uint8_t *blob)
|
bool xmrig::CudaRxRunner::set(const Job &job, uint8_t *blob)
|
||||||
{
|
{
|
||||||
|
if (!m_datasetHost && (m_seed != job.seed())) {
|
||||||
|
m_seed = job.seed();
|
||||||
|
|
||||||
|
if (m_ready) {
|
||||||
|
auto dataset = Rx::dataset(job, 0);
|
||||||
|
callWrapper(CudaLib::rxUpdateDataset(m_ctx, dataset->raw(), dataset->size(false)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const bool rc = CudaBaseRunner::set(job, blob);
|
const bool rc = CudaBaseRunner::set(job, blob);
|
||||||
if (!rc || m_ready) {
|
if (!rc || m_ready) {
|
||||||
return rc;
|
return rc;
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
|
|
||||||
#include "backend/cuda/runners/CudaBaseRunner.h"
|
#include "backend/cuda/runners/CudaBaseRunner.h"
|
||||||
|
#include "base/tools/Buffer.h"
|
||||||
|
|
||||||
|
|
||||||
namespace xmrig {
|
namespace xmrig {
|
||||||
|
@ -46,6 +47,7 @@ protected:
|
||||||
private:
|
private:
|
||||||
bool m_ready = false;
|
bool m_ready = false;
|
||||||
const bool m_datasetHost = false;
|
const bool m_datasetHost = false;
|
||||||
|
Buffer m_seed;
|
||||||
size_t m_intensity = 0;
|
size_t m_intensity = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ static const char *kPluginVersion = "pluginVersion";
|
||||||
static const char *kRelease = "release";
|
static const char *kRelease = "release";
|
||||||
static const char *kRxHash = "rxHash";
|
static const char *kRxHash = "rxHash";
|
||||||
static const char *kRxPrepare = "rxPrepare";
|
static const char *kRxPrepare = "rxPrepare";
|
||||||
|
static const char *kRxUpdateDataset = "rxUpdateDataset";
|
||||||
static const char *kSetJob = "setJob";
|
static const char *kSetJob = "setJob";
|
||||||
static const char *kSetJob_v2 = "setJob_v2";
|
static const char *kSetJob_v2 = "setJob_v2";
|
||||||
static const char *kVersion = "version";
|
static const char *kVersion = "version";
|
||||||
|
@ -92,6 +93,7 @@ using pluginVersion_t = const char * (*)();
|
||||||
using release_t = void (*)(nvid_ctx *);
|
using release_t = void (*)(nvid_ctx *);
|
||||||
using rxHash_t = bool (*)(nvid_ctx *, uint32_t, uint64_t, uint32_t *, uint32_t *);
|
using rxHash_t = bool (*)(nvid_ctx *, uint32_t, uint64_t, uint32_t *, uint32_t *);
|
||||||
using rxPrepare_t = bool (*)(nvid_ctx *, const void *, size_t, bool, uint32_t);
|
using rxPrepare_t = bool (*)(nvid_ctx *, const void *, size_t, bool, uint32_t);
|
||||||
|
using rxUpdateDataset_t = bool (*)(nvid_ctx *, const void *, size_t);
|
||||||
using setJob_t = bool (*)(nvid_ctx *, const void *, size_t, uint32_t);
|
using setJob_t = bool (*)(nvid_ctx *, const void *, size_t, uint32_t);
|
||||||
using setJob_v2_t = bool (*)(nvid_ctx *, const void *, size_t, const char *);
|
using setJob_v2_t = bool (*)(nvid_ctx *, const void *, size_t, const char *);
|
||||||
using version_t = uint32_t (*)(Version);
|
using version_t = uint32_t (*)(Version);
|
||||||
|
@ -116,6 +118,7 @@ static pluginVersion_t pPluginVersion = nullptr;
|
||||||
static release_t pRelease = nullptr;
|
static release_t pRelease = nullptr;
|
||||||
static rxHash_t pRxHash = nullptr;
|
static rxHash_t pRxHash = nullptr;
|
||||||
static rxPrepare_t pRxPrepare = nullptr;
|
static rxPrepare_t pRxPrepare = nullptr;
|
||||||
|
static rxUpdateDataset_t pRxUpdateDataset = nullptr;
|
||||||
static setJob_t pSetJob = nullptr;
|
static setJob_t pSetJob = nullptr;
|
||||||
static setJob_v2_t pSetJob_v2 = nullptr;
|
static setJob_v2_t pSetJob_v2 = nullptr;
|
||||||
static version_t pVersion = nullptr;
|
static version_t pVersion = nullptr;
|
||||||
|
@ -206,6 +209,12 @@ bool xmrig::CudaLib::rxPrepare(nvid_ctx *ctx, const void *dataset, size_t datase
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool xmrig::CudaLib::rxUpdateDataset(nvid_ctx* ctx, const void* dataset, size_t datasetSize) noexcept
|
||||||
|
{
|
||||||
|
return pRxUpdateDataset(ctx, dataset, datasetSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool xmrig::CudaLib::kawPowHash(nvid_ctx *ctx, uint8_t* job_blob, uint64_t target, uint32_t *rescount, uint32_t *resnonce, uint32_t *skipped_hashes) noexcept
|
bool xmrig::CudaLib::kawPowHash(nvid_ctx *ctx, uint8_t* job_blob, uint64_t target, uint32_t *rescount, uint32_t *resnonce, uint32_t *skipped_hashes) noexcept
|
||||||
{
|
{
|
||||||
return pKawPowHash(ctx, job_blob, target, rescount, resnonce, skipped_hashes);
|
return pKawPowHash(ctx, job_blob, target, rescount, resnonce, skipped_hashes);
|
||||||
|
@ -388,6 +397,7 @@ void xmrig::CudaLib::load()
|
||||||
DLSYM(Release);
|
DLSYM(Release);
|
||||||
DLSYM(RxHash);
|
DLSYM(RxHash);
|
||||||
DLSYM(RxPrepare);
|
DLSYM(RxPrepare);
|
||||||
|
DLSYM(RxUpdateDataset);
|
||||||
DLSYM(KawPowHash);
|
DLSYM(KawPowHash);
|
||||||
DLSYM(KawPowPrepare_v2);
|
DLSYM(KawPowPrepare_v2);
|
||||||
DLSYM(KawPowStopHash);
|
DLSYM(KawPowStopHash);
|
||||||
|
|
|
@ -71,6 +71,7 @@ public:
|
||||||
static bool deviceInit(nvid_ctx *ctx) noexcept;
|
static bool deviceInit(nvid_ctx *ctx) noexcept;
|
||||||
static bool rxHash(nvid_ctx *ctx, uint32_t startNonce, uint64_t target, uint32_t *rescount, uint32_t *resnonce) noexcept;
|
static bool rxHash(nvid_ctx *ctx, uint32_t startNonce, uint64_t target, uint32_t *rescount, uint32_t *resnonce) noexcept;
|
||||||
static bool rxPrepare(nvid_ctx *ctx, const void *dataset, size_t datasetSize, bool dataset_host, uint32_t batchSize) noexcept;
|
static bool rxPrepare(nvid_ctx *ctx, const void *dataset, size_t datasetSize, bool dataset_host, uint32_t batchSize) noexcept;
|
||||||
|
static bool rxUpdateDataset(nvid_ctx* ctx, const void* dataset, size_t datasetSize) noexcept;
|
||||||
static bool kawPowHash(nvid_ctx *ctx, uint8_t* job_blob, uint64_t target, uint32_t *rescount, uint32_t *resnonce, uint32_t *skipped_hashes) noexcept;
|
static bool kawPowHash(nvid_ctx *ctx, uint8_t* job_blob, uint64_t target, uint32_t *rescount, uint32_t *resnonce, uint32_t *skipped_hashes) noexcept;
|
||||||
static bool kawPowPrepare(nvid_ctx *ctx, const void* cache, size_t cache_size, const void* dag_precalc, size_t dag_size, uint32_t height, const uint64_t* dag_sizes) noexcept;
|
static bool kawPowPrepare(nvid_ctx *ctx, const void* cache, size_t cache_size, const void* dag_precalc, size_t dag_size, uint32_t height, const uint64_t* dag_sizes) noexcept;
|
||||||
static bool kawPowStopHash(nvid_ctx *ctx) noexcept;
|
static bool kawPowStopHash(nvid_ctx *ctx) noexcept;
|
||||||
|
|
Loading…
Reference in a new issue