Reproduced. Thanks for reporting the issue and we will look into it soon. On Mon, Apr 06, 2015 at 09:55:48PM +0100, Rebecca N. Palmer wrote: > Control: retitle -1 beignet: silently does nothing on large arrays > (previous discussion: > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=781875 ) > > This isn't a Haswell-specific problem (and might not be ICD-specific > either: did you test that at these sizes, or only with the > testsuite?), it's a large-array-specific problem: I simply hadn't > tried arrays that big before. > > The array size required to trigger it decreases as the number of > arrays (arguments to the kernel being run, not total existing) > increases, suggesting a total-memory limit: on my system, > approximately 2x240Mifloat, 3x160Mifloat, or 5x100Mifloat, but these > vary ~10% from run to run. (Hence, re-adding the per-array size > limit probably wouldn't completely avoid the problem, though I > haven't actually tried that.) > > These sizes do _not_ appear to depend on free system memory, but due > to their variability and the limited range I can test before running > into "running out of memory in beignet hangs the entire system" > (https://bugs.launchpad.net/ubuntu/+source/beignet/+bug/1354086 ), I > cannot be completely sure of this.
> #!/usr/bin/env python3 > #Depends: python3-pyopencl python3-numpy > from __future__ import division,print_function > import pyopencl > import pyopencl.array > import numpy as np > import time > import pyopencl.clmath > ctx=pyopencl.create_some_context() > cq=pyopencl.CommandQueue(ctx) > asize=100*(2**20)#fails above approx. 235 for 2-array, 162 for 3-array, 100 > for 5-array, but the exact number varies > #Warning: very large sizes will hang your system, > https://bugs.launchpad.net/ubuntu/+source/beignet/+bug/1354086 > aCL=pyopencl.array.arange(cq,0,asize,1,dtype='float32') > bCL=pyopencl.array.arange(cq,0,asize,1,dtype='float32') > cCL=pyopencl.array.arange(cq,0,asize,1,dtype='float32') > dCL=pyopencl.array.arange(cq,0,asize,1,dtype='float32') > eCL=pyopencl.array.arange(cq,0,asize,1,dtype='float32') > print("CL arrays created") > ans=aCL[0:1000].get()*4 > f2=pyopencl.elementwise.ElementwiseKernel(ctx,pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *a,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *c","c[i]=3*a[i]+c[i]","twoarray") > f3=pyopencl.elementwise.ElementwiseKernel(ctx,pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *a,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *b,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *c","c[i]=3*a[i]+b[i]","threearray") > f5=pyopencl.elementwise.ElementwiseKernel(ctx,pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *a,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *b,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *c,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *d,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *e","c[i]=a[i]+b[i]+d[i]+e[i]","fivearray") > f5b=pyopencl.elementwise.ElementwiseKernel(ctx,pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *a,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *b,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *c,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *d,"+pyopencl.tools.dtype_to_ctype(aCL.dtype)+" > *e","c[i]=4*e[i]","fivearray_usetwo") > f2(aCL,cCL).wait() > #f3(aCL,bCL,cCL).wait() > f5(aCL,bCL,cCL,dCL,eCL).wait() > #f5b(aCL,bCL,cCL,dCL,eCL).wait() > print("size",len(aCL)," error > ",np.max(np.nan_to_num(np.abs(cCL[0:1000].get()-ans))),"first 10 > ",ans[0:10],cCL[0:10].get()) > > _______________________________________________ > Beignet mailing list > Beignet@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet