mirror of
https://github.com/GOSTSec/ccminer
synced 2025-01-10 23:08:02 +00:00
Add diff-multiplier (-m) option
Remove -v and -m short params specific to heavycoin Add --diff-multiplier (-m) and rename --diff to --diff-factor (-f) --diff is kept for compat, but no more in help This prevent using weird values like -f 0.0000125
This commit is contained in:
parent
3e419abf84
commit
d25b42e41b
13
README.txt
13
README.txt
@ -102,8 +102,10 @@ its command line interface and options.
|
|||||||
|
|
||||||
-i, --intensity=N[,N] GPU threads per call 8-25 (2^N + F, default: 0=auto)
|
-i, --intensity=N[,N] GPU threads per call 8-25 (2^N + F, default: 0=auto)
|
||||||
Decimals and multiple values are allowed for fine tuning
|
Decimals and multiple values are allowed for fine tuning
|
||||||
-f, --diff Divide difficulty by this factor (std is 1)
|
-f, --diff-factor Divide difficulty by this factor (default 1.0)
|
||||||
-v, --vote Heavycoin block vote (default: 512)
|
-m, --diff-multiplier Multiply difficulty by this value (default 1.0)
|
||||||
|
--vote=VOTE block reward vote (for HeavyCoin)
|
||||||
|
--trust-pool trust the max block reward vote (maxvote) sent by the pool
|
||||||
-o, --url=URL URL of mining server
|
-o, --url=URL URL of mining server
|
||||||
-O, --userpass=U:P username:password pair for mining server
|
-O, --userpass=U:P username:password pair for mining server
|
||||||
-u, --user=USERNAME username for mining server
|
-u, --user=USERNAME username for mining server
|
||||||
@ -215,6 +217,13 @@ features.
|
|||||||
|
|
||||||
>>> RELEASE HISTORY <<<
|
>>> RELEASE HISTORY <<<
|
||||||
|
|
||||||
|
June 2015 v1.6.5
|
||||||
|
Remove -v and -m short params specific to heavycoin
|
||||||
|
Add --diff-multiplier (-m) and rename --diff to --diff-factor (-f)
|
||||||
|
Some fixes for default pool params values (multipool)
|
||||||
|
First steps to handle nvml application clocks and P0 on the GTX9xx
|
||||||
|
Optimize qubit, deep and doom
|
||||||
|
|
||||||
May 26th 2015 v1.6.4
|
May 26th 2015 v1.6.4
|
||||||
Implement multi-pool support (failover and time rotate)
|
Implement multi-pool support (failover and time rotate)
|
||||||
try "ccminer -c pools.conf" to test the sample config
|
try "ccminer -c pools.conf" to test the sample config
|
||||||
|
69
ccminer.cpp
69
ccminer.cpp
@ -188,7 +188,8 @@ static enum sha_algos opt_algo = ALGO_X11;
|
|||||||
int opt_n_threads = 0;
|
int opt_n_threads = 0;
|
||||||
int opt_affinity = -1;
|
int opt_affinity = -1;
|
||||||
int opt_priority = 0;
|
int opt_priority = 0;
|
||||||
static double opt_difficulty = 1; // CH
|
static double opt_diff_factor = 1.;
|
||||||
|
static double opt_diff_multiplier = 1.;
|
||||||
bool opt_extranonce = true;
|
bool opt_extranonce = true;
|
||||||
bool opt_trust_pool = false;
|
bool opt_trust_pool = false;
|
||||||
uint16_t opt_vote = 9999;
|
uint16_t opt_vote = 9999;
|
||||||
@ -323,9 +324,10 @@ Options:\n\
|
|||||||
(matching 2nd gt640 in the PC)\n\
|
(matching 2nd gt640 in the PC)\n\
|
||||||
-i --intensity=N[,N] GPU intensity 8.0-25.0 (default: auto) \n\
|
-i --intensity=N[,N] GPU intensity 8.0-25.0 (default: auto) \n\
|
||||||
Decimals are allowed for fine tuning \n\
|
Decimals are allowed for fine tuning \n\
|
||||||
-f, --diff Divide difficulty by this factor (std is 1) \n\
|
-f, --diff-factor Divide difficulty by this factor (default 1.0) \n\
|
||||||
-v, --vote=VOTE block reward vote (for HeavyCoin)\n\
|
-m, --diff-multiplier Multiply difficulty by this value (default 1.0) \n\
|
||||||
-m, --trust-pool trust the max block reward vote (maxvote) sent by the pool\n\
|
--vote=VOTE block reward vote (for HeavyCoin)\n\
|
||||||
|
--trust-pool trust the max block reward vote (maxvote) sent by the pool\n\
|
||||||
-o, --url=URL URL of mining server\n\
|
-o, --url=URL URL of mining server\n\
|
||||||
-O, --userpass=U:P username:password pair for mining server\n\
|
-O, --userpass=U:P username:password pair for mining server\n\
|
||||||
-u, --user=USERNAME username for mining server\n\
|
-u, --user=USERNAME username for mining server\n\
|
||||||
@ -379,7 +381,7 @@ static char const short_options[] =
|
|||||||
#ifdef HAVE_SYSLOG_H
|
#ifdef HAVE_SYSLOG_H
|
||||||
"S"
|
"S"
|
||||||
#endif
|
#endif
|
||||||
"a:Bc:i:Dhp:Px:mnqr:R:s:t:T:o:u:O:Vd:f:v:N:b:l:L:";
|
"a:Bc:i:Dhp:Px:f:m:nqr:R:s:t:T:o:u:O:Vd:N:b:l:L:";
|
||||||
|
|
||||||
static struct option const options[] = {
|
static struct option const options[] = {
|
||||||
{ "algo", 1, NULL, 'a' },
|
{ "algo", 1, NULL, 'a' },
|
||||||
@ -429,15 +431,17 @@ static struct option const options[] = {
|
|||||||
#endif
|
#endif
|
||||||
{ "time-limit", 1, NULL, 1008 },
|
{ "time-limit", 1, NULL, 1008 },
|
||||||
{ "threads", 1, NULL, 't' },
|
{ "threads", 1, NULL, 't' },
|
||||||
{ "vote", 1, NULL, 'v' },
|
{ "vote", 1, NULL, 1022 },
|
||||||
{ "trust-pool", 0, NULL, 'm' },
|
{ "trust-pool", 0, NULL, 1023 },
|
||||||
{ "timeout", 1, NULL, 'T' },
|
{ "timeout", 1, NULL, 'T' },
|
||||||
{ "url", 1, NULL, 'o' },
|
{ "url", 1, NULL, 'o' },
|
||||||
{ "user", 1, NULL, 'u' },
|
{ "user", 1, NULL, 'u' },
|
||||||
{ "userpass", 1, NULL, 'O' },
|
{ "userpass", 1, NULL, 'O' },
|
||||||
{ "version", 0, NULL, 'V' },
|
{ "version", 0, NULL, 'V' },
|
||||||
{ "devices", 1, NULL, 'd' },
|
{ "devices", 1, NULL, 'd' },
|
||||||
{ "diff", 1, NULL, 'f' },
|
{ "diff-multiplier", 1, NULL, 'm' },
|
||||||
|
{ "diff-factor", 1, NULL, 'f' },
|
||||||
|
{ "diff", 1, NULL, 'f' }, // compat
|
||||||
{ 0, 0, 0, 0 }
|
{ 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -732,9 +736,9 @@ static void calc_target_diff(struct work *work)
|
|||||||
if (unlikely(!d64))
|
if (unlikely(!d64))
|
||||||
d64 = 1;
|
d64 = 1;
|
||||||
work->difficulty = (double)diffone / d64;
|
work->difficulty = (double)diffone / d64;
|
||||||
if (opt_difficulty > 0.) {
|
if (opt_diff_factor > 0.)
|
||||||
work->difficulty /= opt_difficulty;
|
work->difficulty /= opt_diff_factor;
|
||||||
}
|
work->difficulty *= opt_diff_multiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int share_result(int result, int pooln, const char *reason)
|
static int share_result(int result, int pooln, const char *reason)
|
||||||
@ -767,8 +771,8 @@ static int share_result(int result, int pooln, const char *reason)
|
|||||||
if (reason) {
|
if (reason) {
|
||||||
applog(LOG_WARNING, "reject reason: %s", reason);
|
applog(LOG_WARNING, "reject reason: %s", reason);
|
||||||
/* if (strncasecmp(reason, "low difficulty", 14) == 0) {
|
/* if (strncasecmp(reason, "low difficulty", 14) == 0) {
|
||||||
opt_difficulty = (opt_difficulty * 2.0) / 3.0;
|
opt_diff_factor = (opt_diff_factor * 2.0) / 3.0;
|
||||||
applog(LOG_WARNING, "factor reduced to : %0.2f", opt_difficulty);
|
applog(LOG_WARNING, "factor reduced to : %0.2f", opt_diff_factor);
|
||||||
return 0;
|
return 0;
|
||||||
} */
|
} */
|
||||||
if (!check_dups && strncasecmp(reason, "duplicate", 9) == 0) {
|
if (!check_dups && strncasecmp(reason, "duplicate", 9) == 0) {
|
||||||
@ -1318,6 +1322,7 @@ err_out:
|
|||||||
static bool stratum_gen_work(struct stratum_ctx *sctx, struct work *work)
|
static bool stratum_gen_work(struct stratum_ctx *sctx, struct work *work)
|
||||||
{
|
{
|
||||||
uchar merkle_root[64];
|
uchar merkle_root[64];
|
||||||
|
double diff_factor = opt_diff_factor;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!sctx->job.job_id) {
|
if (!sctx->job.job_id) {
|
||||||
@ -1381,13 +1386,9 @@ static bool stratum_gen_work(struct stratum_ctx *sctx, struct work *work)
|
|||||||
switch (opt_algo) {
|
switch (opt_algo) {
|
||||||
case ALGO_MJOLLNIR:
|
case ALGO_MJOLLNIR:
|
||||||
case ALGO_HEAVY:
|
case ALGO_HEAVY:
|
||||||
// todo: check if 19 is enough
|
|
||||||
for (i = 0; i < 20; i++)
|
|
||||||
work->data[i] = be32dec((uint32_t *)&work->data[i]);
|
|
||||||
break;
|
|
||||||
case ALGO_ZR5:
|
case ALGO_ZR5:
|
||||||
for (i = 0; i < 19; i++)
|
for (i = 0; i < 20; i++)
|
||||||
work->data[i] = be32dec((uint32_t *)&work->data[i]);
|
work->data[i] = swab32(work->data[i]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1416,26 +1417,31 @@ static bool stratum_gen_work(struct stratum_ctx *sctx, struct work *work)
|
|||||||
free(xnonce2str);
|
free(xnonce2str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opt_diff_multiplier > 0.)
|
||||||
|
diff_factor /= opt_diff_multiplier;
|
||||||
|
if (diff_factor == 0.)
|
||||||
|
diff_factor = 1.;
|
||||||
|
|
||||||
switch (opt_algo) {
|
switch (opt_algo) {
|
||||||
case ALGO_JACKPOT:
|
case ALGO_JACKPOT:
|
||||||
case ALGO_NEOSCRYPT:
|
case ALGO_NEOSCRYPT:
|
||||||
case ALGO_PLUCK:
|
case ALGO_PLUCK:
|
||||||
case ALGO_SCRYPT:
|
case ALGO_SCRYPT:
|
||||||
case ALGO_SCRYPT_JANE:
|
case ALGO_SCRYPT_JANE:
|
||||||
diff_to_target(work->target, sctx->job.diff / (65536.0 * opt_difficulty));
|
diff_to_target(work->target, sctx->job.diff / (65536.0 * diff_factor));
|
||||||
break;
|
break;
|
||||||
case ALGO_DMD_GR:
|
case ALGO_DMD_GR:
|
||||||
case ALGO_FRESH:
|
case ALGO_FRESH:
|
||||||
case ALGO_FUGUE256:
|
case ALGO_FUGUE256:
|
||||||
case ALGO_GROESTL:
|
case ALGO_GROESTL:
|
||||||
diff_to_target(work->target, sctx->job.diff / (256.0 * opt_difficulty));
|
diff_to_target(work->target, sctx->job.diff / (256.0 * diff_factor));
|
||||||
break;
|
break;
|
||||||
case ALGO_KECCAK:
|
case ALGO_KECCAK:
|
||||||
case ALGO_LYRA2:
|
case ALGO_LYRA2:
|
||||||
diff_to_target(work->target, sctx->job.diff / (128.0 * opt_difficulty));
|
diff_to_target(work->target, sctx->job.diff / (128.0 * diff_factor));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
diff_to_target(work->target, sctx->job.diff / opt_difficulty);
|
diff_to_target(work->target, sctx->job.diff / diff_factor);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -2801,13 +2807,13 @@ void parse_arg(int key, char *arg)
|
|||||||
show_usage_and_exit(1);
|
show_usage_and_exit(1);
|
||||||
opt_n_threads = v;
|
opt_n_threads = v;
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 1022: // --vote
|
||||||
v = atoi(arg);
|
v = atoi(arg);
|
||||||
if (v < 0 || v > 8192) /* sanity check */
|
if (v < 0 || v > 8192) /* sanity check */
|
||||||
show_usage_and_exit(1);
|
show_usage_and_exit(1);
|
||||||
opt_vote = (uint16_t)v;
|
opt_vote = (uint16_t)v;
|
||||||
break;
|
break;
|
||||||
case 'm':
|
case 1023: // --trust-pool
|
||||||
opt_trust_pool = true;
|
opt_trust_pool = true;
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
@ -3052,11 +3058,18 @@ void parse_arg(int key, char *arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'f': // CH - Divisor for Difficulty
|
|
||||||
|
case 'f': // --diff-factor
|
||||||
d = atof(arg);
|
d = atof(arg);
|
||||||
if (d == 0) /* sanity check */
|
if (d <= 0.)
|
||||||
show_usage_and_exit(1);
|
show_usage_and_exit(1);
|
||||||
opt_difficulty = d;
|
opt_diff_factor = d;
|
||||||
|
break;
|
||||||
|
case 'm': // --diff-multiplier
|
||||||
|
d = atof(arg);
|
||||||
|
if (d <= 0.)
|
||||||
|
show_usage_and_exit(1);
|
||||||
|
opt_diff_multiplier = d;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* PER POOL CONFIG OPTIONS */
|
/* PER POOL CONFIG OPTIONS */
|
||||||
|
Loading…
Reference in New Issue
Block a user