summaryrefslogtreecommitdiffstats
path: root/xmrstak
diff options
context:
space:
mode:
authorDoug Johnson <dougvj@dougvj.net>2017-12-30 23:59:03 -0700
committerDoug Johnson <dougvj@gmail.com>2017-12-31 00:14:02 -0700
commit0c845b3569f0a2c9524f98d4ca9b6866288fe3d0 (patch)
treea6384988e174183ac73ed5f5cd558766b219e0c1 /xmrstak
parent7584ea8e7a4d4796553c2ddfd615bf96e5c030a8 (diff)
downloadxmr-stak-0c845b3569f0a2c9524f98d4ca9b6866288fe3d0.zip
xmr-stak-0c845b3569f0a2c9524f98d4ca9b6866288fe3d0.tar.gz
Add warning and fallback when auto intensity is 0
Occassionally the auto adjust doesn't find enough memory and the intensity is detected too low and aligned to 0 with the compute units. This patch fixes this situation by issuing a warning with a suggestion to set environment vars and then ignoring the alignment to 0 Per several issues: Principally: https://github.com/fireice-uk/xmr-stak/issues/81 Related: https://github.com/fireice-uk/xmr-stak/issues/490 https://github.com/fireice-uk/xmr-stak/issues/472
Diffstat (limited to 'xmrstak')
-rw-r--r--xmrstak/backend/amd/autoAdjust.hpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/xmrstak/backend/amd/autoAdjust.hpp b/xmrstak/backend/amd/autoAdjust.hpp
index 0bc5239..4673613 100644
--- a/xmrstak/backend/amd/autoAdjust.hpp
+++ b/xmrstak/backend/amd/autoAdjust.hpp
@@ -118,6 +118,19 @@ private:
size_t possibleIntensity = std::min( maxThreads , maxIntensity );
// map intensity to a multiple of the compute unit count, 8 is the number of threads per work group
size_t intensity = (possibleIntensity / (8 * ctx.computeUnits)) * ctx.computeUnits * 8;
+ //If the intensity is 0, then it's because the multiple of the unit count is greater than intensity
+ if (intensity == 0) {
+ /* See Issues:
+ * https://github.com/fireice-uk/xmr-stak/issues/81
+ * https://github.com/fireice-uk/xmr-stak/issues/472
+ * https://github.com/fireice-uk/xmr-stak/issues/490
+ * Note that it appears that Northern Islands GPUs (HD 6XXX) are unaffected by
+ * these environment variables, according to my testing (dougvj)
+ */
+ printer::inst()->print_msg(L0, "WARNING: Autodetected intensity unexpectedly low. Try setting GPU_SINGLE_ALLOC_PERCENT and etc.");
+ intensity = possibleIntensity;
+
+ }
conf += std::string(" // gpu: ") + ctx.name + " memory:" + std::to_string(availableMem / byteToMiB) + "\n";
conf += std::string(" // compute units: ") + std::to_string(ctx.computeUnits) + "\n";
// set 8 threads per block (this is a good value for the most gpus)
OpenPOWER on IntegriCloud