Syncleus / aparapi

The New Official Aparapi: a framework for executing native Java and Scala code on the GPU.
http://aparapi.com
Apache License 2.0
465 stars 59 forks source link

cleanUpArrays() Error on AMD OPENCL #135

Closed ghost closed 6 years ago

ghost commented 6 years ago

OpenCL version: 2.1 Windows 10 x64 Happens on both AMD and AMD

Taking a look at the error codes it is clear that it doesnt want to execute 0-range-kernels. Is this intended behaviour?

Error Log: after clEnqueueNDRangeKernelWOOOT5 , globalSize[0] = 0, localSize[0] = 1 !!!!!!! clEnqueueNDRangeKernel() failed invalid work group size Jun 29, 2018 1:44:52 PM com.aparapi.internal.kernel.KernelRunner fallBackToNextDevice WARNUNG: Device failed for NeuralNetKernel, devices={AMD<GPU>|AMD<CPU>|Java Alternative Algorithm|Java Thread Pool}: OpenCL execution seems to have failed (runKernelJNI returned -54) com.aparapi.internal.exception.AparapiException: OpenCL execution seems to have failed (runKernelJNI returned -54) at com.aparapi.internal.kernel.KernelRunner.executeOpenCL(KernelRunner.java:1231) at com.aparapi.internal.kernel.KernelRunner.executeInternalInner(KernelRunner.java:1690) at com.aparapi.internal.kernel.KernelRunner.executeInternalOuter(KernelRunner.java:1351) at com.aparapi.internal.kernel.KernelRunner.execute(KernelRunner.java:1342) at com.aparapi.Kernel.execute(Kernel.java:2857) at com.aparapi.Kernel.execute(Kernel.java:2814) at com.aparapi.Kernel.execute(Kernel.java:2789) at com.aparapi.internal.kernel.KernelRunner.cleanUpArrays(KernelRunner.java:208) at com.aparapi.Kernel.cleanUpArrays(Kernel.java:2883) at com.godsoft.fourwin.nn.NeuralNetKernel.computeBlocking(NeuralNetKernel.java:57) at com.godsoft.fourwin.nn.NeuralNetwork.computeOutput(NeuralNetwork.java:62) at com.godsoft.fourwin.MainClass$1.run(MainClass.java:67) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748)

CoreRasurae commented 6 years ago

@Godsoft029 Yes, it is the intended behaviour. The globalSize must be a multiple of localSize. If your localSize is 1 then globalSize must be at least 1, if globalSize is 10, then you will have 10 groups of localSize 1.

freemo commented 6 years ago

@Godsoft029 I'm going to close this ticket and label it as a question. Please feel free to re-open if you feel the ticket is still valid, and even if you keep it closed feel free to continue commenting on this ticket, thanks.

mtommila commented 5 years ago

It seems like this error happens everytime Kernel.cleanUpArrays() is called, which probably is not intended? It also happens in the CleanUpArraysDemo class in the aparapi-examples repo.