Browse Source

The amount of work scanned can fluctuate when intensity changes and since we do this one cycle behind, we increment the work more than enough to prevent repeating work.

nfactor-troky
ckolivas 13 years ago
parent
commit
29f0b2714c
  1. 9
      device-gpu.c
  2. 3
      miner.h

9
device-gpu.c

@ -1217,8 +1217,12 @@ static uint64_t opencl_scanhash(struct thr_info *thr, struct work *work, @@ -1217,8 +1217,12 @@ static uint64_t opencl_scanhash(struct thr_info *thr, struct work *work,
++gpu->intensity;
}
}
if (!work->blk.nonce)
gpu->max_hashes = 0;
set_threads_hashes(clState->preferred_vwidth, &threads, &hashes, globalThreads,
localThreads[0], gpu->intensity);
if (hashes > gpu->max_hashes)
gpu->max_hashes = hashes;
status = thrdata->queue_kernel_parameters(clState, &work->blk);
if (unlikely(status != CL_SUCCESS)) {
applog(LOG_ERR, "Error: clSetKernelArg of all params failed.");
@ -1259,7 +1263,10 @@ static uint64_t opencl_scanhash(struct thr_info *thr, struct work *work, @@ -1259,7 +1263,10 @@ static uint64_t opencl_scanhash(struct thr_info *thr, struct work *work,
return 0;
}
work->blk.nonce += hashes;
/* The amount of work scanned can fluctuate when intensity changes
* and since we do this one cycle behind, we increment the work more
* than enough to prevent repeating work */
work->blk.nonce += gpu->max_hashes;
return hashes;
}

3
miner.h

@ -228,9 +228,10 @@ struct cgpu_info { @@ -228,9 +228,10 @@ struct cgpu_info {
int threads;
struct thr_info *thread;
unsigned int max_hashes;
int virtual_gpu;
bool dynamic;
int intensity;
bool dynamic;
float temp;
int cutofftemp;

Loading…
Cancel
Save