diff --git a/driver-opencl.c b/driver-opencl.c index 2027a8f6..b6dfe12e 100644 --- a/driver-opencl.c +++ b/driver-opencl.c @@ -163,16 +163,16 @@ char *set_lookup_gap(char *arg) return "Invalid parameters for set lookup gap"; val = atoi(nextptr); - gpus[device++].lookup_gap = val; + gpus[device++].opt_lg = val; while ((nextptr = strtok(NULL, ",")) != NULL) { val = atoi(nextptr); - gpus[device++].lookup_gap = val; + gpus[device++].opt_lg = val; } if (device == 1) { 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; @@ -188,16 +188,16 @@ char *set_thread_concurrency(char *arg) return "Invalid parameters for set thread concurrency"; val = atoi(nextptr); - gpus[device++].thread_concurrency = val; + gpus[device++].opt_tc = val; while ((nextptr = strtok(NULL, ",")) != NULL) { val = atoi(nextptr); - gpus[device++].thread_concurrency = val; + gpus[device++].opt_tc = val; } if (device == 1) { 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; diff --git a/miner.h b/miner.h index 2f51e3a6..04b765c0 100644 --- a/miner.h +++ b/miner.h @@ -362,8 +362,8 @@ struct cgpu_info { cl_ulong max_alloc; #ifdef USE_SCRYPT - int lookup_gap; - int thread_concurrency; + int opt_lg, lookup_gap; + int opt_tc, thread_concurrency; int shaders; #endif struct timeval tv_gpustart;; diff --git a/ocl.c b/ocl.c index e71b9cc8..9e9ef022 100644 --- a/ocl.c +++ b/ocl.c @@ -476,11 +476,13 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) cl_ulong ma = cgpu->max_alloc, mt; int pow2 = 0; - if (!cgpu->lookup_gap) { + if (!cgpu->opt_lg) { applog(LOG_DEBUG, "GPU %d: selecting lookup gap of 2", gpu); 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; if (cgpu->shaders && 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); - } + } else + cgpu->thread_concurrency = cgpu->opt_tc; /* If we have memory to spare, try to find a power of 2 value * >= required amount to map nicely to an intensity */