diff --git a/skein.cu b/skein.cu index 6018265..6305ad5 100644 --- a/skein.cu +++ b/skein.cu @@ -416,7 +416,9 @@ extern "C" int scanhash_skeincoin(int thr_id, uint32_t *pdata, if (!init[thr_id]) { + cudaDeviceReset(); cudaSetDevice(device_map[thr_id]); + CUDA_SAFE_CALL(cudaMalloc(&d_hash[thr_id], 64 * throughput)); cuda_check_cpu_init(thr_id, throughput); @@ -469,8 +471,7 @@ extern "C" int scanhash_skeincoin(int thr_id, uint32_t *pdata, else { applog(LOG_INFO, "GPU #%d: result for nonce $%08X does not validate on CPU!", device_map[thr_id], foundNonce); - // reinit card - cudaDeviceReset(); + // reinit the card init[thr_id] = false; } } diff --git a/zr5.cu b/zr5.cu index af37d70..d1eb34f 100644 --- a/zr5.cu +++ b/zr5.cu @@ -302,6 +302,7 @@ extern "C" int scanhash_zr5(int thr_id, uint32_t *pdata, const uint32_t *ptarget if (!init[thr_id]) { + cudaDeviceReset(); cudaSetDevice(device_map[thr_id]); // constants @@ -406,8 +407,7 @@ extern "C" int scanhash_zr5(int thr_id, uint32_t *pdata, const uint32_t *ptarget } else { applog(LOG_WARNING, "GPU #%d: result for %08x does not validate on CPU!", device_map[thr_id], foundNonce); - // reinit card.. - cudaDeviceReset(); + // reinit the card.. init[thr_id] = false; pdata[19]++;