mirror of
https://github.com/xmrig/xmrig.git
synced 2025-12-27 14:23:28 -05:00
Compare commits
18 Commits
v6.22.0
...
3fd68398b8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3fd68398b8 | ||
|
|
ead82cdba9 | ||
|
|
e32731b60b | ||
|
|
e1ae367084 | ||
|
|
bc1c8358c4 | ||
|
|
e0af8f0c6b | ||
|
|
29f9c8cf4c | ||
|
|
26f4936f6f | ||
|
|
a411ee3565 | ||
|
|
01bd0d48a1 | ||
|
|
20d555668b | ||
|
|
56baec762f | ||
|
|
17a52fb418 | ||
|
|
7e4caa8929 | ||
|
|
ef14d55aa5 | ||
|
|
5776fdcc20 | ||
|
|
fe0f69031b | ||
|
|
e682f89298 |
@@ -1,8 +1,8 @@
|
|||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
HWLOC_VERSION_MAJOR="2"
|
HWLOC_VERSION_MAJOR="2"
|
||||||
HWLOC_VERSION_MINOR="10"
|
HWLOC_VERSION_MINOR="11"
|
||||||
HWLOC_VERSION_PATCH="0"
|
HWLOC_VERSION_PATCH="2"
|
||||||
|
|
||||||
HWLOC_VERSION="${HWLOC_VERSION_MAJOR}.${HWLOC_VERSION_MINOR}.${HWLOC_VERSION_PATCH}"
|
HWLOC_VERSION="${HWLOC_VERSION_MAJOR}.${HWLOC_VERSION_MINOR}.${HWLOC_VERSION_PATCH}"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
OPENSSL_VERSION="3.0.14"
|
OPENSSL_VERSION="3.0.15"
|
||||||
|
|
||||||
mkdir -p deps
|
mkdir -p deps
|
||||||
mkdir -p deps/include
|
mkdir -p deps/include
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
|
|
||||||
UV_VERSION="1.48.0"
|
UV_VERSION="1.49.2"
|
||||||
|
|
||||||
mkdir -p deps
|
mkdir -p deps
|
||||||
mkdir -p deps/include
|
mkdir -p deps/include
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ else
|
|||||||
modprobe msr allow_writes=on
|
modprobe msr allow_writes=on
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if grep -E 'AMD Ryzen|AMD EPYC' /proc/cpuinfo > /dev/null;
|
if grep -E 'AMD Ryzen|AMD EPYC|AuthenticAMD' /proc/cpuinfo > /dev/null;
|
||||||
then
|
then
|
||||||
if grep "cpu family[[:space:]]\{1,\}:[[:space:]]25" /proc/cpuinfo > /dev/null;
|
if grep "cpu family[[:space:]]\{1,\}:[[:space:]]25" /proc/cpuinfo > /dev/null;
|
||||||
then
|
then
|
||||||
@@ -28,6 +28,14 @@ if grep -E 'AMD Ryzen|AMD EPYC' /proc/cpuinfo > /dev/null;
|
|||||||
wrmsr -a 0xc001102b 0x2000cc10
|
wrmsr -a 0xc001102b 0x2000cc10
|
||||||
echo "MSR register values for Zen3 applied"
|
echo "MSR register values for Zen3 applied"
|
||||||
fi
|
fi
|
||||||
|
elif grep "cpu family[[:space:]]\{1,\}:[[:space:]]26" /proc/cpuinfo > /dev/null;
|
||||||
|
then
|
||||||
|
echo "Detected Zen5 CPU"
|
||||||
|
wrmsr -a 0xc0011020 0x4400000000000
|
||||||
|
wrmsr -a 0xc0011021 0x4000000000040
|
||||||
|
wrmsr -a 0xc0011022 0x8680000401570000
|
||||||
|
wrmsr -a 0xc001102b 0x2040cc10
|
||||||
|
echo "MSR register values for Zen5 applied"
|
||||||
else
|
else
|
||||||
echo "Detected Zen1/Zen2 CPU"
|
echo "Detected Zen1/Zen2 CPU"
|
||||||
wrmsr -a 0xc0011020 0
|
wrmsr -a 0xc0011020 0
|
||||||
|
|||||||
@@ -180,11 +180,11 @@ public:
|
|||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
mutex.lock();
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(mutex);
|
||||||
|
|
||||||
pages += status.hugePages();
|
pages += status.hugePages();
|
||||||
|
}
|
||||||
mutex.unlock();
|
|
||||||
|
|
||||||
rapidjson::Value hugepages;
|
rapidjson::Value hugepages;
|
||||||
|
|
||||||
@@ -380,14 +380,14 @@ void xmrig::CpuBackend::setJob(const Job &job)
|
|||||||
|
|
||||||
void xmrig::CpuBackend::start(IWorker *worker, bool ready)
|
void xmrig::CpuBackend::start(IWorker *worker, bool ready)
|
||||||
{
|
{
|
||||||
mutex.lock();
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(mutex);
|
||||||
|
|
||||||
if (d_ptr->status.started(worker, ready)) {
|
if (d_ptr->status.started(worker, ready)) {
|
||||||
d_ptr->status.print();
|
d_ptr->status.print();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex.unlock();
|
|
||||||
|
|
||||||
if (ready) {
|
if (ready) {
|
||||||
worker->start();
|
worker->start();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -359,7 +359,9 @@ void xmrig::CpuWorker<N>::start()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
consumeJob();
|
if (!Nonce::isPaused()) {
|
||||||
|
consumeJob();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -326,7 +326,8 @@ void xmrig::HwlocCpuInfo::processTopLevelCache(hwloc_obj_t cache, const Algorith
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scratchpad == 2 * oneMiB) {
|
// This code is supposed to run only on Intel CPUs
|
||||||
|
if ((vendor() == VENDOR_INTEL) && (scratchpad == 2 * oneMiB)) {
|
||||||
if (L2 && (cores.size() * oneMiB) == L2 && L2_associativity == 16 && L3 >= L2) {
|
if (L2 && (cores.size() * oneMiB) == L2 && L2_associativity == 16 && L3 >= L2) {
|
||||||
L3 = L2;
|
L3 = L2;
|
||||||
extra = L2;
|
extra = L2;
|
||||||
|
|||||||
@@ -452,16 +452,17 @@ void xmrig::CudaBackend::setJob(const Job &job)
|
|||||||
|
|
||||||
void xmrig::CudaBackend::start(IWorker *worker, bool ready)
|
void xmrig::CudaBackend::start(IWorker *worker, bool ready)
|
||||||
{
|
{
|
||||||
mutex.lock();
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(mutex);
|
||||||
|
|
||||||
if (d_ptr->status.started(ready)) {
|
if (d_ptr->status.started(ready)) {
|
||||||
d_ptr->status.print();
|
d_ptr->status.print();
|
||||||
|
|
||||||
|
CudaWorker::ready = true;
|
||||||
|
}
|
||||||
|
|
||||||
CudaWorker::ready = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex.unlock();
|
|
||||||
|
|
||||||
if (ready) {
|
if (ready) {
|
||||||
worker->start();
|
worker->start();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ void xmrig::CudaWorker::start()
|
|||||||
std::this_thread::yield();
|
std::this_thread::yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!consumeJob()) {
|
if (isReady() && !consumeJob()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -438,16 +438,16 @@ void xmrig::OclBackend::setJob(const Job &job)
|
|||||||
|
|
||||||
void xmrig::OclBackend::start(IWorker *worker, bool ready)
|
void xmrig::OclBackend::start(IWorker *worker, bool ready)
|
||||||
{
|
{
|
||||||
mutex.lock();
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(mutex);
|
||||||
|
|
||||||
if (d_ptr->status.started(ready)) {
|
if (d_ptr->status.started(ready)) {
|
||||||
d_ptr->status.print();
|
d_ptr->status.print();
|
||||||
|
|
||||||
OclWorker::ready = true;
|
OclWorker::ready = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex.unlock();
|
|
||||||
|
|
||||||
if (ready) {
|
if (ready) {
|
||||||
worker->start();
|
worker->start();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ void xmrig::OclWorker::start()
|
|||||||
std::this_thread::yield();
|
std::this_thread::yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!consumeJob()) {
|
if (isReady() && !consumeJob()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -556,7 +556,14 @@ void xmrig::Miner::setJob(const Job &job, bool donate)
|
|||||||
|
|
||||||
d_ptr->algorithm = job.algorithm();
|
d_ptr->algorithm = job.algorithm();
|
||||||
|
|
||||||
mutex.lock();
|
# ifdef XMRIG_ALGO_RANDOMX
|
||||||
|
bool ready = false;
|
||||||
|
# else
|
||||||
|
constexpr const bool ready = true;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(mutex);
|
||||||
|
|
||||||
const uint8_t index = donate ? 1 : 0;
|
const uint8_t index = donate ? 1 : 0;
|
||||||
|
|
||||||
@@ -575,9 +582,12 @@ void xmrig::Miner::setJob(const Job &job, bool donate)
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ifdef XMRIG_ALGO_RANDOMX
|
# ifdef XMRIG_ALGO_RANDOMX
|
||||||
const bool ready = d_ptr->initRX();
|
ready = d_ptr->initRX();
|
||||||
# else
|
|
||||||
constexpr const bool ready = true;
|
// Always reset nonce on RandomX dataset change
|
||||||
|
if (!ready) {
|
||||||
|
d_ptr->reset = true;
|
||||||
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifdef XMRIG_ALGO_GHOSTRIDER
|
# ifdef XMRIG_ALGO_GHOSTRIDER
|
||||||
@@ -586,7 +596,7 @@ void xmrig::Miner::setJob(const Job &job, bool donate)
|
|||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
mutex.unlock();
|
}
|
||||||
|
|
||||||
d_ptr->active = true;
|
d_ptr->active = true;
|
||||||
d_ptr->m_taskbar.setActive(true);
|
d_ptr->m_taskbar.setActive(true);
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ xmrig -a gr -o rtm.suprnova.cc:4273 --tls -u WALLET_ADDRESS -p x
|
|||||||
|
|
||||||
You can use **rtm_ghostrider_example.cmd** as a template and put pool URL and your wallet address there. The general XMRig documentation is available [here](https://xmrig.com/docs/miner).
|
You can use **rtm_ghostrider_example.cmd** as a template and put pool URL and your wallet address there. The general XMRig documentation is available [here](https://xmrig.com/docs/miner).
|
||||||
|
|
||||||
**Using `--threads` or `-t` option is NOT recommended because it turns off advanced built-in config.** If you want to tweak the nubmer of threads used for GhostRider, it's recommended to start using config.json instead of command line. The best suitable command line option for this is `--cpu-max-threads-hint=N` where N can be between 0 and 100.
|
**Using `--threads` or `-t` option is NOT recommended because it turns off advanced built-in config.** If you want to tweak the number of threads used for GhostRider, it's recommended to start using config.json instead of command line. The best suitable command line option for this is `--cpu-max-threads-hint=N` where N can be between 0 and 100.
|
||||||
|
|
||||||
## Performance
|
## Performance
|
||||||
|
|
||||||
|
|||||||
@@ -267,8 +267,8 @@ namespace randomx {
|
|||||||
initDatasetAVX2 = false;
|
initDatasetAVX2 = false;
|
||||||
break;
|
break;
|
||||||
case xmrig::ICpuInfo::ARCH_ZEN5:
|
case xmrig::ICpuInfo::ARCH_ZEN5:
|
||||||
// TODO: test it
|
// AVX2 init is 49% faster on Zen5
|
||||||
initDatasetAVX2 = false;
|
initDatasetAVX2 = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,8 +60,6 @@ static const std::array<MsrItems, kMsrArraySize> msrPresets = {
|
|||||||
MsrItems{{ 0xC0011020, 0ULL }, { 0xC0011021, 0x40ULL, ~0x20ULL }, { 0xC0011022, 0x1510000ULL }, { 0xC001102b, 0x2000cc16ULL }},
|
MsrItems{{ 0xC0011020, 0ULL }, { 0xC0011021, 0x40ULL, ~0x20ULL }, { 0xC0011022, 0x1510000ULL }, { 0xC001102b, 0x2000cc16ULL }},
|
||||||
MsrItems{{ 0xC0011020, 0x0004480000000000ULL }, { 0xC0011021, 0x001c000200000040ULL, ~0x20ULL }, { 0xC0011022, 0xc000000401570000ULL }, { 0xC001102b, 0x2000cc10ULL }},
|
MsrItems{{ 0xC0011020, 0x0004480000000000ULL }, { 0xC0011021, 0x001c000200000040ULL, ~0x20ULL }, { 0xC0011022, 0xc000000401570000ULL }, { 0xC001102b, 0x2000cc10ULL }},
|
||||||
MsrItems{{ 0xC0011020, 0x0004400000000000ULL }, { 0xC0011021, 0x0004000000000040ULL, ~0x20ULL }, { 0xC0011022, 0x8680000401570000ULL }, { 0xC001102b, 0x2040cc10ULL }},
|
MsrItems{{ 0xC0011020, 0x0004400000000000ULL }, { 0xC0011021, 0x0004000000000040ULL, ~0x20ULL }, { 0xC0011022, 0x8680000401570000ULL }, { 0xC001102b, 0x2040cc10ULL }},
|
||||||
|
|
||||||
// TODO: Tune it for Zen5 when it's available
|
|
||||||
MsrItems{{ 0xC0011020, 0x0004400000000000ULL }, { 0xC0011021, 0x0004000000000040ULL, ~0x20ULL }, { 0xC0011022, 0x8680000401570000ULL }, { 0xC001102b, 0x2040cc10ULL }},
|
MsrItems{{ 0xC0011020, 0x0004400000000000ULL }, { 0xC0011021, 0x0004000000000040ULL, ~0x20ULL }, { 0xC0011022, 0x8680000401570000ULL }, { 0xC001102b, 0x2040cc10ULL }},
|
||||||
|
|
||||||
MsrItems{{ 0x1a4, 0xf }},
|
MsrItems{{ 0x1a4, 0xf }},
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
#define APP_ID "xmrig"
|
#define APP_ID "xmrig"
|
||||||
#define APP_NAME "XMRig"
|
#define APP_NAME "XMRig"
|
||||||
#define APP_DESC "XMRig miner"
|
#define APP_DESC "XMRig miner"
|
||||||
#define APP_VERSION "6.22.0"
|
#define APP_VERSION "6.22.1-dev"
|
||||||
#define APP_DOMAIN "xmrig.com"
|
#define APP_DOMAIN "xmrig.com"
|
||||||
#define APP_SITE "www.xmrig.com"
|
#define APP_SITE "www.xmrig.com"
|
||||||
#define APP_COPYRIGHT "Copyright (C) 2016-2024 xmrig.com"
|
#define APP_COPYRIGHT "Copyright (C) 2016-2024 xmrig.com"
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
#define APP_VER_MAJOR 6
|
#define APP_VER_MAJOR 6
|
||||||
#define APP_VER_MINOR 22
|
#define APP_VER_MINOR 22
|
||||||
#define APP_VER_PATCH 0
|
#define APP_VER_PATCH 1
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
# if (_MSC_VER >= 1930)
|
# if (_MSC_VER >= 1930)
|
||||||
|
|||||||
Reference in New Issue
Block a user