mirror of
https://github.com/GOSTSec/ccminer
synced 2025-01-22 20:44:49 +00:00
cudaDeviceReset on Ctrl+C for nvprof
This commit is contained in:
parent
e1aa028b9f
commit
a3ea36a5f9
16
cpu-miner.c
16
cpu-miner.c
@ -57,6 +57,7 @@ extern "C"
|
|||||||
#endif
|
#endif
|
||||||
int cuda_num_devices();
|
int cuda_num_devices();
|
||||||
void cuda_devicenames();
|
void cuda_devicenames();
|
||||||
|
void cuda_devicereset();
|
||||||
int cuda_finddevice(char *name);
|
int cuda_finddevice(char *name);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
@ -797,7 +798,6 @@ static void *miner_thread(void *userdata)
|
|||||||
unsigned char *scratchbuf = NULL;
|
unsigned char *scratchbuf = NULL;
|
||||||
char s[16];
|
char s[16];
|
||||||
int i;
|
int i;
|
||||||
static int rounds = 0;
|
|
||||||
|
|
||||||
memset(&work, 0, sizeof(work)); // prevent work from being used uninitialized
|
memset(&work, 0, sizeof(work)); // prevent work from being used uninitialized
|
||||||
|
|
||||||
@ -948,9 +948,6 @@ static void *miner_thread(void *userdata)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (opt_benchmark)
|
|
||||||
// if (++rounds == 1) exit(0);
|
|
||||||
|
|
||||||
/* record scanhash elapsed time */
|
/* record scanhash elapsed time */
|
||||||
gettimeofday(&tv_end, NULL);
|
gettimeofday(&tv_end, NULL);
|
||||||
timeval_subtract(&diff, &tv_end, &tv_start);
|
timeval_subtract(&diff, &tv_end, &tv_start);
|
||||||
@ -965,8 +962,6 @@ static void *miner_thread(void *userdata)
|
|||||||
1e-3 * thr_hashrates[thr_id]);
|
1e-3 * thr_hashrates[thr_id]);
|
||||||
applog(LOG_INFO, "GPU #%d: %s, %s khash/s",
|
applog(LOG_INFO, "GPU #%d: %s, %s khash/s",
|
||||||
device_map[thr_id], device_name[thr_id], s);
|
device_map[thr_id], device_name[thr_id], s);
|
||||||
// applog(LOG_INFO, "thread %d: %lu hashes, %s khash/s",
|
|
||||||
// thr_id, hashes_done, s);
|
|
||||||
}
|
}
|
||||||
if (opt_benchmark && thr_id == opt_n_threads - 1) {
|
if (opt_benchmark && thr_id == opt_n_threads - 1) {
|
||||||
double hashrate = 0.;
|
double hashrate = 0.;
|
||||||
@ -1493,11 +1488,14 @@ static void signal_handler(int sig)
|
|||||||
applog(LOG_INFO, "SIGHUP received");
|
applog(LOG_INFO, "SIGHUP received");
|
||||||
break;
|
break;
|
||||||
case SIGINT:
|
case SIGINT:
|
||||||
|
signal(sig, SIG_IGN);
|
||||||
applog(LOG_INFO, "SIGINT received, exiting");
|
applog(LOG_INFO, "SIGINT received, exiting");
|
||||||
|
cuda_devicereset();
|
||||||
exit(0);
|
exit(0);
|
||||||
break;
|
break;
|
||||||
case SIGTERM:
|
case SIGTERM:
|
||||||
applog(LOG_INFO, "SIGTERM received, exiting");
|
applog(LOG_INFO, "SIGTERM received, exiting");
|
||||||
|
cuda_devicereset();
|
||||||
exit(0);
|
exit(0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1573,9 +1571,10 @@ int main(int argc, char *argv[])
|
|||||||
if (i < 0)
|
if (i < 0)
|
||||||
applog(LOG_ERR, "chdir() failed (errno = %d)", errno);
|
applog(LOG_ERR, "chdir() failed (errno = %d)", errno);
|
||||||
signal(SIGHUP, signal_handler);
|
signal(SIGHUP, signal_handler);
|
||||||
signal(SIGINT, signal_handler);
|
|
||||||
signal(SIGTERM, signal_handler);
|
signal(SIGTERM, signal_handler);
|
||||||
}
|
}
|
||||||
|
/* Always catch Ctrl+C */
|
||||||
|
signal(SIGINT, signal_handler);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (num_processors == 0)
|
if (num_processors == 0)
|
||||||
@ -1684,5 +1683,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
applog(LOG_INFO, "workio thread dead, exiting.");
|
applog(LOG_INFO, "workio thread dead, exiting.");
|
||||||
|
|
||||||
|
// nvprof requires this
|
||||||
|
cuda_devicereset();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -193,6 +193,12 @@ extern "C" void cuda_devicenames()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Can't be called directly in cpu-miner
|
||||||
|
extern "C" void cuda_devicereset()
|
||||||
|
{
|
||||||
|
cudaDeviceReset();
|
||||||
|
}
|
||||||
|
|
||||||
static bool substringsearch(const char *haystack, const char *needle, int &match)
|
static bool substringsearch(const char *haystack, const char *needle, int &match)
|
||||||
{
|
{
|
||||||
int hlen = strlen(haystack);
|
int hlen = strlen(haystack);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user