Browse Source

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

nfactor-troky
Con Kolivas 12 years ago
parent
commit
fc44b6d7a1
  1. 12
      driver-opencl.c
  2. 4
      miner.h
  3. 11
      ocl.c

12
driver-opencl.c

@ -163,16 +163,16 @@ char *set_lookup_gap(char *arg) @@ -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) @@ -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;

4
miner.h

@ -362,8 +362,8 @@ struct cgpu_info { @@ -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;;

11
ocl.c

@ -476,11 +476,13 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) @@ -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) @@ -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 */

Loading…
Cancel
Save