|
|
|
@ -1111,6 +1111,36 @@ static char *set_schedtime(const char *arg, struct schedtime *st)
@@ -1111,6 +1111,36 @@ static char *set_schedtime(const char *arg, struct schedtime *st)
|
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef HAVE_ADL |
|
|
|
|
static char *set_gpu_engine(char *arg) |
|
|
|
|
{ |
|
|
|
|
int i, val = 0, device = 0; |
|
|
|
|
char *saveptr = NULL, *nextptr; |
|
|
|
|
|
|
|
|
|
nextptr = strtok_r(arg, ",", &saveptr); |
|
|
|
|
if (nextptr == NULL) |
|
|
|
|
return "Invalid parameters for set gpu engine"; |
|
|
|
|
val = atoi(nextptr); |
|
|
|
|
if (val <= 0 || val >= 9999) |
|
|
|
|
return "Invalid value passed to set_gpu_engine"; |
|
|
|
|
|
|
|
|
|
gpus[device++].gpu_engine = val; |
|
|
|
|
|
|
|
|
|
while ((nextptr = strtok_r(NULL, ",", &saveptr)) != NULL) { |
|
|
|
|
val = atoi(nextptr); |
|
|
|
|
if (val <= 0 || val >= 9999) |
|
|
|
|
return "Invalid value passed to set_gpu_engine"; |
|
|
|
|
|
|
|
|
|
gpus[device++].gpu_engine = val; |
|
|
|
|
} |
|
|
|
|
for (i = device; i < 16; i++) |
|
|
|
|
gpus[i].gpu_engine = val; |
|
|
|
|
|
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* These options are available from config file or commandline */ |
|
|
|
|
static struct opt_table opt_config_table[] = { |
|
|
|
|
OPT_WITH_ARG("--algo|-a", |
|
|
|
@ -1171,6 +1201,11 @@ static struct opt_table opt_config_table[] = {
@@ -1171,6 +1201,11 @@ static struct opt_table opt_config_table[] = {
|
|
|
|
|
OPT_WITH_ARG("--gpu-threads|-g", |
|
|
|
|
set_int_1_to_10, opt_show_intval, &opt_g_threads, |
|
|
|
|
"Number of threads per GPU (1 - 10)"), |
|
|
|
|
#ifdef HAVE_ADL |
|
|
|
|
OPT_WITH_ARG("--gpu-engine", |
|
|
|
|
set_gpu_engine, NULL, NULL, |
|
|
|
|
"Set the GPU engine (over)clock in Mhz - one value for all or separate by commas for per card."), |
|
|
|
|
#endif |
|
|
|
|
OPT_WITH_ARG("--intensity|-I", |
|
|
|
|
forced_int_1010, NULL, &scan_intensity, |
|
|
|
|
"Intensity of GPU scanning (-10 -> 10, default: dynamic to maintain desktop interactivity)"), |
|
|
|
@ -1485,7 +1520,7 @@ static WINDOW *mainwin, *statuswin, *logwin;
@@ -1485,7 +1520,7 @@ static WINDOW *mainwin, *statuswin, *logwin;
|
|
|
|
|
static double total_secs = 0.1; |
|
|
|
|
static char statusline[256]; |
|
|
|
|
static int cpucursor, gpucursor, logstart, logcursor; |
|
|
|
|
struct cgpu_info *gpus; |
|
|
|
|
struct cgpu_info gpus[16]; /* Maximum number apparently possible */ |
|
|
|
|
static struct cgpu_info *cpus; |
|
|
|
|
|
|
|
|
|
static inline void unlock_curses(void) |
|
|
|
@ -4975,11 +5010,6 @@ int main (int argc, char *argv[])
@@ -4975,11 +5010,6 @@ int main (int argc, char *argv[])
|
|
|
|
|
if (unlikely(!cpus)) |
|
|
|
|
quit(1, "Failed to calloc cpus"); |
|
|
|
|
} |
|
|
|
|
if (gpu_threads) { |
|
|
|
|
gpus = calloc(nDevs, sizeof(struct cgpu_info)); |
|
|
|
|
if (unlikely(!gpus)) |
|
|
|
|
quit(1, "Failed to calloc gpus"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
stage_thr_id = mining_threads + 3; |
|
|
|
|
thr = &thr_info[stage_thr_id]; |
|
|
|
@ -5196,8 +5226,6 @@ int main (int argc, char *argv[])
@@ -5196,8 +5226,6 @@ int main (int argc, char *argv[])
|
|
|
|
|
clear_adl(nDevs); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if (gpu_threads) |
|
|
|
|
free(gpus); |
|
|
|
|
if (opt_n_threads) |
|
|
|
|
free(cpus); |
|
|
|
|
|
|
|
|
|