mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-09 14:28:12 +00:00
Map GPU devices to virtual devices in their true physical order based on BusNumber.
This commit is contained in:
parent
5869382d40
commit
5a0b4f62d0
21
adl.c
21
adl.c
@ -364,30 +364,39 @@ void init_adl(int nDevs)
|
||||
ga->lasttemp = __gpu_temp(ga);
|
||||
}
|
||||
|
||||
/* Search for twin GPUs on a single card. They will be separated by one
|
||||
* bus id and one will have fanspeed while the other won't. */
|
||||
for (gpu = 0; gpu < devices; gpu++) {
|
||||
struct gpu_adl *ga = &gpus[gpu].adl;
|
||||
struct cgpu_info *cgpu = &gpus[gpu];
|
||||
int j;
|
||||
|
||||
if (ga->has_fanspeed)
|
||||
continue;
|
||||
|
||||
cgpu->virtual_gpu = 0;
|
||||
for (j = 0; j < devices; j++) {
|
||||
struct gpu_adl *other_ga;
|
||||
|
||||
if (j == gpu)
|
||||
continue;
|
||||
|
||||
other_ga = &gpus[j].adl;
|
||||
|
||||
/* Find the real GPU order based on their order
|
||||
* according to their iBusNumber value */
|
||||
if (other_ga->iBusNumber < ga->iBusNumber)
|
||||
cgpu->virtual_gpu++;
|
||||
|
||||
/* Search for twin GPUs on a single card. They will be
|
||||
* separated by one bus id and one will have fanspeed
|
||||
* while the other won't. */
|
||||
if (!ga->has_fanspeed) {
|
||||
if (fanspeed_twin(ga, other_ga)) {
|
||||
applog(LOG_INFO, "Dual GPUs detected: %d and %d",
|
||||
ga->gpu, other_ga->gpu);
|
||||
ga->twin = other_ga;
|
||||
other_ga->twin = ga;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
applog(LOG_INFO, "GPU %d mapped to virtual GPU %d", gpu, cgpu->virtual_gpu);
|
||||
}
|
||||
}
|
||||
|
||||
static float __gpu_temp(struct gpu_adl *ga)
|
||||
|
12
adl.h
12
adl.h
@ -20,8 +20,18 @@ void change_gpusettings(int gpu);
|
||||
void gpu_autotune(int gpu, bool *enable);
|
||||
void clear_adl(int nDevs);
|
||||
#else /* HAVE_ADL */
|
||||
#include "miner.h"
|
||||
#define adl_active (0)
|
||||
static inline void init_adl(int nDevs) {}
|
||||
static inline void init_adl(int nDevs)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < nDevs; i++) {
|
||||
struct cgpu_info *cgpu = &gpus[i];
|
||||
|
||||
cgpu->virtual_gpu = i;
|
||||
}
|
||||
}
|
||||
static inline void change_gpusettings(int gpu) { }
|
||||
static inline void clear_adl(int nDevs) {}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user