Browse Source

Merge branch '201402_opencl_cleanup' into bfgminer

Luke Dashjr 12 years ago
parent
commit
097f70c36a
4 changed files with 13 additions and 8 deletions
  1. 1 1
      README
  2. 8 4
      driver-opencl.c
  3. 1 0
      driver-opencl.h
  4. 3 3
      miner.c

+ 1 - 1
README

@@ -299,7 +299,7 @@ GPU only options:
 
 --auto-fan          Automatically adjust all GPU fan speeds to maintain a target temperature
 --auto-gpu          Automatically adjust all GPU engine clock speeds to maintain a target temperature
---gpu-threads <arg> Number of threads per GPU (1 - 10) (default: -1)
+--gpu-threads <arg> Number of threads per GPU (1 - 10) - one value for all or separate by commas for per card (default: -1)
 --gpu-dyninterval <arg> Set the refresh interval in ms for GPUs using dynamic intensity (default: 7)
 --gpu-engine <arg>  GPU engine (over)clock range in MHz - one value, range and/or comma separated list (e.g. 850-900,900,750-850)
 --gpu-fan <arg>     GPU fan percentage range - one value, range and/or comma separated list (e.g. 25-85,85,65)

+ 8 - 4
driver-opencl.c

@@ -326,15 +326,14 @@ const char *_set_list(char * const arg, const char * const emsg, bool (*set_func
 	return NULL;
 }
 
-#define _SET_INT_LIST(PNAME, VCHECK, FIELD)  \
+#define _SET_INT_LIST2(PNAME, VCHECK, FIELD)  \
 static  \
 bool _set_ ## PNAME (struct cgpu_info * const cgpu, const char * const _val)  \
 {  \
 	const int v = atoi(_val);  \
 	if (!(VCHECK))  \
 		return false;  \
-	struct opencl_device_data * const data = cgpu->device_data;  \
-	data->FIELD = v;  \
+	FIELD = v;  \
 	return true;  \
 }  \
 const char *set_ ## PNAME(char *arg)  \
@@ -343,6 +342,8 @@ const char *set_ ## PNAME(char *arg)  \
 }  \
 // END OF _SET_INT_LIST
 
+#define _SET_INT_LIST(PNAME, VCHECK, FIELD)  \
+	_SET_INT_LIST2(PNAME, VCHECK, ((struct opencl_device_data *)cgpu->device_data)->FIELD)
 
 #ifdef HAVE_OPENCL
 _SET_INT_LIST(vector  , (v == 1 || v == 2 || v == 4), vwidth   )
@@ -486,6 +487,8 @@ const char *set_intensity(char *arg)
 {
 	return _set_list(arg, "Invalid value passed to intensity", _set_intensity);
 }
+
+_SET_INT_LIST2(gpu_threads, (v >= 1 && v <= 10), cgpu->threads)
 #endif
 
 void write_config_opencl(FILE * const fcfg)
@@ -1275,7 +1278,8 @@ static int opencl_autodetect()
 		cgpu->deven = DEV_ENABLED;
 		cgpu->drv = &opencl_api;
 		cgpu->device_id = i;
-		cgpu->threads = opt_g_threads;
+		if (cgpu->threads == 0)
+			cgpu->threads = opt_g_threads;
 		data->virtual_gpu = i;
 		
 #ifdef HAVE_SENSORS

+ 1 - 0
driver-opencl.h

@@ -86,6 +86,7 @@ extern const char *set_gpu_fan(char *arg);
 extern const char *set_gpu_memclock(char *arg);
 extern const char *set_gpu_memdiff(char *arg);
 extern const char *set_gpu_powertune(char *arg);
+extern const char *set_gpu_threads(char *arg);
 extern const char *set_gpu_vddc(char *arg);
 extern const char *set_temp_overheat(char *arg);
 extern const char *set_intensity(char *arg);

+ 3 - 3
miner.c

@@ -2063,10 +2063,10 @@ static struct opt_table opt_config_table[] = {
 		     set_int_0_to_9999, opt_show_intval, &opt_platform_id,
 		     "Select OpenCL platform ID to use for GPU mining"),
 	OPT_WITH_ARG("--gpu-threads",
-		     set_int_1_to_10, opt_show_intval, &opt_g_threads,
-		     "Number of threads per GPU (1 - 10)"),
+		     set_gpu_threads, opt_show_intval, &opt_g_threads,
+		     "Number of threads per GPU (1 - 10) - one value for all or separate by commas for per card"),
 	OPT_WITH_ARG("-g",
-	             set_int_1_to_10, opt_show_intval, &opt_g_threads,
+	             set_gpu_threads, opt_show_intval, &opt_g_threads,
 	             opt_hidden),
 #ifdef HAVE_ADL
 	OPT_WITH_ARG("--gpu-engine",