From 2b22e9f47b354ffc8d7cabbd60df1d2d294318c1 Mon Sep 17 00:00:00 2001 From: djm34 Date: Thu, 7 Feb 2019 14:26:20 +0200 Subject: [PATCH] stability improvement + change in time out --- algorithm.c | 356 ++++++++++++++++++ miner.h | 1 + ocl.c | 7 + ocl.h | 2 +- sgminer.c | 45 +-- submodules/jansson/src/bos_deserializer.c | 8 +- util.c | 2 +- winbuild/dist/include/gitversion.h | Bin 27 -> 28 bytes winbuild/jansson/Debug/x64/jansson.lib | Bin 0 -> 336102 bytes winbuild/jansson/Release/x64/jansson.lib | Bin 1237366 -> 1237568 bytes winbuild/output/x64/Release/kernel/mtp.cl | 303 +++++++++++---- .../output/x64/Release/kernel/mtp_nvidia.cl | 11 +- .../output/x64/Release/kernel/mtp_vega.cl | 9 +- winbuild/sgminer.vcxproj.user | 3 +- 14 files changed, 614 insertions(+), 133 deletions(-) create mode 100644 winbuild/jansson/Debug/x64/jansson.lib diff --git a/algorithm.c b/algorithm.c index 7c7b16c..aeb9bc1 100644 --- a/algorithm.c +++ b/algorithm.c @@ -57,6 +57,7 @@ const char *algorithm_type_str[] = { "mtp", "mtp_vega", "mtp_nvidia", + "mtp_nvidia2", "Unknown", "Credits", "Scrypt", @@ -1525,6 +1526,360 @@ static cl_int queue_mtp_kernel(_clState *clState, dev_blk_ctx *blk, __maybe_unus } +static cl_int queue_mtp_kernel2(_clState *clState, dev_blk_ctx *blk, __maybe_unused cl_uint threads) +{ + struct pool *pool = blk->work->pool; + mtp_cache_t *mtp = &blk->work->thr->cgpu->mtp_buffer.mtp_cache; + size_t worksize = clState->wsize; + cl_kernel *kernel; + unsigned int num = 0; + cl_int status = 0; + cl_uint le_target; + cl_uint HighNonce, Isolate = UINT32_MAX; + + le_target = (cl_uint)le32toh(((uint32_t *)blk->work->/*device_*/target)[7]); + uint32_t ptarget[8]; + for (int i = 0; i<8; i++) ptarget[i] = le32toh(((uint32_t *)blk->work->/*device_*/target)[i]); + + ///////////////////////////////////////////////////////////////////////////////////////////////////// + + memcpy(clState->cldata, blk->work->data, 84); + uint32_t endiandata[20]; + + for (int k = 0; k < 19; k++) + endiandata[k] = ((uint32_t*)blk->work->data)[k]; + + endiandata[19] = ((uint32_t*)blk->work->data)[20]; + mtp_gpu_t *buffer = &blk->work->thr->cgpu->mtp_buffer; + + // printf("coming in queue mtp kernel prev_job_id %s job_id %s\n", blk->work->prev_job_id, blk->work->job_id); + + uint32_t test = 1; + + if (buffer->prev_job_id != NULL) { + test = strcmp(buffer->prev_job_id, pool->swork.job_id); + } + // printf("coming into initialization test result = %d\n",test); + + if (test != 0) + { // do initialization + /* + printf("*********** INIT MTP**************\n"); + + if (buffer->prev_job_id == NULL) { + mtp = (mtp_cache_t*)malloc(sizeof(mtp_cache_t)); + } + */ + ///////////////////////////////////////////////// + int TED = 0; + for (int i = 0; i< total_devices; i++) + if (devices_enabled[i]) TED++; + + if (TED == 0) TED++; + + buffer->nDevs = TED; + buffer->MaxNonce = 0xFFFFFFFF / TED; + if (buffer->MaxNonce != 0xFFFFFFFF) + buffer->StartNonce = (blk->work->thr->id)*buffer->MaxNonce; + else + buffer->StartNonce = 0; + + + //////////////////////////////////////////////// + if (buffer->prev_job_id != NULL) { + + // free_memory(&mtp->context, (unsigned char *)mtp->instance.memory, mtp->instance.memory_argon_blocks, sizeof(argon_block)); + + free(mtp->instance.memory); + // mtp->ordered_tree->Destructor(); + call_MerkleTree_Destructor(mtp->ordered_tree); + free(mtp->dx); + // delete mtp->ordered_tree; + clReleaseMemObject(buffer->hblock); + clReleaseMemObject(buffer->hblock2); + clReleaseMemObject(buffer->tree); + clReleaseMemObject(buffer->blockheader); + clReleaseMemObject(buffer->root); + clReleaseMemObject(buffer->YLocal); + } + + + + //////////// + size_t hbs_half = 2 * 1024 * 1024 * 128 * sizeof(uint64_t); + size_t hbs = 4 * 1024 * 1024 * 128 * sizeof(uint64_t); + // size_t hbs = 4244635648; + /* + buffer->hblock = clCreateBuffer(clState->context, CL_MEM_READ_WRITE , hbs, NULL, &status); + if (status != CL_SUCCESS) { + buffer->hblock = NULL; + applog(LOG_ERR, "Error %d while creating the hblock buffers.", status); + return status; + } + */ + buffer->hblock = clCreateBuffer(clState->context, CL_MEM_READ_WRITE, hbs_half, NULL, &status); + if (status != CL_SUCCESS) { + buffer->hblock = NULL; + applog(LOG_ERR, "Error %d while creating the hblock buffers.", status); + return status; + } + buffer->hblock2 = clCreateBuffer(clState->context, CL_MEM_READ_WRITE, hbs_half, NULL, &status); + if (status != CL_SUCCESS) { + buffer->hblock = NULL; + applog(LOG_ERR, "Error %d while creating the hblock buffers.", status); + return status; + } + + size_t ts = sizeof(uint64_t) * 2 * 1048576 * 4; + buffer->tree = clCreateBuffer(clState->context, CL_MEM_READ_WRITE, ts, NULL, &status); + if (status != CL_SUCCESS) { + buffer->tree = NULL; + applog(LOG_ERR, "Error %d while creating the tree buffers.", status); + return status; + } + size_t bs = 8 * sizeof(uint32_t); + buffer->blockheader = clCreateBuffer(clState->context, CL_MEM_READ_WRITE, bs, NULL, &status); + if (status != CL_SUCCESS) { + buffer->blockheader = NULL; + applog(LOG_ERR, "Error %d while creating the blockheader buffers.", status); + return status; + } + size_t rs = 4 * sizeof(uint32_t); + buffer->root = clCreateBuffer(clState->context, CL_MEM_READ_WRITE, rs, NULL, &status); + if (status != CL_SUCCESS) { + buffer->root = NULL; + applog(LOG_ERR, "Error %d while creating the root buffers.", status); + return status; + } + + + mtp->dx = (uint8_t*)malloc(MTP_TREE_SIZE); + + mtp->context = init_argon2d_param((const char*)endiandata); + argon2_ctx_from_mtp(&mtp->context, &mtp->instance); + //// copy first blocks to gpu + + size_t TheSize = 128 * sizeof(uint64_t); + size_t TheOffSet = 128 * sizeof(uint64_t); + + status |= clEnqueueWriteBuffer(clState->commandQueue, buffer->hblock, true, TheOffSet * 0, TheSize, (uchar*)mtp->instance.memory[0].v, 0, NULL, NULL); + if (status != CL_SUCCESS) + applog(LOG_ERR, "problem copying instance to hblock", status); + + status |= clEnqueueWriteBuffer(clState->commandQueue, buffer->hblock, true, TheOffSet * 1, TheSize, (uchar*)mtp->instance.memory[1].v, 0, NULL, NULL); + if (status != CL_SUCCESS) + applog(LOG_ERR, "problem copying instance to hblock", status); + + status |= clEnqueueWriteBuffer(clState->commandQueue, buffer->hblock, true, TheOffSet * 1048576, TheSize, (uchar*)mtp->instance.memory[2].v, 0, NULL, NULL); + if (status != CL_SUCCESS) + applog(LOG_ERR, "problem copying instance to hblock", status); + + status |= clEnqueueWriteBuffer(clState->commandQueue, buffer->hblock, true, TheOffSet * 1048577, TheSize, (uchar*)mtp->instance.memory[3].v, 0, NULL, NULL); + if (status != CL_SUCCESS) + applog(LOG_ERR, "problem copying instance to hblock", status); + + status |= clEnqueueWriteBuffer(clState->commandQueue, buffer->hblock2, true, TheOffSet * 2097152 - hbs_half, TheSize, (uchar*)mtp->instance.memory[4].v, 0, NULL, NULL); + if (status != CL_SUCCESS) + applog(LOG_ERR, "problem copying instance to hblock2", status); + + status |= clEnqueueWriteBuffer(clState->commandQueue, buffer->hblock2, true, TheOffSet * 2097153 - hbs_half, TheSize, (uchar*)mtp->instance.memory[5].v, 0, NULL, NULL); + if (status != CL_SUCCESS) + applog(LOG_ERR, "problem copying instance to hblock2", status); + + status |= clEnqueueWriteBuffer(clState->commandQueue, buffer->hblock2, true, TheOffSet * 3145728 - hbs_half, TheSize, (uchar*)mtp->instance.memory[6].v, 0, NULL, NULL); + if (status != CL_SUCCESS) + applog(LOG_ERR, "problem copying instance to hblock2", status); + + status |= clEnqueueWriteBuffer(clState->commandQueue, buffer->hblock2, true, TheOffSet * 3145729 - hbs_half, TheSize, (uchar*)mtp->instance.memory[7].v, 0, NULL, NULL); + if (status != CL_SUCCESS) + applog(LOG_ERR, "problem copying instance to hblock2", status); + + + status |= clEnqueueWriteBuffer(clState->commandQueue, buffer->blockheader, true, 0, 32, (uchar*)mtp->instance.argon_block_header, 0, NULL, NULL); + if (status != CL_SUCCESS) { + applog(LOG_ERR, "Error %d while creating the MTP buffers.", status); + } + num = 0; + kernel = &clState->mtp_0; + + cl_int slice = 0; + size_t Global = 128; + size_t Local = 32; + CL_SET_ARG(buffer->hblock); + CL_SET_ARG(buffer->hblock2); + CL_SET_ARG(buffer->blockheader); + CL_SET_ARG(slice); + status |= clEnqueueNDRangeKernel(clState->commandQueue, clState->mtp_0, 1, NULL, &Global, &Local, 0, NULL, NULL); + if (status != CL_SUCCESS) { + applog(LOG_ERR, "Error %d while creating the MTP buffers kernel 1.", status); + } + num = 0; + kernel = &clState->mtp_1; + + slice = 1; + CL_SET_ARG(buffer->hblock); + CL_SET_ARG(buffer->hblock2); + CL_SET_ARG(buffer->blockheader); + CL_SET_ARG(slice); + status |= clEnqueueNDRangeKernel(clState->commandQueue, clState->mtp_1, 1, NULL, &Global, &Local, 0, NULL, NULL); + // clFinish(clState->commandQueue); + if (status != CL_SUCCESS) { + applog(LOG_ERR, "Error %d while creating the MTP buffers kernel 2.", status); + } + num = 0; + kernel = &clState->mtp_2; + slice = 2; + CL_SET_ARG(buffer->hblock); + CL_SET_ARG(buffer->hblock2); + CL_SET_ARG(buffer->blockheader); + CL_SET_ARG(slice); + status |= clEnqueueNDRangeKernel(clState->commandQueue, clState->mtp_2, 1, NULL, &Global, &Local, 0, NULL, NULL); + // clFinish(clState->commandQueue); + if (status != CL_SUCCESS) { + applog(LOG_ERR, "Error %d while creating the MTP buffers kernel 3.", status); + } + num = 0; + kernel = &clState->mtp_3; + slice = 3; + CL_SET_ARG(buffer->hblock); + CL_SET_ARG(buffer->hblock2); + CL_SET_ARG(buffer->blockheader); + CL_SET_ARG(slice); + status |= clEnqueueNDRangeKernel(clState->commandQueue, clState->mtp_3, 1, NULL, &Global, &Local, 0, NULL, NULL); + // clFinish(clState->commandQueue); + if (status != CL_SUCCESS) { + applog(LOG_ERR, "Error %d while creating the MTP buffers kernel 4.", status); + } + num = 0; + kernel = &clState->mtp_fc; + + slice = 4194304; + CL_SET_ARG(slice); + CL_SET_ARG(buffer->hblock); + CL_SET_ARG(buffer->hblock2); + CL_SET_ARG(buffer->tree); + size_t Global2 = 4194304; + size_t Local2 = 256; + status |= clEnqueueNDRangeKernel(clState->commandQueue, clState->mtp_fc, 1, NULL, &Global2, &Local2, 0, NULL, NULL); + if (status != CL_SUCCESS) { + applog(LOG_ERR, "Error %d while creating mtp_fc kernel", status); + } + size_t mtp_tree_size = 2 * 1048576 * 4 * sizeof(uint64_t); + clEnqueueReadBuffer(clState->commandQueue, buffer->tree, CL_TRUE, 0, mtp_tree_size, mtp->dx, 0, NULL, NULL); + + // mtp->ordered_tree = new MerkleTree(mtp->dx, true); + mtp->ordered_tree = call_new_MerkleTree(mtp->dx, true); + + + buffer->prev_job_id = pool->swork.job_id; + + call_MerkleTree_getRoot(mtp->ordered_tree, mtp->TheMerkleRoot); + /* + MerkleTree::Buffer root = mtp->ordered_tree->getRoot(); + std::copy(root.begin(), root.end(), mtp->TheMerkleRoot); + root.resize(0); + */ + + } + + + ///////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////////// + //// hashing here + // DO NOT flip80. + cl_int status1 = 0; + status1 = clEnqueueWriteBuffer(clState->commandQueue, buffer->root, CL_TRUE, 0, 4 * sizeof(uint32_t), mtp->TheMerkleRoot, 0, NULL, NULL); + if (status1 != CL_SUCCESS) { + applog(LOG_ERR, "Error %d with writing to root buffer.", status1); + } + status1 = clEnqueueWriteBuffer(clState->commandQueue, clState->CLbuffer0, true, 0, 20 * sizeof(uint32_t), (unsigned char*)endiandata, 0, NULL, NULL); + if (status1 != CL_SUCCESS) { + applog(LOG_ERR, "Error %d with writing to CLbuffer0.", status1); + } + + size_t p_global_work_offset = buffer->StartNonce; + uint32_t rawint = 2 << (blk->work->thr->cgpu->intensity - 1); + + + size_t tsy = sizeof(uint32_t) * 8 * rawint; + buffer->YLocal = clCreateBuffer(clState->context, CL_MEM_READ_WRITE, tsy, NULL, &status); + if (status != CL_SUCCESS) { + buffer->tree = NULL; + applog(LOG_ERR, "Error %d while creating the YLocal buffers.", status); + return status; + } + + + kernel = &clState->mtp_yloop_init; + size_t Global2 = rawint; //1048576; //65536; + size_t Local2 = worksize; + size_t buffersize = 1024; + num = 0; + CL_SET_ARG(clState->CLbuffer0); + CL_SET_ARG(buffer->YLocal); + CL_SET_ARG(buffer->root); + + status1 = clEnqueueNDRangeKernel(clState->commandQueue, clState->mtp_yloop_init, 1, &p_global_work_offset, &Global2, &Local2, 0, NULL, NULL); + if (status1 != CL_SUCCESS) { + applog(LOG_ERR, "Error %d with kernel mtp_yloop_init.", status1); + } + kernel = &clState->mtp_yloop; + num = 0; + + CL_SET_ARG(buffer->hblock); + CL_SET_ARG(buffer->hblock2); + CL_SET_ARG(buffer->YLocal); + CL_SET_ARG(clState->outputBuffer); + CL_SET_ARG(le_target); + uint32_t Solution[256]; + + status1 = clEnqueueNDRangeKernel(clState->commandQueue, clState->mtp_yloop, 1, &p_global_work_offset, &Global2, &Local2, 0, NULL, NULL); + if (status1 != CL_SUCCESS) { + applog(LOG_ERR, "Error %d with kernel mtp_yloop.", status1); + } + + status1 = clEnqueueReadBuffer(clState->commandQueue, clState->outputBuffer, CL_TRUE, 0, buffersize, Solution, 0, NULL, NULL); + if (status1 != CL_SUCCESS) { + applog(LOG_ERR, "Error reading Solution.", status1); + } + buffer->StartNonce += rawint; + if (Solution[0xff]) { + // uint256 TheUint256Target[1]; + // TheUint256Target[0] = ((uint256*)ptarget)[0]; + unsigned char mtpHashValue[32]; + argon_blockS nBlockMTP[MTP_L * 2] = { 0 }; + unsigned char nProofMTP[MTP_L * 3 * 353] = { 0 }; + // printf("MTP Found a Nonce = %08x\n",Solution[0]); + + + + uint32_t is_sol = mtp_solver(0, clState->commandQueue, buffer->hblock, buffer->hblock2, Solution[0], + &mtp->instance, nBlockMTP, nProofMTP, mtp->TheMerkleRoot, mtpHashValue, mtp->ordered_tree, endiandata, (uint256*)ptarget); + if (is_sol == 1) { + memcpy(pool->mtp_cache.mtpPOW.MerkleRoot, mtp->TheMerkleRoot, 16); + for (int j = 0; j<(MTP_L * 2); j++) + for (int i = 0; i<128; i++) + pool->mtp_cache.mtpPOW.nBlockMTP[j][i] = nBlockMTP[j].v[i]; + + memcpy(pool->mtp_cache.mtpPOW.nProofMTP, nProofMTP, sizeof(unsigned char)* MTP_L * 3 * 353); + pool->mtp_cache.mtpPOW.TheNonce = Solution[0]; + ((uint32_t*)blk->work->data)[19] = Solution[0]; + // printf("*************************************************************************************Found a solution\n"); + } + else { + Solution[0xff] = 0; + status1 = clEnqueueWriteBuffer(clState->commandQueue, clState->outputBuffer, CL_TRUE, 0, buffersize, Solution, 0, NULL, NULL); + printf("*************************************************************************************Not a solution\n"); + } + } + // clFinish(clState->commandQueue); + //printf("after mtp_yloop\n"); + // if (status != CL_SUCCESS) + // cg_runlock(&dag->lock); + return status; +} + + static void append_equihash_compiler_options(struct _build_kernel_data *data, struct cgpu_info *cgpu, struct _algorithm_t *algorithm) { @@ -1724,6 +2079,7 @@ static algorithm_settings_t algos[] = { { "mtp" , ALGO_MTP , "", 1, 1, 1, 0, 0, 0xFF, 0xFFFFULL, 0x0000ffffUL, 1, 0,0, mtp_regenhash , NULL, queue_mtp_kernel , gen_hash, NULL }, { "mtp_vega" , ALGO_MTP , "", 1, 1, 1, 0, 0, 0xFF, 0xFFFFULL, 0x0000ffffUL, 1, 0,0, mtp_regenhash , NULL, queue_mtp_kernel , gen_hash, NULL }, { "mtp_nvidia" , ALGO_MTP , "", 1, 1, 1, 0, 0, 0xFF, 0xFFFFULL, 0x0000ffffUL, 1, 0,0, mtp_regenhash , NULL, queue_mtp_kernel , gen_hash, NULL }, + { "mtp_nvidia2" , ALGO_MTP , "", 1, 1, 1, 0, 0, 0xFF, 0xFFFFULL, 0x0000ffffUL, 1, 0,0, mtp_regenhash , NULL, queue_mtp_kernel , gen_hash, NULL }, // kernels starting from this will have difficulty calculated by using fuguecoin algorithm #define A_FUGUE(a, b, c) \ diff --git a/miner.h b/miner.h index efea1c9..d7ea017 100644 --- a/miner.h +++ b/miner.h @@ -576,6 +576,7 @@ typedef struct _mtp_gpu_t { cl_mem blockheader; cl_mem tree; // dx cl_mem root; + cl_mem YLocal; // struct pool *pool; mtp_cache_t mtp_cache; uint32_t nDevs; diff --git a/ocl.c b/ocl.c index 9c8d258..0174eec 100644 --- a/ocl.c +++ b/ocl.c @@ -887,6 +887,13 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize, algorithm_t *alg applog(LOG_ERR, "Error %d: Creating Kernel \"mtp_fc\" from program. (clCreateKernel)", status); return NULL; } +/* + clState->mtp_yloop_init = clCreateKernel(clState->program, "mtp_yloop_init", &status); + if (status != CL_SUCCESS) { + applog(LOG_ERR, "Error %d: Creating Kernel \"mtp_yloop_init\" from program. (clCreateKernel)", status); + return NULL; + } +*/ clState->mtp_yloop = clCreateKernel(clState->program, "mtp_yloop", &status); if (status != CL_SUCCESS) { applog(LOG_ERR, "Error %d: Creating Kernel \"mtp_yloop\" from program. (clCreateKernel)", status); diff --git a/ocl.h b/ocl.h index 6881d8d..ae6d998 100644 --- a/ocl.h +++ b/ocl.h @@ -25,9 +25,9 @@ typedef struct __clState { cl_kernel mtp_fc; //initialization + cl_kernel mtp_yloop_init; // main kernel cl_kernel mtp_yloop; // main kernel - size_t n_extra_kernels; cl_command_queue commandQueue; cl_program program; diff --git a/sgminer.c b/sgminer.c index f8dbf81..146a61b 100644 --- a/sgminer.c +++ b/sgminer.c @@ -5702,6 +5702,8 @@ static bool parse_stratum_response_bos(struct pool *pool, json_t *val) goto out; } +// else +// ret = true; id = json_integer_value(id_val); @@ -5724,44 +5726,9 @@ static bool parse_stratum_response_bos(struct pool *pool, json_t *val) cg_runlock(&pool->data_lock); //for cryptonight, the result contains the "status" object which should = "OK" on accept - if (pool->algorithm.type == ALGO_CRYPTONIGHT) { - json_t *res_id, *res_job; - - //check if the result contains an id... if so then we need to process as first job, not share response - if ((res_id = json_object_get(res_val, "id"))) { - cg_wlock(&pool->data_lock); - strcpy(pool->XMRAuthID, json_string_value(res_id)); - cg_wunlock(&pool->data_lock); - - //get the job object and send to parse notify - if ((res_job = json_object_get(res_val, "job"))) { - ret = parse_notify_cn(pool, res_job); - } - - goto out; - } - - if (json_is_null(err_val) && !strcmp(json_string_value(json_object_get(res_val, "status")), "OK")) { - success = true; - } - else { - char *ss; - if (err_val) { - ss = json_dumps(err_val, JSON_INDENT(3)); - } - else { - ss = strdup("(unknown reason)"); - } - - applog(LOG_INFO, "JSON-RPC response decode failed: %s", ss); - - free(ss); - } - } - else { success = json_is_true(res_val); - } + if (success) { applog(LOG_NOTICE, "Accepted untracked stratum share from %s", get_pool_name(pool)); @@ -5774,6 +5741,7 @@ static bool parse_stratum_response_bos(struct pool *pool, json_t *val) total_diff_accepted += pool_diff; pool->diff_accepted += pool_diff; mutex_unlock(&stats_lock); +// ret = true; } else { applog(LOG_NOTICE, "Rejected untracked stratum share from %s", get_pool_name(pool)); @@ -5784,6 +5752,7 @@ static bool parse_stratum_response_bos(struct pool *pool, json_t *val) total_diff_rejected += pool_diff; pool->diff_rejected += pool_diff; mutex_unlock(&stats_lock); +// ret = true; } goto out; } @@ -6106,7 +6075,7 @@ static void *stratum_rthread_bos(void *userdata) FD_ZERO(&rd); FD_SET(pool->sock, &rd); - timeout.tv_sec = 90; + timeout.tv_sec = 150; timeout.tv_usec = 0; /* The protocol specifies that notify messages should be sent @@ -6156,7 +6125,7 @@ static void *stratum_rthread_bos(void *userdata) applog(LOG_DEBUG, "%s: parsing the object..."); if (!parse_method_bos(pool, s) && !parse_stratum_response_bos(pool, s)) - applog(LOG_INFO, "Unknown stratum msg "); + applog(LOG_DEBUG, "Unknown stratum msg "); else if (pool->swork.clean) { struct work *work = make_work(); diff --git a/submodules/jansson/src/bos_deserializer.c b/submodules/jansson/src/bos_deserializer.c index 8258d68..19d6c3a 100644 --- a/submodules/jansson/src/bos_deserializer.c +++ b/submodules/jansson/src/bos_deserializer.c @@ -174,7 +174,7 @@ static char *read_raw_string(buffer_t *buffer) { size_t len = read_uvarint(buffer); if (len > 0) { - char *utf8String = (char*)jsonp_malloc(sizeof(char) * len); + char *utf8String = (char*)jsonp_malloc(sizeof(char) * len + 1); read_buffer(buffer, utf8String, sizeof(char) * len); memset(utf8String + len, (char)0, sizeof(char)); return utf8String; @@ -185,7 +185,10 @@ static char *read_raw_string(buffer_t *buffer) { } static json_t *read_string(buffer_t *buffer) { - return json_string(read_raw_string(buffer)); + char *str = read_raw_string(buffer); + json_t *ret = json_string(str); + free(str); + return ret; } static json_t *read_bytes(buffer_t *buffer) { @@ -225,6 +228,7 @@ static json_t *read_obj(buffer_t *buffer, json_error_t *error) { return NULL; json_object_set(&object->json, key, entry); + free(key); } return &object->json; diff --git a/util.c b/util.c index 5b0450a..73333bb 100644 --- a/util.c +++ b/util.c @@ -3230,7 +3230,7 @@ bool parse_method_bos(struct pool *pool, json_t *val) ret = true; goto done; } - + if (ret==false) printf("the false buf %s\n",buf); done: return ret; diff --git a/winbuild/dist/include/gitversion.h b/winbuild/dist/include/gitversion.h index 82766c2214ad51178ba9acb59bd1d62e9f2ac865..cc66934ecd602918e52ea1aa13a172add50a3c16 100644 GIT binary patch literal 28 KcmZQzzzqNZ8~_0T literal 27 icmY#RNlnYlOH~LBc8z!U42chO4GQ-3_fs%b-~s@7FbCfN diff --git a/winbuild/jansson/Debug/x64/jansson.lib b/winbuild/jansson/Debug/x64/jansson.lib new file mode 100644 index 0000000000000000000000000000000000000000..e97b957c1ec70383f976747c5152f8a5a47672b6 GIT binary patch literal 336102 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ȫn>o8LmyS3K+Ai-dH$_U-=o! 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 CNa-g4 delta 5568 zcmb7I3s6+o89rz4vWvj7doK&iYY*%KYgSo75M42g0!oaJr~w)?Dgug1CBZ06G>O?& zQY0FQDVaH)bed!)bvn~z^3YB%8%sp1d73nhNt%a`WMWgJi8bcYL`C}l=kCHT!qhs0 z=idMP-}it2cg{WcLjRHZKOUaHC(|&wsHCuHN>5!`%1hplvLbHx=V#}$(Ea|pvft=K z*Svc`Z|g~_OmaSbw061o+Wv&SA3wYBx!->HXQ!+BaQP)lk`jyr=j`9|?tVi>$IeQ1 zXC?Jskj;UVOAkAaFX;Zm@6~cyN{!*$dZm?WQIW1uGE6R1Nt-rx;y2N#*=wXuV!A0se5G%9-er3oXj^An-WxGpP>Yd7AuZMr|_ly2CJZL z?Kh<1#g1M526b1z@$Ttk(aqbKD698fHeQXiHI+Yp)u@bW>qD;(_g?>+ra5lFsKyP% zK7M43A}VN}8@VNHeACf!NzT!>#KNyNew=fk*Z9vJ9jBf<8aL= zZ_PqmM{ekjjv@Iw7VV2y7wt=UIxv>(mBprQkxQ1sua=lb=glb_<}H|NQVXUgK09M9 zUhq66n)iXW#L;>GxOJHKg|`5^>6tv+5p#hOQm8K6 zBA=m_4U7;{B*7U%0=$k+SIh60=SY@W%hr1obNZtl=GnIRo!?#MaX*_&_*)Ok`O@ty zuV)FH$c>lHR%sdB46;Jr;+L&_x?hf0clqU(1nT8K?UE-iE_{cO!0rY@Omi(%_e}~t zZ>Na^cCxXlVfD(!Ep1JkNS7qVf`q`w7DC?4hKmD;`4eFB0Hcq$(cU!LYNxLQGKN3! zh|CPH{tYsW{OL#JTbEnSol6%UtGnP?3Uez#1G)6ga=?EZop1s7)@jJcK(;$@_5H9AH!UJ6Cow*EIMOn z8fv=JPTTEttDP=mx)ogCE$13$ehO*bd{Vc3lkxr&aQ#!0x}sY?OjYk5xgieNGHsUB z^ks}l%FT_fn^vxF+SIhMxuK=`zNRu_BrDWoPsr78t9k2`Qfm4prLU{wY&HoTgnoEK zvy!3Ic6Ib+FDS=w>1F#O8tCI+H7j2KL2$6T+BIOW@?5bmSR_}&)FFtu2JNob?R{O_ zb4Z{USb|sVT^)NJK(p7epa{bAA@MLK66WengL)kaumYGlXou-q_<=l#V&Y#hvDMzU z-6)a3a}h}^w&w&1!!%&-NQkO}z#|BZw}sj{5`l~chB~{3ogD>Cjjo2eukm|~hJssP zgL`N(hE;ha=AkUq zf#_8SpZp}X&UgUdPCZUYtu5C$Vd{@V7jxamS!#3B9HSl}hNGPcK z2i$|PX<)34d6L7%!j31dj1k5rk7Dd6n3%~ucPSH>!k!01b0ZDSVQvQ#p&>(aSTJ|k z&#(RvLR97jO;i9x6^0dEgcziL%a^TI(*4B@ zT8D?aFhUWE`3|yz#caEhosYW|pCNOucdA&%?_o|nROKk9v$}Kg7-}^>_+kY9N;N1?8IfHqoGtacJ*eggiU34yV%$O+@T!pZ^9BU20 zmCF!5d|m+4LdT2`XRl#i1zrte-p;VOpP;$Z!Y%vZxYS$}AVL9Di69DBu05lJqA@ze z%tnla7=9xdJ!0kn#vh15(33X;G9ai53mFl!_eL24ncDf z6px_&BSE8K5)gAMVoZp6`9?5_l=z8z9)ipWI&>o-3l^G>7#T6AZUmzsW&vW75cAJr zj6ZTSM6atAK?@O-jG&)~L1SZ55OW)1Y={~7pBO)+rXpw&g3=Ha!y;cfGa`S+wD)+Z527ev~+wpXVclqadu2jQn zJ%%3$k2!)%!)FYv7W(AE?9MdpBkK%$yG-*oSUbGNBJ(E548ie5ZyDd&@k2r(e5l|m z#5ldn#X;!yBVp8Ht+;NnMp91zOypwSfeSPdf^dK@$7>IgMt}80a6~ngtQ{GGViHoI zjdy6T#6q|S8|%QvdgiGM+gJo)C^7|xV4d(v6O-j#gT+fA9)7#Dl{PZBh)%=odipOCVGy zNlq3Ig(WG6fiNoR-9tibAtA}bLaZ6r3(4e;6H10P_xhqPESj2|$H@AoNSzxDgn*Js zphR;iU#rABTjW&HFfHKyClq^9ktS9*bx2g$oM1oGsS(50yLX6ydQfZ5`!VIp{j8L!B`KgmiCY>g#WSDe<@Q#p*X!1Ar<6=@W2pKXku2%fhQ@V6;CeG-~pmh;MtN5`~ zN}6?jsA}sFusI^Bg)66(ys`cuBK{WFdm8rFGwOS%l`^VN3GB9TdeE?fw|}nW>U>%J l-K%;h@57s=C;6V2rDX0I(3^B+Yxu>31}DA1R}Sct{|l=-i;e&Q diff --git a/winbuild/output/x64/Release/kernel/mtp.cl b/winbuild/output/x64/Release/kernel/mtp.cl index 7101852..63231f7 100644 --- a/winbuild/output/x64/Release/kernel/mtp.cl +++ b/winbuild/output/x64/Release/kernel/mtp.cl @@ -56,6 +56,17 @@ __constant uint4 Elements[1]; #define devectorize(x) as_ulong(x) #define vectorize(x) as_uint2(x) +static __constant const uint64_t blakeIV_[8] = { + 0x6a09e667f3bcc908UL, + 0xbb67ae8584caa73bUL, + 0x3c6ef372fe94f82bUL, + 0xa54ff53a5f1d36f1UL, + 0x510e527fade682d1UL, + 0x9b05688c2b3e6c1fUL, + 0x1f83d9abfb41bd6bUL, + 0x5be0cd19137e2179UL + }; + static __constant const uint2 blakeInit[8] = { ( 0xf2bdc948U, 0x6a09e667U ), @@ -196,7 +207,7 @@ static inline uint64_t eorswap64(uint64_t u, uint64_t v) - static inline int blake2b_compress2_256(uint64_t *hash, const uint64_t *hzcash, const uint64_t block[16], const uint32_t len) + static inline int blake2b_compress2_256(uint64_t *hash, const uint64_t *hzcash, const uint64_t *block, const uint32_t len) { uint64_t m[16]; uint64_t v[16]; @@ -429,7 +440,7 @@ static inline uint64_t eorswap64(uint64_t u, uint64_t v) hash[i] = hzcash[i] ^ v[i] ^ v[i + 8]; -#undef G +#undef G #undef ROUND return 0; } @@ -437,32 +448,142 @@ static inline uint64_t eorswap64(uint64_t u, uint64_t v) - static inline int blake2b_compress2b(uint64_t *hzcash, const uint64_t * __restrict__ m, const uint32_t len, int last) + static inline int blake2b_compress2b( uint64_t *hzcash, const uint64_t * __restrict__ block, const uint32_t len, int last) { - // uint64_t m[16]; - uint64_t v[16]; - - const uint64_t blakeIV_[8] = { - 0x6a09e667f3bcc908UL, - 0xbb67ae8584caa73bUL, - 0x3c6ef372fe94f82bUL, - 0xa54ff53a5f1d36f1UL, - 0x510e527fade682d1UL, - 0x9b05688c2b3e6c1fUL, - 0x1f83d9abfb41bd6bUL, - 0x5be0cd19137e2179UL - }; - /* + uint64_t m[16]; + uint64_t v[16]; + #pragma unroll for (int i = 0; i < 16; ++i) - m[i] = block[i]; - */ -#pragma unroll + m[i] = block[i]; + + #pragma unroll for (int i = 0; i < 8; ++i) v[i] = hzcash[i]; + v[8] = blakeIV_[0]; + v[9] = blakeIV_[1]; + v[10] = blakeIV_[2]; + v[11] = blakeIV_[3]; + v[12] = blakeIV_[4]; + v[12] ^= len; + v[13] = blakeIV_[5]; + v[14] = last ? ~blakeIV_[6] : blakeIV_[6]; + v[15] = blakeIV_[7]; + + +#define G(r,i,a,b,c,d) \ + { \ + v[a] += v[b] + (m[blake2b_sigma[r][2*i+0]]); \ + v[d] = eorswap64(v[d] , v[a]); \ + v[c] += v[d]; \ + v[b] = ROTR64X(v[b] ^ v[c], 24); \ + v[a] += v[b] + (m[blake2b_sigma[r][2*i+1]]); \ + v[d] = ROTR64X(v[d] ^ v[a], 16); \ + v[c] += v[d]; \ + v[b] = ROTR64X(v[b] ^ v[c], 63); \ + } +#define ROUND(r) \ + { \ + G(r,0, 0,4,8,12); \ + G(r,1, 1,5,9,13); \ + G(r,2, 2,6,10,14); \ + G(r,3, 3,7,11,15); \ + G(r,4, 0,5,10,15); \ + G(r,5, 1,6,11,12); \ + G(r,6, 2,7,8,13); \ + G(r,7, 3,4,9,14); \ + } + +#define H(r,i,a,b,c,d) \ + { \ + v[a] += v[b] + (m[blake2b_sigma[r][2*i+0]]); \ + v[d] = eorswap64(v[d] , v[a]); \ + v[c] += v[d]; \ + v[b] = ROTR64X(v[b] ^ v[c], 24); \ + v[a] += v[b] + (m[blake2b_sigma[r][2*i+1]]); \ + v[d] = ROTR64X(v[d] ^ v[a], 16); \ + v[c] += v[d]; \ + } + +#define ROUNDF \ + { \ + G(11,0, 0,4,8,12); \ + G(11,1, 1,5,9,13); \ + G(11,2, 2,6,10,14); \ + G(11,3, 3,7,11,15); \ + if(!last){\ + G(11,4, 0,5,10,15); \ + G(11,5, 1,6,11,12); \ + G(11,6, 2,7,8,13); \ + G(11,7, 3,4,9,14); \ + }else{\ + H(11,4, 0,5,10,15); \ + H(11,5, 1,6,11,12); \ + H(11,6, 2,7,8,13); \ + H(11,7, 3,4,9,14); \ + }\ + } + + + ROUND(0); + ROUND(1); + ROUND(2); + ROUND(3); + ROUND(4); + ROUND(5); + ROUND(6); + ROUND(7); + ROUND(8); + ROUND(9); + ROUND(10); + ROUND(11); + + // ROUNDF; + /* + ROUND0; + ROUND1; + ROUND2; + ROUND3; + ROUND4; + ROUND5; + ROUND6; + ROUND7; + ROUND8; + ROUND9; + ROUND10; + ROUND11; + */ + + for (int i = 0; i < 8; ++i) + hzcash[i] ^= v[i] ^ v[i + 8]; + +#undef G +#undef ROUND + return 0; +} + + + + static inline int blake2b_compress2b_new( uint64_t *hzcash, const uint64_t * __restrict__ block, const uint64_t * __restrict__ block0, const uint32_t len, int last) +{ + + uint64_t m[16]; + uint64_t v[16]; + + #pragma unroll + for (int i = 0; i < 4; ++i) + m[i] = block0[i]; + + #pragma unroll + for (int i = 4; i < 16; ++i) + m[i] = block[i-4]; + + #pragma unroll + for (int i = 0; i < 8; ++i) + v[i] = hzcash[i]; v[8] = blakeIV_[0]; @@ -475,10 +596,6 @@ static inline uint64_t eorswap64(uint64_t u, uint64_t v) v[14] = last ? ~blakeIV_[6] : blakeIV_[6]; v[15] = blakeIV_[7]; - /* - if(!thread){ - printf("0x%llxULL\n", v[12]); - }*/ #define G(r,i,a,b,c,d) \ { \ @@ -546,6 +663,7 @@ static inline uint64_t eorswap64(uint64_t u, uint64_t v) ROUND(9); ROUND(10); ROUND(11); + // ROUNDF; /* ROUND0; @@ -570,6 +688,7 @@ static inline uint64_t eorswap64(uint64_t u, uint64_t v) return 0; } + #if PLATFORM == OPENCL_PLATFORM_NVIDIA && COMPUTE >= 35 static unsigned lane_id() { @@ -591,13 +710,17 @@ static unsigned warp_id() //#define FARLOAD(x) far[warp][(x) + lane*(LEN+SHR_OFF)] #define FARSTORE(x) far[warp][lane + (x)*(LEN+SHR_OFF)] #define FARLOAD(x) FarReg[(x)] - -#define SHR_OFF 0 +#ifdef WORKSIZE #define TPB_MTP WORKSIZE +#else +#define TPB_MTP 64 +#endif +#define SHR_OFF 0 + __attribute__((reqd_work_group_size(TPB_MTP, 1, 1))) -__kernel void mtp_yloop(__global unsigned int* pData, __global const ulong2 * __restrict__ DBlock, __global const ulong2 * __restrict__ DBlock2, -__global uint4 * Elements, __global uint32_t * __restrict__ SmallestNonce, uint pTarget) +__kernel void mtp_yloop_init(__global unsigned int* pData, __global uint8 * GYlocal, +__global uint4 * Elements) { uint32_t NonceNumber = 1; // old @@ -605,8 +728,7 @@ __global uint4 * Elements, __global uint32_t * __restrict__ SmallestNonce, uint uint32_t event_thread = get_global_id(0) - get_global_offset(0); //thread / ThreadNumber; uint32_t NonceIterator = get_global_id(0); - int lane = get_local_id(0) % DIV; - int warp = get_local_id(0) / DIV;;//warp_id(); + ulong2 FarReg[8]; uint32_t farIndex; @@ -622,11 +744,9 @@ __global uint4 * Elements, __global uint32_t * __restrict__ SmallestNonce, uint 0x1f83d9abfb41bd6bUL, 0x5be0cd19137e2179UL, }; - __global const ulong2 * __restrict__ GBlock = &((__global ulong2*)DBlock)[0]; - __global const ulong2 * __restrict__ GBlock2 = &((__global ulong2*)DBlock2)[0]; + uint8 YLocal; - uint8 YLocalPrint; - + ulong8 DataChunk[2] = { 0 }; ((uint8 *)DataChunk)[0] = ((__global uint8 *)pData)[0]; @@ -638,38 +758,77 @@ __global uint4 * Elements, __global uint32_t * __restrict__ SmallestNonce, uint ((uint16*)DataChunk)[1].hi.s0 = NonceIterator; blake2b_compress2_256((uint64_t*)&YLocal, lblakeFinal, (uint64_t*)DataChunk, 100); + GYlocal[event_thread] = YLocal; - YLocalPrint = YLocal; + } + +__attribute__((reqd_work_group_size(TPB_MTP, 1, 1))) +__kernel void mtp_yloop(__global unsigned int* pData, __global const ulong2 * __restrict__ DBlock, __global const ulong2 * __restrict__ DBlock2, +__global uint4 * Elements, __global uint32_t * __restrict__ SmallestNonce, uint pTarget) +/* +__attribute__((reqd_work_group_size(TPB_MTP, 1, 1))) +__kernel void mtp_yloop( __global const ulong2 * __restrict__ DBlock, __global const ulong2 * __restrict__ DBlock2, +__global uint8 * GYlocal, __global uint32_t * __restrict__ SmallestNonce, uint pTarget) +*/ +{ + + uint32_t NonceNumber = 1; // old + uint32_t ThreadNumber = 1; + uint32_t event_thread = get_global_id(0) - get_global_offset(0); //thread / ThreadNumber; + uint32_t NonceIterator = get_global_id(0); + + +// ulong2 FarReg[8]; + uint32_t farIndex; + const uint32_t half_memcost = 2 * 1024 * 1024; + const uint64_t lblakeFinal[8] = + { + 0x6a09e667f2bdc928UL, + 0xbb67ae8584caa73bUL, + 0x3c6ef372fe94f82bUL, + 0xa54ff53a5f1d36f1UL, + 0x510e527fade682d1UL, + 0x9b05688c2b3e6c1fUL, + 0x1f83d9abfb41bd6bUL, + 0x5be0cd19137e2179UL, + }; + + uint64_t DataChunk[16] = {0}; + uint8 YLocal; // = GYlocal[event_thread] ; + + + + (( uint8 *)DataChunk)[0] = ((__global uint8 *)pData)[0]; + (( uint8 *)DataChunk)[1] = ((__global uint8 *)pData)[1]; + + (( uint4*)DataChunk)[4] = ((__global uint4*)pData)[4]; + (( uint4*)DataChunk)[5] = ((__global uint4*)Elements)[0]; + + (( uint16*)DataChunk)[1].hi.s0 = NonceIterator; + + blake2b_compress2_256((uint64_t*)&YLocal, lblakeFinal, ( uint64_t*)DataChunk, 100); + bool init_blocks; uint32_t unmatch_block; // uint32_t localIndex; init_blocks = false; unmatch_block = 0; - + uint16 DataTmp; #pragma unroll 1 - for (int j = 1; j <= mtp_L; j++) + for (int j = 1; j <= mtp_L; j++) { - // localIndex = YLocal.s0%(argon_memcost); - // localIndex = YLocal.s0 & 0x3FFFFF; - // uint64_t farIndex[8]; - - #pragma unroll - for (int t = 0; t<2; t++) { - ulong2 *D = (ulong2*)&YLocal; - FARLOAD(t + 6) = D[t]; - - } farIndex = YLocal.s0 & 0x3FFFFF; - ulong8 DataChunk[2]; + uint32_t len = 0; - uint16 DataTmp; uint2 * blake_init = (uint2*)&DataTmp; - for (int i = 0; i<8; i++)blake_init[i] = as_uint2(lblakeFinal[i]); + + for (int i = 0; i<8; i++) + (( uint2*)&DataTmp)[i] = as_uint2(lblakeFinal[i]); // uint8 part; @@ -677,43 +836,23 @@ __global uint4 * Elements, __global uint32_t * __restrict__ SmallestNonce, uint #pragma unroll 1 for (int i = 0; i < 9; i++) { int last = (i == 8); - #pragma unroll - for (int t = 0; t<2; t++) { - ulong2 *D = (ulong2*)&YLocal; - D[t] = FARLOAD(t + 6); - } - barrier(CLK_LOCAL_MEM_FENCE); - + len += last ? 32 : 128; - - //if(!last) - { - - + + + __global const ulong2 * __restrict__ farP = (farIndex - --kernel mtp_nvidia -o stratum+tcp://zcoin.mintpond.com:3000 -u aDn7MMYjVQqenT11VFDYHfFdwXmSTRUTak.worker -p 0,strict,verbose,d=700 --intensity 20 --device 0,1 --worksize 256 + + WindowsLocalDebugger .\output\x64\Release C:\Users\djm34\Documents\GitHub\sgminer\winbuild\output\x64\Release\sgminer.exe