Browse Source

Optimise loop and make debug debug only.

Con Kolivas 14 years ago
parent
commit
f05270b8c8
3 changed files with 21 additions and 20 deletions
  1. 17 18
      cpu-miner.c
  2. 2 1
      ocl.c
  3. 2 1
      oclminer.cl

+ 17 - 18
cpu-miner.c

@@ -814,25 +814,24 @@ static void *gpuminer_thread(void *userdata)
 				BUFFERSIZE, res, 0, NULL, NULL);   
 		if (unlikely(status != CL_SUCCESS))
 			{ applog(LOG_ERR, "Error: clEnqueueReadBuffer failed. (clEnqueueReadBuffer)"); goto out;}
-		for (i = 0; i < 128; i++) {
-			int found = false;
-
-			if (res[i]) {
-				uint32_t start = res[i];
-				uint32_t my_g, my_nonce;
-
-				applog(LOG_INFO, "GPU Found something?");
-				my_g = postcalc_hash(mythr, &work->blk, work, start, start + 1026, &my_nonce, &h0count);
-				found = true;
-				res[i] = 0;
-			}
-			if (found) {
-				/* Clear the buffer again */
-				status = clEnqueueWriteBuffer(clState->commandQueue, clState->outputBuffer, CL_TRUE, 0,
-						BUFFERSIZE, res, 0, NULL, NULL);   
-				if (unlikely(status != CL_SUCCESS))
-					{ applog(LOG_ERR, "Error: clEnqueueWriteBuffer failed."); goto out; }
+		if (unlikely(res[127])) {
+			/* 127 is used as a flag to say nonces exist */
+			for (i = 0; i < 127; i++) {
+				if (res[i]) {
+					uint32_t start = res[i];
+					uint32_t my_g, my_nonce;
+
+					applog(LOG_INFO, "GPU Found something?");
+					my_g = postcalc_hash(mythr, &work->blk, work, start, start + 1026, &my_nonce, &h0count);
+					res[i] = 0;
+				} else
+					break;
 			}
+			/* Clear the buffer again */
+			status = clEnqueueWriteBuffer(clState->commandQueue, clState->outputBuffer, CL_TRUE, 0,
+					BUFFERSIZE, res, 0, NULL, NULL);   
+			if (unlikely(status != CL_SUCCESS))
+				{ applog(LOG_ERR, "Error: clEnqueueWriteBuffer failed."); goto out; }
 		}
 
 		gettimeofday(&tv_end, NULL);

+ 2 - 1
ocl.c

@@ -308,7 +308,8 @@ _clState *initCl(int gpu, char *name, size_t nameSize) {
 	/* copy over all of the generated binaries. */
 	binaries = (char **)malloc( sizeof(char *)*nDevices );
 	for( i = 0; i < nDevices; i++ ) {
-		printf("binary size %d : %d\n", i, binary_sizes[i]);
+		if (opt_debug)
+			applog(LOG_DEBUG, "binary size %d : %d\n", i, binary_sizes[i]);
 		if( binary_sizes[i] != 0 )
 			binaries[i] = (char *)malloc( sizeof(char)*binary_sizes[i] );
 		else

+ 2 - 1
oclminer.cl

@@ -629,9 +629,10 @@ A = A + E;
 H = H + D;
 
 	if (H==0xa41f32e7) {
-		for (it = 0; it != 128; it++) {
+		for (it = 0; it != 127; it++) {
 			if (!output[it]) {
 				output[it] = tnonce;
+				output[127] = 1;
 				break;
 			}
 		}