Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release 2.10.8 #2600

Merged
merged 34 commits into from
Dec 1, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
506942a
Update compile_Windows.md
joey741019 Aug 19, 2019
292db29
AMD: optimize auto adjustement
psychocrypt Aug 24, 2019
28be412
AMD: optimize fiji and radeon VII auto config cn-gpu
psychocrypt Aug 24, 2019
8251393
fix used `empty()` instead of `clear()`
psychocrypt Aug 24, 2019
d048bf7
fix useless mutex
psychocrypt Aug 24, 2019
8fe6928
Merge pull request #2521 from psychocrypt/fix-usedEmtyINsteadOfClear
fireice-uk Aug 26, 2019
cd540b5
Merge pull request #2522 from psychocrypt/fix-uselessMutex
fireice-uk Aug 26, 2019
bfd0ccd
Merge pull request #2520 from psychocrypt/topic-optmimizeFijiCnGPU
fireice-uk Aug 30, 2019
08eff30
Merge pull request #2518 from psychocrypt/topic-amdOptimzeAutoadjustment
fireice-uk Aug 30, 2019
54dae74
Faster xmrstak_backend initialization, prevents unsupported binary in…
ddobreff Sep 12, 2019
e92ebc1
Merge pull request #2528 from blindmisfits/master
psychocrypt Sep 19, 2019
bca9255
fix singletons
psychocrypt Sep 19, 2019
ab65c97
Merge pull request #2529 from psychocrypt/fix-singletons
fireice-uk Sep 20, 2019
f626f07
AMD: optimize unroll for rx5700
psychocrypt Aug 24, 2019
0b1f88c
fix locking to secure affinity update
psychocrypt Sep 24, 2019
ae15a68
Merge pull request #2519 from psychocrypt/topic-optimizeUnrollrx5700
fireice-uk Oct 13, 2019
ffdfa53
Merge pull request #2530 from psychocrypt/fix-threadLockingDuringStartup
fireice-uk Oct 14, 2019
bab1ee8
remove aeon support
psychocrypt Oct 22, 2019
6212745
Merge pull request #2508 from joey741019/patch-1
psychocrypt Oct 22, 2019
2494d96
[NVIDIA] fix possible out of memory with auto cfg
psychocrypt Oct 22, 2019
b339c5d
fix tsl not used on first start
psychocrypt Nov 17, 2019
fc6200a
fix hwloc warning
psychocrypt Nov 17, 2019
d5e0d31
fix benchmark mode
psychocrypt Nov 20, 2019
08ee713
Merge pull request #2537 from psychocrypt/topic-removeAeonSupport
psychocrypt Nov 25, 2019
d146533
Merge pull request #2538 from psychocrypt/fix-possibleOutOfMemoryWith…
psychocrypt Nov 25, 2019
2745c5b
Merge pull request #2557 from psychocrypt/fix-hwlocMembindWarning
psychocrypt Nov 25, 2019
af93f65
Merge pull request #2559 from psychocrypt/fix-irgnoringTLSOnFirstStart
psychocrypt Nov 25, 2019
2182d77
Merge pull request #2562 from psychocrypt/fix-benchmarkModeBlockVersion
psychocrypt Nov 25, 2019
d89b504
update README
Ryo-RU Nov 30, 2019
fa9dbc0
version increase to 2.10.8
psychocrypt Nov 30, 2019
e85c15c
remove monero support
psychocrypt Nov 30, 2019
be51020
Merge pull request #2579 from psychocrypt/topic-updateReadme
fireice-uk Nov 30, 2019
9d0e515
Merge pull request #2580 from psychocrypt/topic-versionIncreaseTo2.10.8
fireice-uk Nov 30, 2019
fd59ef0
Merge pull request #2581 from psychocrypt/topic-removeMoneroSupport
fireice-uk Nov 30, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 10 additions & 116 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,116 +1,10 @@
###### fireice-uk's and psychocrypt's
# XMR-Stak: Cryptonight All-in-One Mining Software

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.



## Video guides
[<img src="doc/_img/stak-yt-cover.jpg">](https://www.youtube.com/playlist?list=PLAhUkom29iGMFoN8pk91JA-oqvxlmJ5H8)
###### Video by Crypto Sewer

## Overview
* [Features](#features)
* [Supported coins and algorithms](#supported-coins-and-algorithms)
* [Download](#download)
* [FAQ](doc/FAQ.md)
* [Developer Donation](#default-developer-donation)
* [Developer PGP Key's](doc/pgp_keys.md)

## Guides and FAQ
To improve our support we created [Xmr-Stak forum](https://www.reddit.com/r/XmrStak). Check it out if you have a problem, or you are looking for most up to date config for your card and [guides](https://www.reddit.com/r/XmrStak/wiki/index).
* [Usage](doc/usage.md)
* [How to compile](doc/compile/compile.md)
* [Fine tuning](doc/tuning.md)
* [FAQ](doc/FAQ.md)
* [Troubleshooting](doc/troubleshooting.md) (Fixing common problems)

## Features

- Supports all common backends (CPU/x86, AMD/NVIDIA GPU).
- Supports all common OS (Linux, Windows and macOS).
- Supports 15 cryptonight-variant mining algorithms + Cryptonight-GPU.
- Easy to use and flexible in setup:
- guided start with easy/advanced setup option (no need to edit a config file for the first start)
- auto-configuration and config file creation for each backend.
- Open source software (GPLv3)
- TLS support.
- [HTML statistics](doc/usage.md#html-and-json-api-report-configuraton)
- [JSON API for monitoring](doc/usage.md#html-and-json-api-report-configuraton)

## HTML reports
<img src="https://gist.githubusercontent.mirror.nvdadr.com/fireice-uk/2da301131ac01695ff79539a27b81d68/raw/4c09cdeee86f94df2e9dd86b927e64aded6184f5/xmr-stak-cpu-hashrate.png" width="260"> <img src="https://gist.githubusercontent.mirror.nvdadr.com/fireice-uk/2da301131ac01695ff79539a27b81d68/raw/4c09cdeee86f94df2e9dd86b927e64aded6184f5/xmr-stak-cpu-results.png" width="260"> <img src="https://gist.githubusercontent.mirror.nvdadr.com/fireice-uk/2da301131ac01695ff79539a27b81d68/raw/4c09cdeee86f94df2e9dd86b927e64aded6184f5/xmr-stak-cpu-connection.png" width="260">

## Supported coins and algorithms

Following coins can be mined using this miner:


- [Aeon](http://www.aeon.cash)
- [BitTube](https://coin.bit.tube/)
- [Conceal](https://conceal.network)
- [Graft](https://www.graft.network)
- [Haven](https://havenprotocol.com)
- [Lethean](https://lethean.io)
- [Masari](https://getmasari.org)
- [Monero](https://getmonero.org)
- [Plenteum](https://www.plenteum.com/)
- [QRL](https://theqrl.org)
- **[Ryo](https://ryo-currency.com) - Upcoming xmr-stak-gui is sponsored by Ryo Currency**
- [Torque](https://torque.cash/)
- [Zelerius](https://zelerius.org/)

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

If your preferred coin is not listed, you can choose one of the following mining algorithms:
- 256Kib scratchpad memory
- cryptonight_turtle


- 1MiB scratchpad memory
- cryptonight_lite
- cryptonight_lite_v7
- cryptonight_lite_v7_xor (algorithm used by ipbc)


- 2MiB scratchpad memory
- cryptonight
- cryptonight_gpu (for Ryo's 14th of Feb fork)
- cryptonight_r
- cryptonight_masari (used in 2018)
- cryptonight_conceal
- cryptonight_v7
- cryptonight_v7_stellite
- cryptonight_v8
- cryptonight_v8_double (used by X-CASH)
- cryptonight_v8_half (used by masari and torque)
- cryptonight_v8_reversewaltz (used by graft)
- cryptonight_v8_zelerius


- 4MiB scratchpad memory
- cryptonight_haven
- cryptonight_heavy

Please note, this list is not complete and is not an endorsement.

## Download

You can find the latest releases and precompiled binaries on GitHub under [Releases](https://github.com/fireice-uk/xmr-stak/releases).

## Default Developer Donation

By default, the miner will donate 2% of the hashpower (2 minutes in 100 minutes) to my pool. If you want to change that, edit [donate-level.hpp](xmrstak/donate-level.hpp) before you build the binaries.

If you want to donate directly to support further development, here is my wallet

fireice-uk:
```
4581HhZkQHgZrZjKeCfCJxZff9E3xCgHGF25zABZz7oR71TnbbgiS7sK9jveE6Dx6uMs2LwszDuvQJgRZQotdpHt1fTdDhk
```

psychocrypt:
```
45tcqnJMgd3VqeTznNotiNj4G9PQoK67TGRiHyj6EYSZ31NUbAfs9XdiU5squmZb717iHJLxZv3KfEw8jCYGL5wa19yrVCn
```
<a href="doc/README.md" _target="blank"><img src="doc/_img/gpu.png"></a>
<a href="#select_coin" _target="blank"><img src="doc/_img/cpu.png"></a>
<table>
<p id="select_coin">
<tr>
<td align="center"><a href=https://github.com/xmrig/xmrig><img src="doc/_img/xmrig.png"></a></td>
<td align="center"><a href=https://ragerx.lol><img src="doc/_img/ragerx.png"></a></td>
<td align="center"><a href=https://github.com/fireice-uk/xmr-stak/tree/xmr-stak-rx/doc/README.md><img src="doc/_img/rx.png"></a></td>
</tr>
</table>
132 changes: 132 additions & 0 deletions doc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@

<table>
<tr>
<td align="center"><a href=https://github.com/fireice-uk/xmr-stak/tree/tree/xmr-stak-rx/doc/README.md><img src="_img/xmr-stak-rx-btn-inactive.png"></a></td>
<td align="center"><a href=#><img src="_img/xmr-stak-btn-active.png"></a></td>
<td align="center"><a href=https://ragerx.lol><img src="_img/ragerx-btn.png"></a></td>
</tr>
</table>

<table>
<tr>
<td align="center"><a href=#features-overview><img src="_img/menu-features-green.png"></a></td>
<td align="center"><a href=#supported-coins-and-algorithms><img src="_img/menu-supported-coins-green.png"></a></td>
<td align="center"><a href=#get-miner><img src="_img/menu-get-miner-green.png"></a></td>
<td align="center"><a href=#additional-guides-and-feedback><img src="_img/menu-support-green.png"></a></td>
<td align="center"><a href=#default-developer-donation><img src="_img/menu-donations-green.png"></a></td>
</tr>
</table>

<table>
<tr>
<td align="center"><a href=usage.md><img src="_img/usage-green.png"></a></td>
<td align="center"><a href=compile/compile.md><img src="_img/how-to-compile-green.png"></a></td>
<td align="center"><a href=tuning.md><img src="_img/fine-tuning-green.png"></a></td>
<td align="center"><a href=troubleshooting.md><img src="_img/troubleshooting-green.png"></a></td>
<td align="center"><a href=FAQ.md><img src="_img/faq-green.png"></a></td>
</tr>
</table>

## Introduction
XMR-Stak is a universal open source stratum pool miner. This miner supports CPUs, AMD and NVIDIA GPUs and can be used for mining various crypto currencies: Ryo, Graft, Bittube, Conceal, Haven and many more Cryptonight coins.

## Features overview
[<img src="_img/features-xmr-stak.png">](#)

## Supported coins and algorithms
Xmr-Stak supports various variants of Cryptonight algorithm. Use one of the following options (type this coin alias in either `pool.txt` config file or on startup configuration under `"currency"` parameter and miner will pick it's variant of Cryptonight algorithm for mining):

| | | |
| --- | --- | --- |
| [BitTube](https://coin.bit.tube/) | [Plenteum](https://www.plenteum.com/) | |
| [Conceal](https://conceal.network) | [QRL](https://theqrl.org) | |
| [Graft](https://www.graft.network) | [Ryo](https://ryo-currency.com) | **Atom Wallet Solo mining mode is sponsored by [RYO](https://ryo-currency.com/)** |
| [Haven](https://havenprotocol.com) | [X-CASH](https://x-network.io/) | |
| [Lethean](https://lethean.io) | [Zelerius](https://zelerius.org/) | |
| [Masari](https://getmasari.org) | | |


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

If your preferred coin is not listed, you can choose one of the following mining algorithms:

| 256 KiB scratchpad memory | 1 MiB scratchpad memory | 2 MiB scratchpad memory | 4 MiB scratchpad memory |
| --- | --- | --- | --- |
| cryptonight_turtle | cryptonight_lite | cryptonight | cryptonight_bittube2 |
| --- | cryptonight_lite_v7 | cryptonight_gpu | cryptonight_haven |
| --- | --- | cryptonight_conceal | cryptonight_heavy |
| --- | --- | cryptonight_r | --- |
| --- | --- | cryptonight_masari (used in 2018) | --- |
| --- | --- | cryptonight_v8_reversewaltz | --- |
| --- | --- | cryptonight_v7 | --- |
| --- | --- | cryptonight_v8 | --- |
| --- | --- | cryptonight_v8_half (used by masari) | --- |
| --- | --- | cryptonight_v8_double (used by X-CASH) | --- |
| --- | --- | cryptonight_v8_zelerius | --- |

Please note, this list is not complete and is not an endorsement.


## Get Miner
Please note that code is developed on the [dev branch](https://github.com/fireice-uk/xmr-stak/commits/dev), if you want to check out the latest updates, before they are merged on main branch, please refer there. Master branch will always point to a version that we consider stable, so you can download the code by simply typing `git clone https://github.com/fireice-uk/xmr-stak.git`

Also you can find the latest releases and precompiled binaries on GitHub under [releases](https://github.com/fireice-uk/xmr-stak/releases/latest) section.

If you want to compile the miner from source files, navigate to ["how to compile"](compile/compile.md) section of docs or [xmr-stak forum](https://www.reddit.com/r/XmrStak/wiki/guides/startup) where you will find the latest step-by-step instructions.


## Start Mining
Miner has 2 ways of initial configuring: simple and advanced. The simple method will prompt user with minimum information. Required answers are y , (or yes), n , (or no):

#### Simple setup:
* `Use simple setup method?` y
* `Please enter the currency that you want to mine:` Enter currency or mining algorithm
* `Enter pool address (pool address:port):` Enter pool connection address:port
* `Username (wallet address or pool login):` Enter wallet address
* `Password (mostly empty or x):` press Enter
* `Does this pool port support TLS/SSL? Use no if unknown. (y/N):` press y or n

#### Advanced setup:
* `Use simple setup method?` n
* `Do you want to use the HTTP interface? Unlike the screen display, browser interface is not affected by the GPU lag. If you don't want to use it, please enter 0, otherwise enter port number that the miner should listen on` 5656
* `Please enter the currency that you want to mine:` Enter currency or mining algorithm
* `Enter pool address (pool address:port):` Enter pool connection address:port
* `Username (wallet address or pool login):` Enter wallet address
* `Password (mostly empty or x):` press Enter
* `Rig identifier for pool-side statistics (needs pool support). Can be empty:` Enter rig name or press Enter
* `Does this pool port support TLS/SSL? Use no if unknown. (y/N)` Enter y or n
* `Do you want to use nicehash on this pool? (y/N)` n
* `Do you want to use multiple pools? (y/N)` Enter y if you want to se up backup pool or n


## Additional Guides and Feedback
[<img src="_img/stak-yt-cover.jpg">](https://www.youtube.com/playlist?list=PLAhUkom29iGMFoN8pk91JA-oqvxlmJ5H8)
###### Video by Crypto Sewer

To improve our support we created [Xmr-Stak forum](https://www.reddit.com/r/XmrStak). Check it out if you have a problem, or you are looking for most up to date config for your card and [guides](https://www.reddit.com/r/XmrStak/wiki/index).

<table>
<tr>
<td align="center"><a href=usage.md><img src="_img/usage-green.png"></a></td>
<td align="center"><a href=compile/compile.md><img src="_img/how-to-compile-green.png"></a></td>
<td align="center"><a href=tuning.md><img src="_img/fine-tuning-green.png"></a></td>
<td align="center"><a href=troubleshooting.md><img src="_img/troubleshooting-green.png"></a></td>
<td align="center"><a href=FAQ.md><img src="_img/faq-green.png"></a></td>
</tr>
</table>

## Default Developer Donation
By default, the miner will donate 2% of the hashpower (2 minutes in 100 minutes) to my pool. If you want to change that, edit [donate-level.hpp](xmrstak/donate-level.hpp) before you build the binaries.

If you want to donate directly to support further development, here is my wallet

fireice-uk:
```
4581HhZkQHgZrZjKeCfCJxZff9E3xCgHGF25zABZz7oR71TnbbgiS7sK9jveE6Dx6uMs2LwszDuvQJgRZQotdpHt1fTdDhk
```

psychocrypt:
```
45tcqnJMgd3VqeTznNotiNj4G9PQoK67TGRiHyj6EYSZ31NUbAfs9XdiU5squmZb717iHJLxZv3KfEw8jCYGL5wa19yrVCn
```
Binary file added doc/_img/2ragerx-btn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/2xmr-stak-btn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/YT.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/cpu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/faq-green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/faq.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/features-xmr-stak.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/features.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/fee.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/fine-tuning-green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/fine-tuning.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/gpu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/header.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/how-to-compile-green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/how-to-compile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/html_reports.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-donations-green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-donations.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-features-green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-features.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-get-miner-green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-get-miner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-support-green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-support.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-supported-coins-green.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/_img/menu-supported-coins.png
Binary file added doc/_img/ragerx-btn.png
Binary file added doc/_img/ragerx.png
Binary file added doc/_img/rx.png
Binary file added doc/_img/split.png
Binary file added doc/_img/troubleshooting-green.png
Binary file added doc/_img/troubleshooting.png
Binary file added doc/_img/usage-green.png
Binary file added doc/_img/usage.png
Binary file added doc/_img/xmr-stak-btn-active.png
Binary file added doc/_img/xmr-stak-btn.png
Binary file added doc/_img/xmr-stak-cpu-connection.png
Binary file added doc/_img/xmr-stak-cpu-hashrate.png
Binary file added doc/_img/xmr-stak-cpu-results.png
Binary file added doc/_img/xmr-stak-rx-btn-inactive.png
Binary file added doc/_img/xmr-stak-rx-btn.png
Binary file added doc/_img/xmrig.png
9 changes: 9 additions & 0 deletions doc/compile/compile_Windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,15 @@ Do not follow old information that you need the AMD APP SDK. AMD has removed the

cd bin\Release

copy C:\xmr-stak-dep\openssl\bin\* .
```
- For Exclude some of dependence you can follow the command below to set the ENABLE to OFF
```
make -G "Visual Studio 15 2017 Win64" -T v141,host=x64 -DCMAKE_BUILD_TYPE=Release -DMICROHTTPD_ENABLE=OFF -DCUDA_ENABLE=OFF -DOpenCL_ENABLE=OFF ..
cmake --build . --config Release --target clean
cmake --build . --config Release --target install
cd bin\Release

copy C:\xmr-stak-dep\openssl\bin\* .
```
- Miner is by default compiled for NVIDIA GPUs (if CUDA is installed), AMD GPUs (if the AMD OCL-SDK_light is installed) and CPUs.
20 changes: 15 additions & 5 deletions xmrstak/backend/amd/autoAdjust.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,10 @@ class autoAdjust
// UNKNOWN
ctx.name.compare("gfx900") == 0 ||
ctx.name.compare("gfx903") == 0 ||
ctx.name.compare("gfx905") == 0)
ctx.name.compare("gfx905") == 0 ||
// Radeon VII
ctx.name.compare("gfx906") == 0 ||
ctx.name.compare("Fiji") == 0)
{
/* Increase the number of threads for AMD VEGA gpus.
* Limit the number of threads based on the issue: https://github.com/fireice-uk/xmr-stak/issues/5#issuecomment-339425089
Expand Down Expand Up @@ -181,22 +184,26 @@ class autoAdjust
}

uint32_t numUnroll = 8;
uint32_t numThreads = 1u;

if(useCryptonight_gpu)
{
// 6 waves per compute unit are a good value (based on profiling)
// @todo check again after all optimizations
maxThreads = ctx.computeUnits * 6 * 8;
ctx.stridedIndex = 0;
numUnroll = 1;
// do not change unroll for AMD RX5700 but set 2 threads per gpu
if(ctx.name.compare("gfx1010") == 0)
numThreads = 2;
else
numUnroll = 1;
}

// keep 128MiB memory free (value is randomly chosen) from the max available memory
const size_t maxAvailableFreeMem = ctx.freeMem - minFreeMem;

size_t memPerThread = std::min(ctx.maxMemPerAlloc, maxAvailableFreeMem);

uint32_t numThreads = 1u;
if(ctx.isAMD && !useCryptonight_gpu)
{
numThreads = 2;
Expand All @@ -210,8 +217,11 @@ class autoAdjust
size_t possibleIntensity = std::min(maxThreads, maxIntensity);
// map intensity to a multiple of the compute unit count, default_workSize is the number of threads per work group
size_t intensity = (possibleIntensity / (default_workSize * ctx.computeUnits)) * ctx.computeUnits * default_workSize;
// in the case we use two threads per gpu we can be relax and need no multiple of the number of compute units
if(numThreads == 2)

size_t computeUnitUtilization = ((possibleIntensity * 100) / (default_workSize * ctx.computeUnits)) % 100;
// in the case we use two threads per gpu or if we can utilize over 75% of the compute units
// we can be relax and need no multiple of the number of compute units
if(numThreads == 2 || computeUnitUtilization >= 75)
intensity = (possibleIntensity / default_workSize) * default_workSize;

//If the intensity is 0, then it's because the multiple of the unit count is greater than intensity
Expand Down
2 changes: 1 addition & 1 deletion xmrstak/backend/amd/minethd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ void minethd::work_main()

order_fix.set_value();
std::unique_lock<std::mutex> lck(thd_aff_set);
lck.release();
lck.unlock();
std::this_thread::yield();

cryptonight_ctx* cpu_ctx;
Expand Down
1 change: 1 addition & 0 deletions xmrstak/backend/cpu/crypto/cryptonight.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ struct cryptonight_ctx
union {
extra_ctx_r cn_r_ctx;
};

};

struct alloc_msg
Expand Down
20 changes: 19 additions & 1 deletion xmrstak/backend/cpu/hwlocMemory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,24 @@

#include <hwloc.h>

static __hwloc_inline int
xmrstak_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags)
{
#if HWLOC_API_VERSION >= 0x20000
return hwloc_set_membind(
topology,
nodeset,
policy,
flags| HWLOC_MEMBIND_BYNODESET);
#else
return hwloc_set_membind_nodeset(
topology,
nodeset,
policy,
flags);
#endif
}

/** pin memory to NUMA node
*
* Set the default memory policy for the current thread to bind memory to the
Expand Down Expand Up @@ -37,7 +55,7 @@ void bindMemoryToNUMANode(size_t puId)
hwloc_obj_t pu = hwloc_get_obj_by_depth(topology, depth, i);
if(pu->os_index == puId)
{
if(0 > hwloc_set_membind_nodeset(
if(0 > xmrstak_set_membind_nodeset(
topology,
pu->nodeset,
HWLOC_MEMBIND_BIND,
Expand Down
2 changes: 1 addition & 1 deletion xmrstak/backend/cpu/minethd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -843,7 +843,7 @@ void minethd::multiway_work_main()

order_fix.set_value();
std::unique_lock<std::mutex> lck(thd_aff_set);
lck.release();
lck.unlock();
std::this_thread::yield();

cryptonight_ctx* ctx[MAX_N];
Expand Down
Loading