Browse Source

Use different variables for command line specified lookup gap and thread concurrency to differentiate user defined versus auto chosen values.

Con Kolivas 13 years ago
parent
commit
fc44b6d7a1
3 changed files with 15 additions and 12 deletions
  1. 6 6
      driver-opencl.c
  2. 2 2
      miner.h
  3. 7 4
      ocl.c

+ 6 - 6
driver-opencl.c

@@ -163,16 +163,16 @@ char *set_lookup_gap(char *arg)
 		return "Invalid parameters for set lookup gap";
 		return "Invalid parameters for set lookup gap";
 	val = atoi(nextptr);
 	val = atoi(nextptr);
 
 
-	gpus[device++].lookup_gap = val;
+	gpus[device++].opt_lg = val;
 
 
 	while ((nextptr = strtok(NULL, ",")) != NULL) {
 	while ((nextptr = strtok(NULL, ",")) != NULL) {
 		val = atoi(nextptr);
 		val = atoi(nextptr);
 
 
-		gpus[device++].lookup_gap = val;
+		gpus[device++].opt_lg = val;
 	}
 	}
 	if (device == 1) {
 	if (device == 1) {
 		for (i = device; i < MAX_GPUDEVICES; i++)
 		for (i = device; i < MAX_GPUDEVICES; i++)
-			gpus[i].lookup_gap = gpus[0].lookup_gap;
+			gpus[i].opt_lg = gpus[0].opt_lg;
 	}
 	}
 
 
 	return NULL;
 	return NULL;
@@ -188,16 +188,16 @@ char *set_thread_concurrency(char *arg)
 		return "Invalid parameters for set thread concurrency";
 		return "Invalid parameters for set thread concurrency";
 	val = atoi(nextptr);
 	val = atoi(nextptr);
 
 
-	gpus[device++].thread_concurrency = val;
+	gpus[device++].opt_tc = val;
 
 
 	while ((nextptr = strtok(NULL, ",")) != NULL) {
 	while ((nextptr = strtok(NULL, ",")) != NULL) {
 		val = atoi(nextptr);
 		val = atoi(nextptr);
 
 
-		gpus[device++].thread_concurrency = val;
+		gpus[device++].opt_tc = val;
 	}
 	}
 	if (device == 1) {
 	if (device == 1) {
 		for (i = device; i < MAX_GPUDEVICES; i++)
 		for (i = device; i < MAX_GPUDEVICES; i++)
-			gpus[i].thread_concurrency = gpus[0].thread_concurrency;
+			gpus[i].opt_tc = gpus[0].opt_tc;
 	}
 	}
 
 
 	return NULL;
 	return NULL;

+ 2 - 2
miner.h

@@ -362,8 +362,8 @@ struct cgpu_info {
 	cl_ulong max_alloc;
 	cl_ulong max_alloc;
 
 
 #ifdef USE_SCRYPT
 #ifdef USE_SCRYPT
-	int lookup_gap;
-	int thread_concurrency;
+	int opt_lg, lookup_gap;
+	int opt_tc, thread_concurrency;
 	int shaders;
 	int shaders;
 #endif
 #endif
 	struct timeval tv_gpustart;;
 	struct timeval tv_gpustart;;

+ 7 - 4
ocl.c

@@ -476,11 +476,13 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
 		cl_ulong ma = cgpu->max_alloc, mt;
 		cl_ulong ma = cgpu->max_alloc, mt;
 		int pow2 = 0;
 		int pow2 = 0;
 
 
-		if (!cgpu->lookup_gap) {
+		if (!cgpu->opt_lg) {
 			applog(LOG_DEBUG, "GPU %d: selecting lookup gap of 2", gpu);
 			applog(LOG_DEBUG, "GPU %d: selecting lookup gap of 2", gpu);
 			cgpu->lookup_gap = 2;
 			cgpu->lookup_gap = 2;
-		}
-		if (!cgpu->thread_concurrency) {
+		} else
+			cgpu->lookup_gap = cgpu->opt_lg;
+
+		if (!cgpu->opt_tc) {
 			cgpu->thread_concurrency = ma / 32768 / cgpu->lookup_gap;
 			cgpu->thread_concurrency = ma / 32768 / cgpu->lookup_gap;
 			if (cgpu->shaders && cgpu->thread_concurrency > cgpu->shaders) {
 			if (cgpu->shaders && cgpu->thread_concurrency > cgpu->shaders) {
 				cgpu->thread_concurrency -= cgpu->thread_concurrency % cgpu->shaders;
 				cgpu->thread_concurrency -= cgpu->thread_concurrency % cgpu->shaders;
@@ -489,7 +491,8 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
 			}
 			}
 				
 				
 			applog(LOG_DEBUG, "GPU %d: selecting thread concurrency of %u",gpu,  cgpu->thread_concurrency);
 			applog(LOG_DEBUG, "GPU %d: selecting thread concurrency of %u",gpu,  cgpu->thread_concurrency);
-		}
+		} else
+			cgpu->thread_concurrency = cgpu->opt_tc;
 
 
 		/* If we have memory to spare, try to find a power of 2 value
 		/* If we have memory to spare, try to find a power of 2 value
 		 * >= required amount to map nicely to an intensity */
 		 * >= required amount to map nicely to an intensity */