Skip to content

Commit fd19a5d

Browse files
authored
Merge pull request #2498 from fireice-uk/dev
release 2.10.7
2 parents 5869b9e + bb189ad commit fd19a5d

File tree

6 files changed

+28
-29
lines changed

6 files changed

+28
-29
lines changed

README.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
###### fireice-uk's and psychocrypt's
22
# XMR-Stak: Cryptonight All-in-One Mining Software
33

4-
XMR-Stak is a universal open source stratum pool miner. This miner supports CPUs, AMD and NVIDIA GPUs and can be used various crypto currencies: Ryo, Monero, Turtlecoin, Graft, Bittube, Loki, Aeon and many more Cryptonight coins.
4+
XMR-Stak is a universal open source stratum pool miner. This miner supports x86-64 CPUs, AMD and NVIDIA GPUs and can be used various crypto currencies: Ryo, Monero, Turtlecoin, Graft, Bittube, Loki, Aeon and many more Cryptonight coins.
55

66

77

@@ -52,16 +52,13 @@ Following coins can be mined using this miner:
5252
- [Graft](https://www.graft.network)
5353
- [Haven](https://havenprotocol.com)
5454
- [Lethean](https://lethean.io)
55-
- [Loki](https://loki.network/)
5655
- [Masari](https://getmasari.org)
5756
- [Monero](https://getmonero.org)
5857
- [Plenteum](https://www.plenteum.com/)
5958
- [QRL](https://theqrl.org)
6059
- **[Ryo](https://ryo-currency.com) - Upcoming xmr-stak-gui is sponsored by Ryo Currency**
6160
- [Torque](https://torque.cash/)
62-
- [TurtleCoin](https://turtlecoin.lol)
6361
- [Zelerius](https://zelerius.org/)
64-
- [X-CASH](https://x-network.io/)
6562

6663
**[Ryo Currency](https://ryo-currency.com)** - is a way for us to implement the ideas that we were unable to in
6764
Monero. See [here](https://github.com/fireice-uk/cryptonote-speedup-demo/) for details.

doc/usage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
## Content Overview
44
* [Configurations](#configurations)
55
* [Usage on Windows](#usage-on-windows)
6-
* [Usage on Linux](#usage-on-linux)
6+
* [Usage on Linux & macOS](#usage-on-linux--macos)
77
* [Command Line Options](#command-line-options)
88
* [Use different backends](#use-different-backends)
99
* [HTML and JSON API report configuraton](#html-and-json-api-report-configuraton)

xmrstak/backend/amd/autoAdjust.hpp

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,21 @@ class autoAdjust
110110
}
111111
}
112112

113+
// check if cryptonight_monero_v8 is selected for the user or dev pool
114+
bool useCryptonight_v8 = (std::find(neededAlgorithms.begin(), neededAlgorithms.end(), cryptonight_monero_v8) != neededAlgorithms.end());
115+
116+
// true for all cryptonight_heavy derivates since we check the user and dev pool
117+
bool useCryptonight_heavy = std::find(neededAlgorithms.begin(), neededAlgorithms.end(), cryptonight_heavy) != neededAlgorithms.end();
118+
119+
// true for cryptonight_gpu as main user pool algorithm
120+
bool useCryptonight_gpu = ::jconf::inst()->GetCurrentCoinSelection().GetDescription(1).GetMiningAlgo() == cryptonight_gpu;
121+
122+
bool useCryptonight_r = ::jconf::inst()->GetCurrentCoinSelection().GetDescription(1).GetMiningAlgo() == cryptonight_r;
123+
124+
bool useCryptonight_r_wow = ::jconf::inst()->GetCurrentCoinSelection().GetDescription(1).GetMiningAlgo() == cryptonight_r_wow;
125+
126+
// 8 threads per block (this is a good value for the most gpus)
127+
uint32_t default_workSize = 8;
113128
size_t minFreeMem = 128u * byteToMiB;
114129
/* 1000 is a magic selected limit, the reason is that more than 2GiB memory
115130
* sowing down the memory performance because of TLB cache misses
@@ -130,6 +145,9 @@ class autoAdjust
130145
* to avoid out of memory errors
131146
*/
132147
maxThreads = 2024u;
148+
149+
if(useCryptonight_gpu)
150+
default_workSize = 16u;
133151
}
134152

135153
// NVIDIA optimizations
@@ -142,19 +160,6 @@ class autoAdjust
142160
minFreeMem = 512u * byteToMiB;
143161
}
144162

145-
// check if cryptonight_monero_v8 is selected for the user or dev pool
146-
bool useCryptonight_v8 = (std::find(neededAlgorithms.begin(), neededAlgorithms.end(), cryptonight_monero_v8) != neededAlgorithms.end());
147-
148-
// true for all cryptonight_heavy derivates since we check the user and dev pool
149-
bool useCryptonight_heavy = std::find(neededAlgorithms.begin(), neededAlgorithms.end(), cryptonight_heavy) != neededAlgorithms.end();
150-
151-
// true for cryptonight_gpu as main user pool algorithm
152-
bool useCryptonight_gpu = ::jconf::inst()->GetCurrentCoinSelection().GetDescription(1).GetMiningAlgo() == cryptonight_gpu;
153-
154-
bool useCryptonight_r = ::jconf::inst()->GetCurrentCoinSelection().GetDescription(1).GetMiningAlgo() == cryptonight_r;
155-
156-
bool useCryptonight_r_wow = ::jconf::inst()->GetCurrentCoinSelection().GetDescription(1).GetMiningAlgo() == cryptonight_r_wow;
157-
158163
// set strided index to default
159164
ctx.stridedIndex = 1;
160165

@@ -203,11 +208,11 @@ class autoAdjust
203208
size_t perThread = hashMemSize + 240u;
204209
size_t maxIntensity = memPerThread / perThread;
205210
size_t possibleIntensity = std::min(maxThreads, maxIntensity);
206-
// map intensity to a multiple of the compute unit count, 8 is the number of threads per work group
207-
size_t intensity = (possibleIntensity / (8 * ctx.computeUnits)) * ctx.computeUnits * 8;
211+
// map intensity to a multiple of the compute unit count, default_workSize is the number of threads per work group
212+
size_t intensity = (possibleIntensity / (default_workSize * ctx.computeUnits)) * ctx.computeUnits * default_workSize;
208213
// in the case we use two threads per gpu we can be relax and need no multiple of the number of compute units
209214
if(numThreads == 2)
210-
intensity = (possibleIntensity / 8) * 8;
215+
intensity = (possibleIntensity / default_workSize) * default_workSize;
211216

212217
//If the intensity is 0, then it's because the multiple of the unit count is greater than intensity
213218
if(intensity == 0)
@@ -225,9 +230,8 @@ class autoAdjust
225230
conf += " // gpu: " + ctx.name + std::string(" compute units: ") + std::to_string(ctx.computeUnits) + "\n";
226231
conf += " // memory:" + std::to_string(memPerThread / byteToMiB) + "|" +
227232
std::to_string(ctx.maxMemPerAlloc / byteToMiB) + "|" + std::to_string(maxAvailableFreeMem / byteToMiB) + " MiB (used per thread|max per alloc|total free)\n";
228-
// set 8 threads per block (this is a good value for the most gpus)
229233
conf += std::string(" { \"index\" : ") + std::to_string(ctx.deviceIdx) + ",\n" +
230-
" \"intensity\" : " + std::to_string(intensity) + ", \"worksize\" : " + std::to_string(8) + ",\n" +
234+
" \"intensity\" : " + std::to_string(intensity) + ", \"worksize\" : " + std::to_string(default_workSize) + ",\n" +
231235
" \"affine_to_cpu\" : false, \"strided_index\" : " + std::to_string(ctx.stridedIndex) + ", \"mem_chunk\" : 2,\n"
232236
" \"unroll\" : " +
233237
std::to_string(numUnroll) + ", \"comp_mode\" : true, \"interleave\" : " + std::to_string(ctx.interleave) + "\n" +

xmrstak/backend/nvidia/nvcc_code/cuda_core.cu

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -900,7 +900,7 @@ void cryptonight_core_gpu_hash(nvid_ctx* ctx, uint32_t nonce, const xmrstak_algo
900900
if(blockSizePhase3 * 2 <= ctx->device_maxThreadsPerBlock)
901901
{
902902
blockSizePhase3 *= 2;
903-
gridSizePhase3 = (blockSizePhase3 + 1) / 2;
903+
gridSizePhase3 = (gridSizePhase3 + 1) / 2;
904904
}
905905
for(int i = 0; i < roundsPhase3; i++)
906906
{
@@ -978,7 +978,7 @@ void cryptonight_core_gpu_hash_gpu(nvid_ctx* ctx, uint32_t nonce, const xmrstak_
978978
if(blockSizePhase3 * 2 <= ctx->device_maxThreadsPerBlock)
979979
{
980980
blockSizePhase3 *= 2;
981-
gridSizePhase3 = (blockSizePhase3 + 1) / 2;
981+
gridSizePhase3 = (gridSizePhase3 + 1) / 2;
982982
}
983983

984984
for(int i = 0; i < roundsPhase3; i++)

xmrstak/jconf.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,8 @@ xmrstak::coin_selection coins[] = {
132132
{"qrl", {POW(cryptonight_monero)}, {POW(cryptonight_gpu)}, nullptr},
133133
{"ryo", {POW(cryptonight_gpu)}, {POW(cryptonight_gpu)}, "pool.ryo-currency.com:3333"},
134134
{"torque", {POW(cryptonight_v8_half)}, {POW(cryptonight_gpu)}, nullptr},
135-
{"turtlecoin", {POW(cryptonight_turtle), 6u, POW(cryptonight_aeon)}, {POW(cryptonight_aeon)}, nullptr},
136135
{"plenteum", {POW(cryptonight_turtle)}, {POW(cryptonight_turtle)}, nullptr},
137-
{"zelerius", {POW(cryptonight_v8_zelerius), 7, POW(cryptonight_monero_v8)}, {POW(cryptonight_gpu)}, nullptr},
138-
{"xcash", {POW(cryptonight_v8_double)}, {POW(cryptonight_gpu)}, nullptr}};
136+
{"zelerius", {POW(cryptonight_v8_zelerius), 7, POW(cryptonight_monero_v8)}, {POW(cryptonight_gpu)}, nullptr}};
139137

140138
constexpr size_t coin_algo_size = (sizeof(coins) / sizeof(coins[0]));
141139

xmrstak/version.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#endif
2121

2222
#define XMR_STAK_NAME "xmr-stak"
23-
#define XMR_STAK_VERSION "2.10.6"
23+
#define XMR_STAK_VERSION "2.10.7"
2424

2525
#if defined(_WIN32)
2626
#define OS_TYPE "win"

0 commit comments

Comments
 (0)