diff options
author | psychocrypt <psychocryptHPC@gmail.com> | 2018-02-17 20:51:55 +0100 |
---|---|---|
committer | psychocrypt <psychocryptHPC@gmail.com> | 2018-02-17 20:51:55 +0100 |
commit | 737185ee82bae05953680b1f4c4cdf8646c51b5a (patch) | |
tree | c9af561f9e47488f7e0bc6a79e7a0f15ad991500 /xmrstak/backend/amd/amd_gpu/gpu.cpp | |
parent | 29bac54912faa1090f34f3fb5e23cb018f2c36e1 (diff) | |
download | xmr-stak-737185ee82bae05953680b1f4c4cdf8646c51b5a.zip xmr-stak-737185ee82bae05953680b1f4c4cdf8646c51b5a.tar.gz |
AMD: `mem_chunk`and new `strided_index`
- add new option for `strided_index`
- add additional option if `strided_index == 2` to controll the memory chunk with
Diffstat (limited to 'xmrstak/backend/amd/amd_gpu/gpu.cpp')
-rw-r--r-- | xmrstak/backend/amd/amd_gpu/gpu.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/xmrstak/backend/amd/amd_gpu/gpu.cpp b/xmrstak/backend/amd/amd_gpu/gpu.cpp index c39c567..054ffc4 100644 --- a/xmrstak/backend/amd/amd_gpu/gpu.cpp +++ b/xmrstak/backend/amd/amd_gpu/gpu.cpp @@ -332,8 +332,8 @@ size_t InitOpenCLGpu(cl_context opencl_ctx, GpuContext* ctx, const char* source_ char options[256]; snprintf(options, sizeof(options), - "-DITERATIONS=%d -DMASK=%d -DWORKSIZE=%llu -DSTRIDED_INDEX=%d", - hasIterations, threadMemMask, int_port(ctx->workSize), ctx->stridedIndex ? 1 : 0); + "-DITERATIONS=%d -DMASK=%d -DWORKSIZE=%llu -DSTRIDED_INDEX=%d -DMEM_CHUNK=%d", + hasIterations, threadMemMask, int_port(ctx->workSize), ctx->stridedIndex, int(1u<<ctx->memChunk)); ret = clBuildProgram(ctx->Program, 1, &ctx->DeviceID, options, NULL, NULL); if(ret != CL_SUCCESS) { @@ -696,6 +696,13 @@ size_t InitOpenCL(GpuContext* ctx, size_t num_gpus, size_t platform_idx) for(int i = 0; i < num_gpus; ++i) { + if(ctx[i].stridedIndex == 2 && (ctx[i].rawIntensity % ctx[i].workSize) != 0) + { + size_t reduced_intensity = (ctx[i].rawIntensity / ctx[i].workSize) * ctx[i].workSize; + ctx[i].rawIntensity = reduced_intensity; + printer::inst()->print_msg(L0, "WARNING AMD: gpu %d intensity is not a multiple of 'worksize', auto reduce intensity to %d", ctx[i].deviceIdx, int(reduced_intensity)); + } + if((ret = InitOpenCLGpu(opencl_ctx, &ctx[i], source_code.c_str())) != ERR_SUCCESS) { return ret; |