From 0fceca6ffefc9c621c1ef1cd9b58feb3c2f52087 Mon Sep 17 00:00:00 2001 From: Tanguy Pruvot Date: Mon, 6 Apr 2015 23:12:03 +0200 Subject: [PATCH] zr5: reinit the card correctly on errors previous method was doing a segfault... --- skein.cu | 5 +++-- zr5.cu | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) 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]++;