mirror of
https://github.com/xmrig/xmrig.git
synced 2025-12-29 06:54:27 -05:00
Compare commits
5 Commits
856813c1ae
...
v6.25.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
753859caea | ||
|
|
712a5a5e66 | ||
|
|
290a0de6e5 | ||
|
|
e0564b5fdd | ||
|
|
482a1f0b40 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,3 +5,4 @@ scripts/deps
|
|||||||
/.idea
|
/.idea
|
||||||
/src/backend/opencl/cl/cn/cryptonight_gen.cl
|
/src/backend/opencl/cl/cn/cryptonight_gen.cl
|
||||||
.vscode
|
.vscode
|
||||||
|
/.qtcreator
|
||||||
|
|||||||
14
CHANGELOG.md
14
CHANGELOG.md
@@ -1,3 +1,17 @@
|
|||||||
|
# v6.25.0
|
||||||
|
- [#3680](https://github.com/xmrig/xmrig/pull/3680) Added `armv8l` to the list of 32-bit ARM targets.
|
||||||
|
- [#3708](https://github.com/xmrig/xmrig/pull/3708) Minor Aarch64 JIT changes (better instruction selection, don't emit instructions that add 0, etc).
|
||||||
|
- [#3718](https://github.com/xmrig/xmrig/pull/3718) Solo mining: added support for FCMP++ hardfork.
|
||||||
|
- [#3722](https://github.com/xmrig/xmrig/pull/3722) Added Zen4 (Hawk Point) CPUs detection.
|
||||||
|
- [#3725](https://github.com/xmrig/xmrig/pull/3725) Added **RISC-V** support with JIT compiler.
|
||||||
|
- [#3731](https://github.com/xmrig/xmrig/pull/3731) Added initial Haiku OS support.
|
||||||
|
- [#3733](https://github.com/xmrig/xmrig/pull/3733) Added detection for MSVC/2026.
|
||||||
|
- [#3736](https://github.com/xmrig/xmrig/pull/3736) RISC-V: added vectorized dataset init.
|
||||||
|
- [#3740](https://github.com/xmrig/xmrig/pull/3740) RISC-V: added vectorized soft AES.
|
||||||
|
- [#3743](https://github.com/xmrig/xmrig/pull/3743) Linux: added support for transparent huge pages.
|
||||||
|
- Improved LibreSSL support.
|
||||||
|
- Improved compatibility for automatically enabling huge pages on Linux systems without NUMA support.
|
||||||
|
|
||||||
# v6.24.0
|
# v6.24.0
|
||||||
- [#3671](https://github.com/xmrig/xmrig/pull/3671) Fixed detection of L2 cache size for some complex NUMA topologies.
|
- [#3671](https://github.com/xmrig/xmrig/pull/3671) Fixed detection of L2 cache size for some complex NUMA topologies.
|
||||||
- [#3674](https://github.com/xmrig/xmrig/pull/3674) Fixed ARMv7 build.
|
- [#3674](https://github.com/xmrig/xmrig/pull/3674) Fixed ARMv7 build.
|
||||||
|
|||||||
@@ -87,14 +87,14 @@ xmrig::CpuWorker<N>::CpuWorker(size_t id, const CpuLaunchData &data) :
|
|||||||
if (!cn_heavyZen3Memory) {
|
if (!cn_heavyZen3Memory) {
|
||||||
// Round up number of threads to the multiple of 8
|
// Round up number of threads to the multiple of 8
|
||||||
const size_t num_threads = ((m_threads + 7) / 8) * 8;
|
const size_t num_threads = ((m_threads + 7) / 8) * 8;
|
||||||
cn_heavyZen3Memory = new VirtualMemory(m_algorithm.l3() * num_threads, data.hugePages, false, false, node());
|
cn_heavyZen3Memory = new VirtualMemory(m_algorithm.l3() * num_threads, data.hugePages, false, false, node(), VirtualMemory::kDefaultHugePageSize);
|
||||||
}
|
}
|
||||||
m_memory = cn_heavyZen3Memory;
|
m_memory = cn_heavyZen3Memory;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
# endif
|
# endif
|
||||||
{
|
{
|
||||||
m_memory = new VirtualMemory(m_algorithm.l3() * N, data.hugePages, false, true, node());
|
m_memory = new VirtualMemory(m_algorithm.l3() * N, data.hugePages, false, true, node(), VirtualMemory::kDefaultHugePageSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef XMRIG_ALGO_GHOSTRIDER
|
# ifdef XMRIG_ALGO_GHOSTRIDER
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ xmrig::MemoryPool::MemoryPool(size_t size, bool hugePages, uint32_t node)
|
|||||||
|
|
||||||
constexpr size_t alignment = 1 << 24;
|
constexpr size_t alignment = 1 << 24;
|
||||||
|
|
||||||
m_memory = new VirtualMemory(size * pageSize + alignment, hugePages, false, false, node);
|
m_memory = new VirtualMemory(size * pageSize + alignment, hugePages, false, false, node, VirtualMemory::kDefaultHugePageSize);
|
||||||
|
|
||||||
m_alignOffset = (alignment - (((size_t)m_memory->scratchpad()) % alignment)) % alignment;
|
m_alignOffset = (alignment - (((size_t)m_memory->scratchpad()) % alignment)) % alignment;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,16 @@ xmrig::VirtualMemory::VirtualMemory(size_t size, bool hugePages, bool oneGbPages
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_scratchpad = static_cast<uint8_t*>(_mm_malloc(m_size, alignSize));
|
m_scratchpad = static_cast<uint8_t*>(_mm_malloc(m_size, alignSize));
|
||||||
|
|
||||||
|
// Huge pages failed to allocate, but try to enable transparent huge pages for the range
|
||||||
|
if (alignSize >= kDefaultHugePageSize) {
|
||||||
|
if (m_scratchpad) {
|
||||||
|
adviseLargePages(m_scratchpad, m_size);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_scratchpad = static_cast<uint8_t*>(_mm_malloc(m_size, 64));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ public:
|
|||||||
static void *allocateExecutableMemory(size_t size, bool hugePages);
|
static void *allocateExecutableMemory(size_t size, bool hugePages);
|
||||||
static void *allocateLargePagesMemory(size_t size);
|
static void *allocateLargePagesMemory(size_t size);
|
||||||
static void *allocateOneGbPagesMemory(size_t size);
|
static void *allocateOneGbPagesMemory(size_t size);
|
||||||
|
static bool adviseLargePages(void *p, size_t size);
|
||||||
static void destroy();
|
static void destroy();
|
||||||
static void flushInstructionCache(void *p, size_t size);
|
static void flushInstructionCache(void *p, size_t size);
|
||||||
static void freeLargePagesMemory(void *p, size_t size);
|
static void freeLargePagesMemory(void *p, size_t size);
|
||||||
|
|||||||
@@ -276,6 +276,16 @@ bool xmrig::VirtualMemory::allocateOneGbPagesMemory()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool xmrig::VirtualMemory::adviseLargePages(void *p, size_t size)
|
||||||
|
{
|
||||||
|
# ifdef XMRIG_OS_LINUX
|
||||||
|
return (madvise(p, size, MADV_HUGEPAGE) == 0);
|
||||||
|
# else
|
||||||
|
return false;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void xmrig::VirtualMemory::freeLargePagesMemory()
|
void xmrig::VirtualMemory::freeLargePagesMemory()
|
||||||
{
|
{
|
||||||
if (m_flags.test(FLAG_LOCK)) {
|
if (m_flags.test(FLAG_LOCK)) {
|
||||||
|
|||||||
@@ -260,6 +260,12 @@ bool xmrig::VirtualMemory::allocateOneGbPagesMemory()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool xmrig::VirtualMemory::adviseLargePages(void *p, size_t size)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void xmrig::VirtualMemory::freeLargePagesMemory()
|
void xmrig::VirtualMemory::freeLargePagesMemory()
|
||||||
{
|
{
|
||||||
freeLargePagesMemory(m_scratchpad, m_size);
|
freeLargePagesMemory(m_scratchpad, m_size);
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ void xmrig::RxDataset::allocate(bool hugePages, bool oneGbPages)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_memory = new VirtualMemory(maxSize(), hugePages, oneGbPages, false, m_node);
|
m_memory = new VirtualMemory(maxSize(), hugePages, oneGbPages, false, m_node, VirtualMemory::kDefaultHugePageSize);
|
||||||
|
|
||||||
if (m_memory->isOneGbPages()) {
|
if (m_memory->isOneGbPages()) {
|
||||||
m_scratchpadOffset = maxSize() + RANDOMX_CACHE_MAX_SIZE;
|
m_scratchpadOffset = maxSize() + RANDOMX_CACHE_MAX_SIZE;
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ static inline void checkHash(const JobBundle &bundle, std::vector<JobResult> &re
|
|||||||
static void getResults(JobBundle &bundle, std::vector<JobResult> &results, uint32_t &errors, bool hwAES)
|
static void getResults(JobBundle &bundle, std::vector<JobResult> &results, uint32_t &errors, bool hwAES)
|
||||||
{
|
{
|
||||||
const auto &algorithm = bundle.job.algorithm();
|
const auto &algorithm = bundle.job.algorithm();
|
||||||
auto memory = new VirtualMemory(algorithm.l3(), false, false, false);
|
auto memory = new VirtualMemory(algorithm.l3(), false, false, false, 0, VirtualMemory::kDefaultHugePageSize);
|
||||||
alignas(16) uint8_t hash[32]{ 0 };
|
alignas(16) uint8_t hash[32]{ 0 };
|
||||||
|
|
||||||
if (algorithm.family() == Algorithm::RANDOM_X) {
|
if (algorithm.family() == Algorithm::RANDOM_X) {
|
||||||
|
|||||||
@@ -2,18 +2,7 @@
|
|||||||
* Copyright (c) 2018-2025 SChernykh <https://github.com/SChernykh>
|
* Copyright (c) 2018-2025 SChernykh <https://github.com/SChernykh>
|
||||||
* Copyright (c) 2016-2025 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
* Copyright (c) 2016-2025 XMRig <https://github.com/xmrig>, <support@xmrig.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* 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 <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef XMRIG_VERSION_H
|
#ifndef XMRIG_VERSION_H
|
||||||
@@ -22,15 +11,15 @@
|
|||||||
#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.24.1-dev"
|
#define APP_VERSION "6.25.0"
|
||||||
#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-2025 xmrig.com"
|
#define APP_COPYRIGHT "Copyright (C) 2016-2025 xmrig.com"
|
||||||
#define APP_KIND "miner"
|
#define APP_KIND "miner"
|
||||||
|
|
||||||
#define APP_VER_MAJOR 6
|
#define APP_VER_MAJOR 6
|
||||||
#define APP_VER_MINOR 24
|
#define APP_VER_MINOR 25
|
||||||
#define APP_VER_PATCH 1
|
#define APP_VER_PATCH 0
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
# if (_MSC_VER >= 1950)
|
# if (_MSC_VER >= 1950)
|
||||||
|
|||||||
Reference in New Issue
Block a user