Browse Source

zr5: reinit the card correctly on errors

previous method was doing a segfault...
master
Tanguy Pruvot 10 years ago
parent
commit
0fceca6ffe
  1. 5
      skein.cu
  2. 4
      zr5.cu

5
skein.cu

@ -416,7 +416,9 @@ extern "C" int scanhash_skeincoin(int thr_id, uint32_t *pdata,
if (!init[thr_id]) if (!init[thr_id])
{ {
cudaDeviceReset();
cudaSetDevice(device_map[thr_id]); cudaSetDevice(device_map[thr_id]);
CUDA_SAFE_CALL(cudaMalloc(&d_hash[thr_id], 64 * throughput)); CUDA_SAFE_CALL(cudaMalloc(&d_hash[thr_id], 64 * throughput));
cuda_check_cpu_init(thr_id, throughput); cuda_check_cpu_init(thr_id, throughput);
@ -469,8 +471,7 @@ extern "C" int scanhash_skeincoin(int thr_id, uint32_t *pdata,
else { else {
applog(LOG_INFO, "GPU #%d: result for nonce $%08X does not validate on CPU!", device_map[thr_id], foundNonce); applog(LOG_INFO, "GPU #%d: result for nonce $%08X does not validate on CPU!", device_map[thr_id], foundNonce);
// reinit card // reinit the card
cudaDeviceReset();
init[thr_id] = false; init[thr_id] = false;
} }
} }

4
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]) if (!init[thr_id])
{ {
cudaDeviceReset();
cudaSetDevice(device_map[thr_id]); cudaSetDevice(device_map[thr_id]);
// constants // constants
@ -406,8 +407,7 @@ extern "C" int scanhash_zr5(int thr_id, uint32_t *pdata, const uint32_t *ptarget
} else { } else {
applog(LOG_WARNING, "GPU #%d: result for %08x does not validate on CPU!", device_map[thr_id], foundNonce); applog(LOG_WARNING, "GPU #%d: result for %08x does not validate on CPU!", device_map[thr_id], foundNonce);
// reinit card.. // reinit the card..
cudaDeviceReset();
init[thr_id] = false; init[thr_id] = false;
pdata[19]++; pdata[19]++;

Loading…
Cancel
Save