Browse Source

The ccminer console output looks a bit more like cudaMiner now. 64 bit Windows compilation should no longer take "forever" but only "annoyingly long"

2upstream
Christian Buchner 10 years ago
parent
commit
ac40fac038
  1. 1
      ccminer.vcxproj
  2. 14
      cpu-miner.c
  3. 24
      heavy/heavy.cu

1
ccminer.vcxproj

@ -465,6 +465,7 @@ copy "$(CudaToolkitBinDir)\cudart*.dll" "$(OutDir)"</Command>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-Xptxas "-abi=no -v" %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">-Xptxas "-abi=no -v" %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-Xptxas "-abi=no -v" %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">-Xptxas "-abi=no -v" %(AdditionalOptions)</AdditionalOptions>
<MaxRegCount Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">128</MaxRegCount> <MaxRegCount Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">128</MaxRegCount>
<MaxRegCount Condition="'$(Configuration)|$(Platform)'=='Release|x64'">128</MaxRegCount>
</CudaCompile> </CudaCompile>
<CudaCompile Include="x11\cuda_x11_simd512.cu"> <CudaCompile Include="x11\cuda_x11_simd512.cu">
<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-Xptxas "-abi=no -v" %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">-Xptxas "-abi=no -v" %(AdditionalOptions)</AdditionalOptions>

14
cpu-miner.c

@ -55,6 +55,7 @@ extern "C"
{ {
#endif #endif
int cuda_num_devices(); int cuda_num_devices();
void cuda_devicenames();
int cuda_finddevice(char *name); int cuda_finddevice(char *name);
#ifdef __cplusplus #ifdef __cplusplus
} }
@ -170,6 +171,7 @@ bool opt_trust_pool = false;
uint16_t opt_vote = 9999; uint16_t opt_vote = 9999;
static int num_processors; static int num_processors;
int device_map[8] = {0,1,2,3,4,5,6,7}; // CB int device_map[8] = {0,1,2,3,4,5,6,7}; // CB
char *device_name[8]; // CB
static char *rpc_url; static char *rpc_url;
static char *rpc_userpass; static char *rpc_userpass;
static char *rpc_user, *rpc_pass; static char *rpc_user, *rpc_pass;
@ -780,6 +782,7 @@ 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
@ -914,6 +917,9 @@ 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);
@ -926,8 +932,10 @@ static void *miner_thread(void *userdata)
if (!opt_quiet) { if (!opt_quiet) {
sprintf(s, thr_hashrates[thr_id] >= 1e6 ? "%.0f" : "%.2f", sprintf(s, thr_hashrates[thr_id] >= 1e6 ? "%.0f" : "%.2f",
1e-3 * thr_hashrates[thr_id]); 1e-3 * thr_hashrates[thr_id]);
applog(LOG_INFO, "thread %d: %lu hashes, %s khash/s", applog(LOG_INFO, "GPU #%d: %s, %s khash/s",
thr_id, hashes_done, 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.;
@ -1491,6 +1499,8 @@ int main(int argc, char *argv[])
/* parse command line */ /* parse command line */
parse_cmdline(argc, argv); parse_cmdline(argc, argv);
cuda_devicenames();
if (!opt_benchmark && !rpc_url) { if (!opt_benchmark && !rpc_url) {
fprintf(stderr, "%s: no URL supplied\n", argv[0]); fprintf(stderr, "%s: no URL supplied\n", argv[0]);
show_usage_and_exit(1); show_usage_and_exit(1);

24
heavy/heavy.cu

@ -164,6 +164,30 @@ extern "C" int cuda_num_devices()
return GPU_N; return GPU_N;
} }
// Gerätenamen holen
extern char *device_name[8];
extern int device_map[8];
extern "C" void cuda_devicenames()
{
cudaError_t err;
int GPU_N;
err = cudaGetDeviceCount(&GPU_N);
if (err != cudaSuccess)
{
applog(LOG_ERR, "Unable to query number of CUDA devices! Is an nVidia driver installed?");
exit(1);
}
for (int i=0; i < GPU_N; i++)
{
cudaDeviceProp props;
cudaGetDeviceProperties(&props, device_map[i]);
device_name[i] = strdup(props.name);
}
}
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…
Cancel
Save