mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-22 20:44:19 +00:00
Provide initial support for the scrypt kernel to compile with and mine scrypt with the --scrypt option.
This commit is contained in:
parent
5a65415b1e
commit
dd740caa98
10
cgminer.c
10
cgminer.c
@ -107,6 +107,9 @@ int opt_dynamic_interval = 7;
|
|||||||
int nDevs;
|
int nDevs;
|
||||||
int opt_g_threads = 2;
|
int opt_g_threads = 2;
|
||||||
int gpu_threads;
|
int gpu_threads;
|
||||||
|
#ifdef USE_SCRYPT
|
||||||
|
bool opt_scrypt;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
bool opt_restart = true;
|
bool opt_restart = true;
|
||||||
static bool opt_nogpu;
|
static bool opt_nogpu;
|
||||||
@ -863,7 +866,7 @@ static struct opt_table opt_config_table[] = {
|
|||||||
#ifdef HAVE_OPENCL
|
#ifdef HAVE_OPENCL
|
||||||
OPT_WITH_ARG("--kernel|-k",
|
OPT_WITH_ARG("--kernel|-k",
|
||||||
set_kernel, NULL, NULL,
|
set_kernel, NULL, NULL,
|
||||||
"Override kernel to use (diablo, poclbm, phatk or diakgcn) - one value or comma separated"),
|
"Override sha256 kernel to use (diablo, poclbm, phatk or diakgcn) - one value or comma separated"),
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_ICARUS
|
#ifdef USE_ICARUS
|
||||||
OPT_WITH_ARG("--icarus-timing",
|
OPT_WITH_ARG("--icarus-timing",
|
||||||
@ -953,6 +956,11 @@ static struct opt_table opt_config_table[] = {
|
|||||||
OPT_WITH_ARG("--sched-stop",
|
OPT_WITH_ARG("--sched-stop",
|
||||||
set_schedtime, NULL, &schedstop,
|
set_schedtime, NULL, &schedstop,
|
||||||
"Set a time of day in HH:MM to stop mining (will quit without a start time)"),
|
"Set a time of day in HH:MM to stop mining (will quit without a start time)"),
|
||||||
|
#ifdef USE_SCRYPT
|
||||||
|
OPT_WITHOUT_ARG("--scrypt",
|
||||||
|
opt_set_bool, &opt_scrypt,
|
||||||
|
"Use the scrypt algorithm for mining (litecoin only)"),
|
||||||
|
#endif
|
||||||
OPT_WITH_ARG("--sharelog",
|
OPT_WITH_ARG("--sharelog",
|
||||||
set_sharelog, NULL, NULL,
|
set_sharelog, NULL, NULL,
|
||||||
"Append share log to file"),
|
"Append share log to file"),
|
||||||
|
@ -137,7 +137,7 @@ static enum cl_kernels select_kernel(char *arg)
|
|||||||
return KL_POCLBM;
|
return KL_POCLBM;
|
||||||
if (!strcmp(arg, "phatk"))
|
if (!strcmp(arg, "phatk"))
|
||||||
return KL_PHATK;
|
return KL_PHATK;
|
||||||
#ifdef HAVE_SCRYPT
|
#ifdef USE_SCRYPT
|
||||||
if (!strcmp(arg, "scrypt"))
|
if (!strcmp(arg, "scrypt"))
|
||||||
return KL_SCRYPT;
|
return KL_SCRYPT;
|
||||||
#endif
|
#endif
|
||||||
@ -150,6 +150,8 @@ char *set_kernel(char *arg)
|
|||||||
int i, device = 0;
|
int i, device = 0;
|
||||||
char *nextptr;
|
char *nextptr;
|
||||||
|
|
||||||
|
if (opt_scrypt)
|
||||||
|
return "Cannot use sha256 kernel with scrypt";
|
||||||
nextptr = strtok(arg, ",");
|
nextptr = strtok(arg, ",");
|
||||||
if (nextptr == NULL)
|
if (nextptr == NULL)
|
||||||
return "Invalid parameters for set kernel";
|
return "Invalid parameters for set kernel";
|
||||||
@ -990,7 +992,7 @@ static cl_int queue_diablo_kernel(_clState *clState, dev_blk_ctx *blk, cl_uint t
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_SCRYPT
|
#ifdef USE_SCRYPT
|
||||||
static cl_int queue_scrypt_kernel(_clState *clState, dev_blk_ctx *blk, cl_uint threads)
|
static cl_int queue_scrypt_kernel(_clState *clState, dev_blk_ctx *blk, cl_uint threads)
|
||||||
{
|
{
|
||||||
cl_int status = 0;
|
cl_int status = 0;
|
||||||
@ -1254,25 +1256,25 @@ static bool opencl_thread_prepare(struct thr_info *thr)
|
|||||||
if (!cgpu->kname)
|
if (!cgpu->kname)
|
||||||
{
|
{
|
||||||
switch (clStates[i]->chosen_kernel) {
|
switch (clStates[i]->chosen_kernel) {
|
||||||
case KL_DIABLO:
|
case KL_DIABLO:
|
||||||
cgpu->kname = "diablo";
|
cgpu->kname = "diablo";
|
||||||
break;
|
break;
|
||||||
case KL_DIAKGCN:
|
case KL_DIAKGCN:
|
||||||
cgpu->kname = "diakgcn";
|
cgpu->kname = "diakgcn";
|
||||||
break;
|
break;
|
||||||
case KL_PHATK:
|
case KL_PHATK:
|
||||||
cgpu->kname = "phatk";
|
cgpu->kname = "phatk";
|
||||||
break;
|
break;
|
||||||
#ifdef HAVE_SCRYPT
|
#ifdef USE_SCRYPT
|
||||||
case KL_SCRYPT:
|
case KL_SCRYPT:
|
||||||
cgpu->kname = "scrypt";
|
cgpu->kname = "scrypt";
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case KL_POCLBM:
|
case KL_POCLBM:
|
||||||
cgpu->kname = "poclbm";
|
cgpu->kname = "poclbm";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
applog(LOG_INFO, "initCl() finished. Found %s", name);
|
applog(LOG_INFO, "initCl() finished. Found %s", name);
|
||||||
@ -1309,7 +1311,7 @@ static bool opencl_thread_init(struct thr_info *thr)
|
|||||||
case KL_DIAKGCN:
|
case KL_DIAKGCN:
|
||||||
thrdata->queue_kernel_parameters = &queue_diakgcn_kernel;
|
thrdata->queue_kernel_parameters = &queue_diakgcn_kernel;
|
||||||
break;
|
break;
|
||||||
#ifdef HAVE_SCRYPT
|
#ifdef USE_SCRYPT
|
||||||
case KL_SCRYPT:
|
case KL_SCRYPT:
|
||||||
thrdata->queue_kernel_parameters = &queue_scrypt_kernel;
|
thrdata->queue_kernel_parameters = &queue_scrypt_kernel;
|
||||||
break;
|
break;
|
||||||
|
7
miner.h
7
miner.h
@ -262,7 +262,7 @@ enum cl_kernels {
|
|||||||
KL_PHATK,
|
KL_PHATK,
|
||||||
KL_DIAKGCN,
|
KL_DIAKGCN,
|
||||||
KL_DIABLO,
|
KL_DIABLO,
|
||||||
#ifdef HAVE_SCRYPT
|
#ifdef USE_SCRYPT
|
||||||
KL_SCRYPT,
|
KL_SCRYPT,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
@ -620,6 +620,11 @@ extern bool use_syslog;
|
|||||||
extern struct thr_info *thr_info;
|
extern struct thr_info *thr_info;
|
||||||
extern struct cgpu_info gpus[MAX_GPUDEVICES];
|
extern struct cgpu_info gpus[MAX_GPUDEVICES];
|
||||||
extern int gpu_threads;
|
extern int gpu_threads;
|
||||||
|
#ifdef USE_SCRYPT
|
||||||
|
extern bool opt_scrypt;
|
||||||
|
#else
|
||||||
|
#define opt_scrypt (0)
|
||||||
|
#endif
|
||||||
extern double total_secs;
|
extern double total_secs;
|
||||||
extern int mining_threads;
|
extern int mining_threads;
|
||||||
extern struct cgpu_info *cpus;
|
extern struct cgpu_info *cpus;
|
||||||
|
20
ocl.c
20
ocl.c
@ -354,8 +354,11 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
|
|||||||
char numbuf[10];
|
char numbuf[10];
|
||||||
|
|
||||||
if (gpus[gpu].kernel == KL_NONE) {
|
if (gpus[gpu].kernel == KL_NONE) {
|
||||||
/* Detect all 2.6 SDKs not with Tahiti and use diablo kernel */
|
if (opt_scrypt) {
|
||||||
if (!strstr(name, "Tahiti") &&
|
applog(LOG_INFO, "Selecting scrypt kernel");
|
||||||
|
clState->chosen_kernel = KL_SCRYPT;
|
||||||
|
} else if (!strstr(name, "Tahiti") &&
|
||||||
|
/* Detect all 2.6 SDKs not with Tahiti and use diablo kernel */
|
||||||
(strstr(vbuff, "844.4") || // Linux 64 bit ATI 2.6 SDK
|
(strstr(vbuff, "844.4") || // Linux 64 bit ATI 2.6 SDK
|
||||||
strstr(vbuff, "851.4") || // Windows 64 bit ""
|
strstr(vbuff, "851.4") || // Windows 64 bit ""
|
||||||
strstr(vbuff, "831.4") ||
|
strstr(vbuff, "831.4") ||
|
||||||
@ -407,6 +410,10 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
|
|||||||
strcpy(filename, DIAKGCN_KERNNAME".cl");
|
strcpy(filename, DIAKGCN_KERNNAME".cl");
|
||||||
strcpy(binaryfilename, DIAKGCN_KERNNAME);
|
strcpy(binaryfilename, DIAKGCN_KERNNAME);
|
||||||
break;
|
break;
|
||||||
|
case KL_SCRYPT:
|
||||||
|
strcpy(filename, SCRYPT_KERNNAME".cl");
|
||||||
|
strcpy(binaryfilename, SCRYPT_KERNNAME);
|
||||||
|
break;
|
||||||
case KL_NONE: /* Shouldn't happen */
|
case KL_NONE: /* Shouldn't happen */
|
||||||
case KL_DIABLO:
|
case KL_DIABLO:
|
||||||
strcpy(filename, DIABLO_KERNNAME".cl");
|
strcpy(filename, DIABLO_KERNNAME".cl");
|
||||||
@ -528,8 +535,13 @@ build:
|
|||||||
/* create a cl program executable for all the devices specified */
|
/* create a cl program executable for all the devices specified */
|
||||||
char *CompilerOptions = calloc(1, 256);
|
char *CompilerOptions = calloc(1, 256);
|
||||||
|
|
||||||
sprintf(CompilerOptions, "-D WORKSIZE=%d -D VECTORS%d -D WORKVEC=%d",
|
if (opt_scrypt) {
|
||||||
(int)clState->wsize, clState->vwidth, (int)clState->wsize * clState->vwidth);
|
sprintf(CompilerOptions, "-D LOOKUP_GAP=2 -D CONCURRENT_THREADS=6144 -D WORKSIZE=%d",
|
||||||
|
(int)clState->wsize);
|
||||||
|
} else {
|
||||||
|
sprintf(CompilerOptions, "-D WORKSIZE=%d -D VECTORS%d -D WORKVEC=%d",
|
||||||
|
(int)clState->wsize, clState->vwidth, (int)clState->wsize * clState->vwidth);
|
||||||
|
}
|
||||||
applog(LOG_DEBUG, "Setting worksize to %d", clState->wsize);
|
applog(LOG_DEBUG, "Setting worksize to %d", clState->wsize);
|
||||||
if (clState->vwidth > 1)
|
if (clState->vwidth > 1)
|
||||||
applog(LOG_DEBUG, "Patched source to suit %d vectors", clState->vwidth);
|
applog(LOG_DEBUG, "Patched source to suit %d vectors", clState->vwidth);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user