Browse Source

Reinstate fix ADL gpu-map not working when there are more ADL devices than openCL patch by Nite69. Add virtual adl mapping for when none is specified on the command line to not crash without a map specified.

Con Kolivas 13 years ago
parent
commit
933627e73b
1 changed files with 12 additions and 10 deletions
  1. 12 10
      adl.c

+ 12 - 10
adl.c

@@ -306,9 +306,10 @@ void init_adl(int nDevs)
 		if (gpus[i].mapped) {
 		if (gpus[i].mapped) {
 			vadapters[gpus[i].virtual_adl].virtual_gpu = i;
 			vadapters[gpus[i].virtual_adl].virtual_gpu = i;
 			applog(LOG_INFO, "Mapping OpenCL device %d to ADL device %d", i, gpus[i].virtual_adl);
 			applog(LOG_INFO, "Mapping OpenCL device %d to ADL device %d", i, gpus[i].virtual_adl);
-		}
+		} else
+			gpus[i].virtual_adl = i;
 	}
 	}
-			
+
 	if (!devs_match) {
 	if (!devs_match) {
 		applog(LOG_ERR, "WARNING: Number of OpenCL and ADL devices did not match!");
 		applog(LOG_ERR, "WARNING: Number of OpenCL and ADL devices did not match!");
 		applog(LOG_ERR, "Hardware monitoring may NOT match up with devices!");
 		applog(LOG_ERR, "Hardware monitoring may NOT match up with devices!");
@@ -347,11 +348,12 @@ void init_adl(int nDevs)
 		int iAdapterIndex;
 		int iAdapterIndex;
 		int lpAdapterID;
 		int lpAdapterID;
 		ADLODPerformanceLevels *lpOdPerformanceLevels;
 		ADLODPerformanceLevels *lpOdPerformanceLevels;
-		int lev;
+		int lev, adlGpu;
 
 
-		i = vadapters[gpu].id;
+		adlGpu = gpus[gpu].virtual_adl;
+		i = vadapters[adlGpu].id;
 		iAdapterIndex = lpInfo[i].iAdapterIndex;
 		iAdapterIndex = lpInfo[i].iAdapterIndex;
-		gpus[gpu].virtual_gpu = vadapters[gpu].virtual_gpu;
+		gpus[gpu].virtual_gpu = vadapters[adlGpu].virtual_gpu;
 
 
 		/* Get unique identifier of the adapter, 0 means not AMD */
 		/* Get unique identifier of the adapter, 0 means not AMD */
 		result = ADL_Adapter_ID_Get(iAdapterIndex, &lpAdapterID);
 		result = ADL_Adapter_ID_Get(iAdapterIndex, &lpAdapterID);
@@ -361,11 +363,11 @@ void init_adl(int nDevs)
 		}
 		}
 
 
 		if (gpus[gpu].deven == DEV_DISABLED) {
 		if (gpus[gpu].deven == DEV_DISABLED) {
-			gpus[i].gpu_engine =
-			gpus[i].gpu_memclock =
-			gpus[i].gpu_vddc =
-			gpus[i].gpu_fan =
-			gpus[i].gpu_powertune = 0;
+			gpus[gpu].gpu_engine =
+			gpus[gpu].gpu_memclock =
+			gpus[gpu].gpu_vddc =
+			gpus[gpu].gpu_fan =
+			gpus[gpu].gpu_powertune = 0;
 			continue;
 			continue;
 		}
 		}