Merge remote-tracking branch 'conman/master'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
diff --git a/adl.c b/adl.c
index d705575..c7ed42d 100644
--- a/adl.c
+++ b/adl.c
@@ -21,6 +21,7 @@
#include "adl_functions.h"
bool adl_active;
+bool opt_reorder = false;
int opt_hysteresis = 3;
const int opt_targettemp = 75;
@@ -268,21 +269,25 @@ void init_adl(int nDevs)
* ordering the GPUs according to ascending order fixes it. Linux
* has usually sequential but decreasing order instead! */
for (i = 0; i < devices; i++) {
- int j, virtual_gpu = 0;
+ int j, virtual_gpu;
- for (j = 0; j < devices; j++) {
- if (i == j)
- continue;
+ if (opt_reorder) {
+ virtual_gpu = 0;
+ for (j = 0; j < devices; j++) {
+ if (i == j)
+ continue;
#ifdef WIN32
- if (adapters[j].iBusNumber < adapters[i].iBusNumber)
+ if (adapters[j].iBusNumber < adapters[i].iBusNumber)
#else
- if (adapters[j].iBusNumber > adapters[i].iBusNumber)
+ if (adapters[j].iBusNumber > adapters[i].iBusNumber)
#endif
- virtual_gpu++;
- }
- if (virtual_gpu != i)
- applog(LOG_INFO, "Mapping device %d to GPU %d according to Bus Number order",
- i, virtual_gpu);
+ virtual_gpu++;
+ }
+ if (virtual_gpu != i)
+ applog(LOG_INFO, "Mapping device %d to GPU %d according to Bus Number order",
+ i, virtual_gpu);
+ } else
+ virtual_gpu = i;
vadapters[virtual_gpu].virtual_gpu = i;
vadapters[virtual_gpu].id = adapters[i].id;
}
@@ -293,6 +298,10 @@ void init_adl(int nDevs)
}
applog(LOG_ERR, "WARNING: Number of OpenCL and ADL devices does not match!");
applog(LOG_ERR, "Hardware monitoring may NOT match up with devices!");
+ for (i = 0; i < devices; i++) {
+ vadapters[i].virtual_gpu = i;
+ vadapters[i].id = adapters[i].id;
+ }
}
for (gpu = 0; gpu < devices; gpu++) {
diff --git a/adl.h b/adl.h
index 8e54983..f0246c9 100644
--- a/adl.h
+++ b/adl.h
@@ -2,6 +2,7 @@
#define __ADL_H__
#ifdef HAVE_ADL
bool adl_active;
+bool opt_reorder;
int opt_hysteresis;
const int opt_targettemp;
const int opt_overheattemp;
diff --git a/main.c b/main.c
index 713253c..fdd3d84 100644
--- a/main.c
+++ b/main.c
@@ -1564,6 +1564,11 @@ static struct opt_table opt_config_table[] = {
OPT_WITHOUT_ARG("--disable-gpu|-G",
opt_set_bool, &opt_nogpu,
"Disable GPU mining even if suitable devices exist"),
+#ifdef HAVE_ADL
+ OPT_WITHOUT_ARG("--dev-reorder",
+ opt_set_bool, &opt_reorder,
+ "Attempt to reorder GPU devices according to PCI Bus ID"),
+#endif
#endif
OPT_WITH_ARG("--donation",
set_float_0_to_99, &opt_show_floatval, &opt_donation,
@@ -1846,6 +1851,7 @@ static char *print_ndevs_and_exit(int *ndevs)
{
opt_log_output = true;
opencl_api.api_detect();
+ clear_adl(*ndevs);
applog(LOG_INFO, "%i GPU devices detected", *ndevs);
exit(*ndevs);
}
diff --git a/util.c b/util.c
index 733d8ad..46a2aa3 100644
--- a/util.c
+++ b/util.c
@@ -373,7 +373,7 @@ json_t *json_rpc_call(CURL *curl, const char *url,
headers = curl_slist_append(headers,
"Content-type: application/json");
headers = curl_slist_append(headers,
- "X-Mining-Extensions: longpoll midstate rollntime");
+ "X-Mining-Extensions: longpoll rollntime");
headers = curl_slist_append(headers, len_hdr);
headers = curl_slist_append(headers, user_agent_hdr);
headers = curl_slist_append(headers, "Expect:"); /* disable Expect hdr*/