mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-03 18:44:29 +00:00
core: initial implementation of user-settable xintensity. Has a bug.
Changing `intensity` and to it from `xintensity` works fine. Changing `xintensity` sometimes fails to enqueue kernel. For example, starting with --xintensity=128 (on a 5850) and then changing to 64, 42, or 100 is reliable. However, changing to 127 is not, and produces [04:13:01] Error -54: Enqueueing kernel onto command queue. (clEnqueueNDRangeKernel) [04:13:01] GPU 0 failure, disabling! Manually enabling the disabled GPU is successful, but the GPU no longer submits shares. This might be a hardware limitation.
This commit is contained in:
parent
9d0b7f9658
commit
463668b878
@ -693,10 +693,10 @@ retry:
|
|||||||
mhash_base = false;
|
mhash_base = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlog("GPU %d: %.1f / %.1f %sh/s | A:%d R:%d HW:%d U:%.2f/m I:%d\n",
|
wlog("GPU %d: %.1f / %.1f %sh/s | A:%d R:%d HW:%d U:%.2f/m I:%d xI:%d\n",
|
||||||
gpu, displayed_rolling, displayed_total, mhash_base ? "M" : "K",
|
gpu, displayed_rolling, displayed_total, mhash_base ? "M" : "K",
|
||||||
cgpu->accepted, cgpu->rejected, cgpu->hw_errors,
|
cgpu->accepted, cgpu->rejected, cgpu->hw_errors,
|
||||||
cgpu->utility, cgpu->intensity);
|
cgpu->utility, cgpu->intensity, cgpu->xintensity);
|
||||||
#ifdef HAVE_ADL
|
#ifdef HAVE_ADL
|
||||||
if (gpus[gpu].has_adl) {
|
if (gpus[gpu].has_adl) {
|
||||||
int engineclock = 0, memclock = 0, activity = 0, fanspeed = 0, fanpercent = 0, powertune = 0;
|
int engineclock = 0, memclock = 0, activity = 0, fanspeed = 0, fanpercent = 0, powertune = 0;
|
||||||
@ -732,11 +732,6 @@ retry:
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
wlog("Last initialised: %s\n", cgpu->init);
|
wlog("Last initialised: %s\n", cgpu->init);
|
||||||
wlog("Intensity: ");
|
|
||||||
if (gpus[gpu].dynamic)
|
|
||||||
wlog("Dynamic (only one thread in use)\n");
|
|
||||||
else
|
|
||||||
wlog("%d\n", gpus[gpu].intensity);
|
|
||||||
for (i = 0; i < mining_threads; i++) {
|
for (i = 0; i < mining_threads; i++) {
|
||||||
thr = get_thread(i);
|
thr = get_thread(i);
|
||||||
if (thr->cgpu != cgpu)
|
if (thr->cgpu != cgpu)
|
||||||
@ -769,7 +764,7 @@ retry:
|
|||||||
wlog("\n");
|
wlog("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
wlogprint("[E]nable [D]isable [I]ntensity [R]estart GPU %s\n",adl_active ? "[C]hange settings" : "");
|
wlogprint("[E]nable [D]isable [I]ntensity [x]Intensity [R]estart GPU %s\n",adl_active ? "[C]hange settings" : "");
|
||||||
|
|
||||||
wlogprint("Or press any other key to continue\n");
|
wlogprint("Or press any other key to continue\n");
|
||||||
logwin_update();
|
logwin_update();
|
||||||
@ -855,9 +850,38 @@ retry:
|
|||||||
}
|
}
|
||||||
gpus[selected].dynamic = false;
|
gpus[selected].dynamic = false;
|
||||||
gpus[selected].intensity = intensity;
|
gpus[selected].intensity = intensity;
|
||||||
|
gpus[selected].xintensity = 0; // disable
|
||||||
wlogprint("Intensity on gpu %d set to %d\n", selected, intensity);
|
wlogprint("Intensity on gpu %d set to %d\n", selected, intensity);
|
||||||
pause_dynamic_threads(selected);
|
pause_dynamic_threads(selected);
|
||||||
goto retry;
|
goto retry;
|
||||||
|
} else if (!strncasecmp(&input, "x", 1)) {
|
||||||
|
int xintensity;
|
||||||
|
char *intvar;
|
||||||
|
|
||||||
|
if (selected)
|
||||||
|
selected = curses_int("Select GPU to change experimental intensity on");
|
||||||
|
if (selected < 0 || selected >= nDevs) {
|
||||||
|
wlogprint("Invalid selection\n");
|
||||||
|
goto retry;
|
||||||
|
}
|
||||||
|
|
||||||
|
intvar = curses_input("Set experimental GPU scan intensity (1 -> 999)"); // FIXME: no magic numbers
|
||||||
|
if (!intvar) {
|
||||||
|
wlogprint("Invalid input\n");
|
||||||
|
goto retry;
|
||||||
|
}
|
||||||
|
xintensity = atoi(intvar);
|
||||||
|
free(intvar);
|
||||||
|
if (xintensity < 1 || xintensity > 999) { // FIXME: no magic numbers
|
||||||
|
wlogprint("Invalid selection\n");
|
||||||
|
goto retry;
|
||||||
|
}
|
||||||
|
gpus[selected].dynamic = false;
|
||||||
|
gpus[selected].intensity = 0; // disable
|
||||||
|
gpus[selected].xintensity = xintensity;
|
||||||
|
wlogprint("Experimental intensity on gpu %d set to %d\n", selected, xintensity);
|
||||||
|
pause_dynamic_threads(selected);
|
||||||
|
goto retry;
|
||||||
} else if (!strncasecmp(&input, "r", 1)) {
|
} else if (!strncasecmp(&input, "r", 1)) {
|
||||||
if (selected)
|
if (selected)
|
||||||
selected = curses_int("Select GPU to attempt to restart");
|
selected = curses_int("Select GPU to attempt to restart");
|
||||||
@ -937,6 +961,8 @@ static void set_threads_hashes(unsigned int vectors, unsigned int compute_shader
|
|||||||
|
|
||||||
*globalThreads = threads;
|
*globalThreads = threads;
|
||||||
*hashes = threads * vectors;
|
*hashes = threads * vectors;
|
||||||
|
|
||||||
|
applog(LOG_DEBUG, "Set globalThreads to %d, hashes to %d", *globalThreads, *hashes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We have only one thread that ever re-initialises GPUs, thus if any GPU
|
/* We have only one thread that ever re-initialises GPUs, thus if any GPU
|
||||||
|
Loading…
x
Reference in New Issue
Block a user