mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-11 07:17:58 +00:00
Do not attempt to build the program that becomes the kernel twice. This could have been leading to failures on initialising cl.
This commit is contained in:
parent
c87460b34e
commit
d18d55649f
26
ocl.c
26
ocl.c
@ -185,7 +185,7 @@ void patch_opcodes(char *w, unsigned remaining)
|
|||||||
|
|
||||||
_clState *initCl(unsigned int gpu, char *name, size_t nameSize)
|
_clState *initCl(unsigned int gpu, char *name, size_t nameSize)
|
||||||
{
|
{
|
||||||
bool patchbfi = false;
|
bool patchbfi = false, prog_built = false;
|
||||||
cl_int status = 0;
|
cl_int status = 0;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
@ -526,6 +526,8 @@ build:
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prog_built = true;
|
||||||
|
|
||||||
status = clGetProgramInfo( clState->program, CL_PROGRAM_BINARY_SIZES, sizeof(size_t)*numDevices, binary_sizes, NULL );
|
status = clGetProgramInfo( clState->program, CL_PROGRAM_BINARY_SIZES, sizeof(size_t)*numDevices, binary_sizes, NULL );
|
||||||
if (unlikely(status != CL_SUCCESS)) {
|
if (unlikely(status != CL_SUCCESS)) {
|
||||||
applog(LOG_ERR, "Error: Getting program info CL_PROGRAM_BINARY_SIZES. (clGetPlatformInfo)");
|
applog(LOG_ERR, "Error: Getting program info CL_PROGRAM_BINARY_SIZES. (clGetPlatformInfo)");
|
||||||
@ -624,17 +626,19 @@ built:
|
|||||||
applog(LOG_INFO, "Initialising kernel %s with%s BFI_INT, %d vectors and worksize %d",
|
applog(LOG_INFO, "Initialising kernel %s with%s BFI_INT, %d vectors and worksize %d",
|
||||||
filename, patchbfi ? "" : "out", clState->preferred_vwidth, clState->work_size);
|
filename, patchbfi ? "" : "out", clState->preferred_vwidth, clState->work_size);
|
||||||
|
|
||||||
/* create a cl program executable for all the devices specified */
|
if (!prog_built) {
|
||||||
status = clBuildProgram(clState->program, 1, &devices[gpu], NULL, NULL, NULL);
|
/* create a cl program executable for all the devices specified */
|
||||||
if (status != CL_SUCCESS) {
|
status = clBuildProgram(clState->program, 1, &devices[gpu], NULL, NULL, NULL);
|
||||||
applog(LOG_ERR, "Error: Building Program (clBuildProgram)");
|
if (status != CL_SUCCESS) {
|
||||||
size_t logSize;
|
applog(LOG_ERR, "Error: Building Program (clBuildProgram)");
|
||||||
status = clGetProgramBuildInfo(clState->program, devices[gpu], CL_PROGRAM_BUILD_LOG, 0, NULL, &logSize);
|
size_t logSize;
|
||||||
|
status = clGetProgramBuildInfo(clState->program, devices[gpu], CL_PROGRAM_BUILD_LOG, 0, NULL, &logSize);
|
||||||
|
|
||||||
char *log = malloc(logSize);
|
char *log = malloc(logSize);
|
||||||
status = clGetProgramBuildInfo(clState->program, devices[gpu], CL_PROGRAM_BUILD_LOG, logSize, log, NULL);
|
status = clGetProgramBuildInfo(clState->program, devices[gpu], CL_PROGRAM_BUILD_LOG, logSize, log, NULL);
|
||||||
applog(LOG_INFO, "%s", log);
|
applog(LOG_INFO, "%s", log);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get a kernel object handle for a kernel with the given name */
|
/* get a kernel object handle for a kernel with the given name */
|
||||||
|
Loading…
Reference in New Issue
Block a user