1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-02-10 22:14:18 +00:00

Send correct values to scrypt kernel to get it finally working.

This commit is contained in:
Con Kolivas 2012-07-20 16:16:18 +10:00
parent 3e61db105d
commit d72add9af3
4 changed files with 23 additions and 19 deletions

View File

@ -1711,8 +1711,13 @@ static bool submit_upstream_work(const struct work *work, CURL *curl)
if (!QUIET) { if (!QUIET) {
hash32 = (uint32_t *)(work->hash); hash32 = (uint32_t *)(work->hash);
sprintf(hashshow, "%08lx.%08lx%s", (unsigned long)(hash32[6]), (unsigned long)(hash32[5]), if (opt_scrypt) {
work->block? " BLOCK!" : ""); sprintf(hashshow, "%08lx.%08lx%s", (unsigned long)(hash32[7]), (unsigned long)(hash32[6]),
work->block? " BLOCK!" : "");
} else {
sprintf(hashshow, "%08lx.%08lx%s", (unsigned long)(hash32[6]), (unsigned long)(hash32[5]),
work->block? " BLOCK!" : "");
}
} }
/* Theoretically threads could race when modifying accepted and /* Theoretically threads could race when modifying accepted and
@ -3991,10 +3996,13 @@ bool test_nonce(struct work *work, uint32_t nonce)
{ {
uint32_t *work_nonce = (uint32_t *)(work->data + 64 + 12); uint32_t *work_nonce = (uint32_t *)(work->data + 64 + 12);
if (opt_scrypt) {
*work_nonce = nonce;
return true;
}
*work_nonce = htobe32(nonce); *work_nonce = htobe32(nonce);
if (opt_scrypt)
return true;
return hashtest(work); return hashtest(work);
} }

View File

@ -995,7 +995,7 @@ static cl_int queue_diablo_kernel(_clState *clState, dev_blk_ctx *blk, cl_uint t
#ifdef USE_SCRYPT #ifdef USE_SCRYPT
static cl_int queue_scrypt_kernel(_clState *clState, dev_blk_ctx *blk, __maybe_unused cl_uint threads) static cl_int queue_scrypt_kernel(_clState *clState, dev_blk_ctx *blk, __maybe_unused cl_uint threads)
{ {
cl_uint4 *midstate = (cl_uint4 *)blk->work->midstate; char *midstate = blk->work->midstate;
cl_kernel *kernel = &clState->kernel; cl_kernel *kernel = &clState->kernel;
unsigned int num = 0; unsigned int num = 0;
cl_int status = 0; cl_int status = 0;
@ -1006,16 +1006,9 @@ static cl_int queue_scrypt_kernel(_clState *clState, dev_blk_ctx *blk, __maybe_u
CL_SET_ARG(clState->CLbuffer0); CL_SET_ARG(clState->CLbuffer0);
CL_SET_ARG(clState->outputBuffer); CL_SET_ARG(clState->outputBuffer);
CL_SET_ARG(clState->padbuffer8); CL_SET_ARG(clState->padbuffer8);
CL_SET_ARG(midstate[0]); CL_SET_VARG(4, &midstate[0]);
CL_SET_ARG(midstate[16]); CL_SET_VARG(4, &midstate[16]);
#if 0
clSetKernelArg(clState->kernel,0,sizeof(cl_mem), &clState->CLbuffer[0]);
clSetKernelArg(clState->kernel,1,sizeof(cl_mem), &clState->CLbuffer[1]);
clSetKernelArg(clState->kernel,2,sizeof(cl_mem), &clState->padbuffer8);
clSetKernelArg(clState->kernel,3,sizeof(cl_uint4), &midstate[0]);
clSetKernelArg(clState->kernel,4,sizeof(cl_uint4), &midstate[16]);
#endif
return status; return status;
} }
#endif #endif

View File

@ -229,13 +229,16 @@ static void *postcalc_hash(void *userdata)
pthread_detach(pthread_self()); pthread_detach(pthread_self());
for (entry = 0; entry < FOUND; entry++) { for (entry = 0; entry < FOUND; entry++) {
if (pcd->res[entry]) { uint32_t nonce = pcd->res[entry];
if (nonce) {
applog(LOG_DEBUG, "OCL NONCE %u", nonce);
#ifdef USE_SCRYPT #ifdef USE_SCRYPT
if (opt_scrypt) if (opt_scrypt)
submit_nonce(thr, pcd->work, pcd->res[entry]); submit_nonce(thr, pcd->work, nonce);
else else
#endif #endif
send_nonce(pcd, pcd->res[entry]); send_nonce(pcd, nonce);
nonces++; nonces++;
} }
} }

4
ocl.c
View File

@ -487,8 +487,8 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
#ifdef USE_SCRYPT #ifdef USE_SCRYPT
if (opt_scrypt) { if (opt_scrypt) {
clState->lookup_gap = 1; clState->lookup_gap = 2;
clState->thread_concurrency = 1; clState->thread_concurrency = 6144;
} }
#endif #endif