mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-22 12:34:27 +00:00
kernel: allow choosing Alexey Karimov's kernels.
Am I the only one who gets a segfault?..
This commit is contained in:
parent
81337e0064
commit
5f326d64f5
@ -317,10 +317,11 @@ fi
|
|||||||
|
|
||||||
AC_DEFINE_UNQUOTED([SGMINER_PREFIX], ["$prefix/bin"], [Path to sgminer install])
|
AC_DEFINE_UNQUOTED([SGMINER_PREFIX], ["$prefix/bin"], [Path to sgminer install])
|
||||||
|
|
||||||
|
AC_DEFINE_UNQUOTED([ALEXKARNEW_KERNNAME], ["alexkarnew"], [Filename for Alexey Karimov's optimised kernel for Catalyst >=13.4])
|
||||||
|
AC_DEFINE_UNQUOTED([ALEXKAROLD_KERNNAME], ["alexkarold"], [Filename for Alexey Karimov's optimised kernel for Catalyst <13.4])
|
||||||
AC_DEFINE_UNQUOTED([CKOLIVAS_KERNNAME], ["ckolivas"], [Filename for original scrypt kernel])
|
AC_DEFINE_UNQUOTED([CKOLIVAS_KERNNAME], ["ckolivas"], [Filename for original scrypt kernel])
|
||||||
AC_DEFINE_UNQUOTED([ZUIKKIS_KERNNAME], ["zuikkis"], [Filename for Zuikkis' optimised kernel])
|
AC_DEFINE_UNQUOTED([ZUIKKIS_KERNNAME], ["zuikkis"], [Filename for Zuikkis' optimised kernel])
|
||||||
|
|
||||||
|
|
||||||
AC_SUBST(OPENCL_LIBS)
|
AC_SUBST(OPENCL_LIBS)
|
||||||
AC_SUBST(OPENCL_FLAGS)
|
AC_SUBST(OPENCL_FLAGS)
|
||||||
AC_SUBST(JANSSON_LIBS)
|
AC_SUBST(JANSSON_LIBS)
|
||||||
|
@ -196,6 +196,10 @@ char *set_thread_concurrency(char *arg)
|
|||||||
|
|
||||||
static enum cl_kernels select_kernel(char *arg)
|
static enum cl_kernels select_kernel(char *arg)
|
||||||
{
|
{
|
||||||
|
if (!strcmp(arg, "alexkarnew"))
|
||||||
|
return KL_ALEXKARNEW;
|
||||||
|
if (!strcmp(arg, "alexkarold"))
|
||||||
|
return KL_ALEXKAROLD;
|
||||||
if (!strcmp(arg, "ckolivas"))
|
if (!strcmp(arg, "ckolivas"))
|
||||||
return KL_CKOLIVAS;
|
return KL_CKOLIVAS;
|
||||||
if (!strcmp(arg, "zuikkis"))
|
if (!strcmp(arg, "zuikkis"))
|
||||||
@ -1212,6 +1216,12 @@ 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_ALEXKARNEW:
|
||||||
|
cgpu->kname = "alexkarnew";
|
||||||
|
break;
|
||||||
|
case KL_ALEXKAROLD:
|
||||||
|
cgpu->kname = "alexkarold";
|
||||||
|
break;
|
||||||
case KL_CKOLIVAS:
|
case KL_CKOLIVAS:
|
||||||
cgpu->kname = "ckolivas";
|
cgpu->kname = "ckolivas";
|
||||||
break;
|
break;
|
||||||
|
@ -813,8 +813,8 @@ void scrypt_core(uint4 X[8], __global uint4*restrict lookup)
|
|||||||
unshittify(X);
|
unshittify(X);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SCRYPT_FOUND (0xFF)
|
#define FOUND (0xFF)
|
||||||
#define SETFOUND(Xnonce) output[output[SCRYPT_FOUND]++] = Xnonce
|
#define SETFOUND(Xnonce) output[output[FOUND]++] = Xnonce
|
||||||
|
|
||||||
__attribute__((reqd_work_group_size(WORKSIZE, 1, 1)))
|
__attribute__((reqd_work_group_size(WORKSIZE, 1, 1)))
|
||||||
__kernel void search(__global const uint4 * restrict input,
|
__kernel void search(__global const uint4 * restrict input,
|
||||||
|
@ -810,8 +810,8 @@ void scrypt_core(uint4 X[8], __global uint4*restrict lookup)
|
|||||||
unshittify(X);
|
unshittify(X);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SCRYPT_FOUND (0xFF)
|
#define FOUND (0xFF)
|
||||||
#define SETFOUND(Xnonce) output[output[SCRYPT_FOUND]++] = Xnonce
|
#define SETFOUND(Xnonce) output[output[FOUND]++] = Xnonce
|
||||||
|
|
||||||
__attribute__((reqd_work_group_size(WORKSIZE, 1, 1)))
|
__attribute__((reqd_work_group_size(WORKSIZE, 1, 1)))
|
||||||
__kernel void search(__global const uint4 * restrict input,
|
__kernel void search(__global const uint4 * restrict input,
|
||||||
|
2
miner.h
2
miner.h
@ -372,6 +372,8 @@ enum dev_enable {
|
|||||||
|
|
||||||
enum cl_kernels {
|
enum cl_kernels {
|
||||||
KL_NONE,
|
KL_NONE,
|
||||||
|
KL_ALEXKARNEW,
|
||||||
|
KL_ALEXKAROLD,
|
||||||
KL_CKOLIVAS,
|
KL_CKOLIVAS,
|
||||||
KL_ZUIKKIS,
|
KL_ZUIKKIS,
|
||||||
};
|
};
|
||||||
|
16
ocl.c
16
ocl.c
@ -416,16 +416,28 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
|
|||||||
preferred_vwidth = 2;
|
preferred_vwidth = 2;
|
||||||
|
|
||||||
switch (clState->chosen_kernel) {
|
switch (clState->chosen_kernel) {
|
||||||
|
case KL_ALEXKARNEW:
|
||||||
|
strcpy(filename, ALEXKARNEW_KERNNAME".cl");
|
||||||
|
strcpy(binaryfilename, ALEXKARNEW_KERNNAME);
|
||||||
|
/* Kernel only supports vector 1 */
|
||||||
|
cgpu->vwidth = 1;
|
||||||
|
break;
|
||||||
|
case KL_ALEXKAROLD:
|
||||||
|
strcpy(filename, ALEXKAROLD_KERNNAME".cl");
|
||||||
|
strcpy(binaryfilename, ALEXKAROLD_KERNNAME);
|
||||||
|
/* Kernel only supports vector 1 */
|
||||||
|
cgpu->vwidth = 1;
|
||||||
|
break;
|
||||||
case KL_CKOLIVAS:
|
case KL_CKOLIVAS:
|
||||||
strcpy(filename, CKOLIVAS_KERNNAME".cl");
|
strcpy(filename, CKOLIVAS_KERNNAME".cl");
|
||||||
strcpy(binaryfilename, CKOLIVAS_KERNNAME);
|
strcpy(binaryfilename, CKOLIVAS_KERNNAME);
|
||||||
/* Scrypt only supports vector 1 */
|
/* Kernel only supports vector 1 */
|
||||||
cgpu->vwidth = 1;
|
cgpu->vwidth = 1;
|
||||||
break;
|
break;
|
||||||
case KL_ZUIKKIS:
|
case KL_ZUIKKIS:
|
||||||
strcpy(filename, ZUIKKIS_KERNNAME".cl");
|
strcpy(filename, ZUIKKIS_KERNNAME".cl");
|
||||||
strcpy(binaryfilename, ZUIKKIS_KERNNAME);
|
strcpy(binaryfilename, ZUIKKIS_KERNNAME);
|
||||||
/* Scrypt only supports vector 1 */
|
/* Kernel only supports vector 1 */
|
||||||
cgpu->vwidth = 1;
|
cgpu->vwidth = 1;
|
||||||
break;
|
break;
|
||||||
case KL_NONE: /* Shouldn't happen */
|
case KL_NONE: /* Shouldn't happen */
|
||||||
|
@ -4121,6 +4121,12 @@ void write_config(FILE *fcfg)
|
|||||||
switch (gpus[i].kernel) {
|
switch (gpus[i].kernel) {
|
||||||
case KL_NONE: // Shouldn't happen
|
case KL_NONE: // Shouldn't happen
|
||||||
break;
|
break;
|
||||||
|
case KL_ALEXKARNEW:
|
||||||
|
fprintf(fcfg, "alexkarnew");
|
||||||
|
break;
|
||||||
|
case KL_ALEXKAROLD:
|
||||||
|
fprintf(fcfg, "alexkarold");
|
||||||
|
break;
|
||||||
case KL_CKOLIVAS:
|
case KL_CKOLIVAS:
|
||||||
fprintf(fcfg, "ckolivas");
|
fprintf(fcfg, "ckolivas");
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user