Browse Source

Warn about NVIDIA drivers that seem to produce broken device code.

Bump version number.
master 0.15
samr7 14 years ago
parent
commit
efb7cedde5
  1. 31
      oclvanitygen.c
  2. 2
      vanitygen.c

31
oclvanitygen.c

@ -33,7 +33,7 @@
#include "pattern.h" #include "pattern.h"
const char *version = "0.14"; const char *version = "0.15";
const int debug = 0; const int debug = 0;
#define MAX_SLOT 2 #define MAX_SLOT 2
@ -74,6 +74,7 @@ typedef struct _vg_ocl_context_s {
int voc_ocl_invsize; int voc_ocl_invsize;
int voc_halt; int voc_halt;
int voc_rekey; int voc_rekey;
int voc_dump_done;
} vg_ocl_context_t; } vg_ocl_context_t;
@ -259,6 +260,8 @@ vg_ocl_dump_info(vg_ocl_context_t *vocp)
cl_device_id did; cl_device_id did;
if (vocp->base.vxc_vc && (vocp->base.vxc_vc->vc_verbose < 1)) if (vocp->base.vxc_vc && (vocp->base.vxc_vc->vc_verbose < 1))
return; return;
if (vocp->voc_dump_done)
return;
did = vocp->voc_ocldid; did = vocp->voc_ocldid;
printf("Device: %s\n", printf("Device: %s\n",
vg_ocl_device_getstr(did, CL_DEVICE_NAME)); vg_ocl_device_getstr(did, CL_DEVICE_NAME));
@ -278,6 +281,7 @@ vg_ocl_dump_info(vg_ocl_context_t *vocp)
vg_ocl_device_getulong(did, CL_DEVICE_GLOBAL_MEM_SIZE)); vg_ocl_device_getulong(did, CL_DEVICE_GLOBAL_MEM_SIZE));
printf("Max allocation: %ld\n", printf("Max allocation: %ld\n",
vg_ocl_device_getulong(did, CL_DEVICE_MAX_MEM_ALLOC_SIZE)); vg_ocl_device_getulong(did, CL_DEVICE_MAX_MEM_ALLOC_SIZE));
vocp->voc_dump_done = 1;
} }
void void
@ -354,6 +358,22 @@ vg_ocl_buildlog(vg_ocl_context_t *vocp, cl_program prog)
* OpenCL per-exec functions * OpenCL per-exec functions
*/ */
int
vg_ocl_check_driver(vg_ocl_context_t *vocp)
{
#ifdef WIN32
if (!strcmp(vg_ocl_device_getstr(vocp->voc_ocldid, CL_DEVICE_VENDOR),
"NVIDIA Corporation") &&
strcmp(vg_ocl_device_getstr(vocp->voc_ocldid, CL_DRIVER_VERSION),
"270.81")) {
printf("WARNING: Known problems with certain NVIDIA driver versions\n");
printf("WARNING: Use version 270.81 for best results\n");
return 0;
}
#endif
return 1;
}
int int
vg_ocl_create_kernel(vg_ocl_context_t *vocp, int knum, const char *func) vg_ocl_create_kernel(vg_ocl_context_t *vocp, int knum, const char *func)
{ {
@ -605,6 +625,15 @@ vg_ocl_init(vg_context_t *vcp, vg_ocl_context_t *vocp, cl_device_id did)
if (vcp->vc_verbose > 1) if (vcp->vc_verbose > 1)
vg_ocl_dump_info(vocp); vg_ocl_dump_info(vocp);
if (!vg_ocl_check_driver(vocp)) {
char yesbuf[16];
printf("Type 'yes' to continue: ");
fflush(stdout);
if (!fgets(yesbuf, sizeof(yesbuf), stdin) ||
strncmp(yesbuf, "yes", 3))
exit(1);
}
vocp->voc_oclctx = clCreateContext(NULL, vocp->voc_oclctx = clCreateContext(NULL,
1, &did, 1, &did,
vg_ocl_context_callback, vg_ocl_context_callback,

2
vanitygen.c

@ -31,7 +31,7 @@
#include "pattern.h" #include "pattern.h"
const char *version = "0.14"; const char *version = "0.15";
typedef struct _vg_thread_context_s { typedef struct _vg_thread_context_s {
vg_exec_context_t base; vg_exec_context_t base;

Loading…
Cancel
Save