diff --git a/com.amd.aparapi.jni/src/cpp/aparapi.cpp b/com.amd.aparapi.jni/src/cpp/aparapi.cpp
index d58632921e6b4eca267208c472bb0b77e56e12d2..29fa4c27e127e339e6f470cbeda81d866417a140 100644
--- a/com.amd.aparapi.jni/src/cpp/aparapi.cpp
+++ b/com.amd.aparapi.jni/src/cpp/aparapi.cpp
@@ -447,6 +447,15 @@ class JNIContext{
                            status = clGetDeviceIDs(platforms[i], deviceType, 0, NULL, &deviceIdc);
                            // now check if this platform supports the requested device type (GPU or CPU)
                            if (status == CL_SUCCESS && deviceIdc >0 ){
+                              if (deviceIdc >1){
+                                 if (isVerbose()){
+                                    fprintf(stderr, "Warning attempt to use %d devices\n", deviceIdc);
+                                 }
+                                 deviceIdc = 1; // Hack to work around issue #18 (multiple device error)
+                                 if (isVerbose()){
+                                    fprintf(stderr, "Locking deviceIdc to %d to work around issue #18\n", deviceIdc);
+                                 }
+                              }
                               platform = platforms[i];
                               if (isVerbose()){
                                  fprintf(stderr, "platform %s supports requested device type\n", platformVendorName);