Browse Source

Do not add time to dynamic opencl calculations over a getwork.

ckolivas 13 years ago
parent
commit
edd9b81622
3 changed files with 13 additions and 4 deletions
  1. 1 0
      cgminer.c
  2. 10 4
      driver-opencl.c
  3. 2 0
      miner.h

+ 1 - 0
cgminer.c

@@ -4239,6 +4239,7 @@ void *miner_thread(void *userdata)
 		if (api->free_work && likely(work->pool))
 			api->free_work(mythr, work);
 		get_work(work, mythr, thr_id);
+		cgpu->new_work = true;
 
 		gettimeofday(&tv_workstart, NULL);
 		work->blk.nonce = 0;

+ 10 - 4
driver-opencl.c

@@ -1532,10 +1532,16 @@ static int64_t opencl_scanhash(struct thr_info *thr, struct work *work,
 		clFinish(clState->commandQueue);
 	}
 
-	gettimeofday(&gpu->tv_gpumid, NULL);
-	if (!gpu->intervals) {
-		gpu->tv_gpustart.tv_sec = gpu->tv_gpumid.tv_sec;
-		gpu->tv_gpustart.tv_usec = gpu->tv_gpumid.tv_usec;
+	if (gpu->dynamic) {
+		gettimeofday(&gpu->tv_gpumid, NULL);
+		if (gpu->new_work) {
+			gpu->new_work = false;
+			gpu->intervals = 0;
+		}
+		if (!gpu->intervals) {
+			gpu->tv_gpustart.tv_sec = gpu->tv_gpumid.tv_sec;
+			gpu->tv_gpustart.tv_usec = gpu->tv_gpumid.tv_usec;
+		}
 	}
 
 	status = thrdata->queue_kernel_parameters(clState, &work->blk, globalThreads[0]);

+ 2 - 0
miner.h

@@ -374,6 +374,8 @@ struct cgpu_info {
 	int intervals, hit;
 #endif
 
+	bool new_work;
+
 	float temp;
 	int cutofftemp;