Create command queue before compiling program in opencl.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
diff --git a/ocl.c b/ocl.c
index 5dcced7..feb6aa2 100644
--- a/ocl.c
+++ b/ocl.c
@@ -309,6 +309,18 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
return NULL;
}
+ /////////////////////////////////////////////////////////////////
+ // Create an OpenCL command queue
+ /////////////////////////////////////////////////////////////////
+ clState->commandQueue = clCreateCommandQueue(clState->context, devices[gpu],
+ CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, &status);
+ if (status != CL_SUCCESS) /* Try again without OOE enable */
+ clState->commandQueue = clCreateCommandQueue(clState->context, devices[gpu], 0 , &status);
+ if (status != CL_SUCCESS) {
+ applog(LOG_ERR, "Error %d: Creating Command Queue. (clCreateCommandQueue)", status);
+ return NULL;
+ }
+
/* Check for BFI INT support. Hopefully people don't mix devices with
* and without it! */
char * extensions = malloc(1024);
@@ -739,18 +751,6 @@ built:
return NULL;
}
- /////////////////////////////////////////////////////////////////
- // Create an OpenCL command queue
- /////////////////////////////////////////////////////////////////
- clState->commandQueue = clCreateCommandQueue(clState->context, devices[gpu],
- CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, &status);
- if (status != CL_SUCCESS) /* Try again without OOE enable */
- clState->commandQueue = clCreateCommandQueue(clState->context, devices[gpu], 0 , &status);
- if (status != CL_SUCCESS) {
- applog(LOG_ERR, "Error %d: Creating Command Queue. (clCreateCommandQueue)", status);
- return NULL;
- }
-
#ifdef USE_SCRYPT
if (opt_scrypt) {
size_t ipt = (1024 / clState->lookup_gap + (1024 % clState->lookup_gap > 0));