[Beignet] [PATCH] enlarge buf size to avoid memory out of range written by GPU (kernel)

Yang, Rong R rong.r.yang at intel.com
Mon Jul 4 07:01:17 UTC 2016


LGTM, pushed, with indent refine, thanks.

> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Guo, Yejun
> Sent: Monday, July 4, 2016 9:10
> To: Guo, Yejun <yejun.guo at intel.com>; beignet at lists.freedesktop.org
> Subject: Re: [Beignet] [PATCH] enlarge buf size to avoid memory out of
> range written by GPU (kernel)
> 
> ping for review, thanks.
> 
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Guo, Yejun
> Sent: Tuesday, June 28, 2016 3:25 PM
> To: beignet at lists.freedesktop.org
> Subject: Re: [Beignet] [PATCH] enlarge buf size to avoid memory out of
> range written by GPU (kernel)
> 
> ping for review, thanks.
> 
> -----Original Message-----
> From: Guo, Yejun
> Sent: Wednesday, June 15, 2016 10:36 AM
> To: beignet at lists.freedesktop.org
> Cc: Guo, Yejun
> Subject: [PATCH] enlarge buf size to avoid memory out of range written by
> GPU (kernel)
> 
> pseudocode:
> float input[] = {...};  -->  float input[] = { ...  ... more} global_size = input_len -->
> global_size = input_len / vector
> 				the value of vector is 1,2,... or 16.
> 
> ocl kernel looks like (for the case of vector=8):
>   int i = get_global_id(0);
>   dst[i * (*vector) + 0] = ret[0];
>   dst[i * (*vector) + 1] = ret[1];
>   dst[i * (*vector) + 2] = ret[2];
>   dst[i * (*vector) + 3] = ret[3];
>   dst[i * (*vector) + 4] = ret[4];
>   dst[i * (*vector) + 5] = ret[5];
>   dst[i * (*vector) + 6] = ret[6];
>   dst[i * (*vector) + 7] = ret[7];
> 
> Signed-off-by: Guo Yejun <yejun.guo at intel.com>
> ---
>  utests/utest_generator.py | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/utests/utest_generator.py b/utests/utest_generator.py index
> cde2dbe..3591095 100644
> --- a/utests/utest_generator.py
> +++ b/utests/utest_generator.py
> @@ -1,6 +1,6 @@
>  #!/usr/bin/python
>  from __future__ import print_function
> -import os,sys,re
> +import os,sys,re,string
> 
>  FLT_MAX_POSI='0x1.fffffep127f'
>  FLT_MIN_NEGA='-0x1.fffffep127f'
> @@ -247,7 +247,7 @@ which can print more values and information to assist
> debuging the issue.
>    def argvector(self,paraN,index):
>      vector=re.findall(r"[0-9]+",self.inputtype[paraN][index])
>      if vector:
> -      vector=vector[0]
> +      vector=string.atoi(vector[0])
>      else:
>        vector=1
>      return vector
> @@ -272,10 +272,17 @@ which can print more values and information to
> assist debuging the issue.
>  #####Cpu values analyse
>    def GenInputValues(self,index):
>      #namesuffix=self.inputtype[0][index]
> +    vlen = self.argvector(self.inputtype.__len__()-1,index)
>      for i in range(0,self.values.__len__()):
> -      self.cpplines += [ "const %s input_data%d[] =
> {%s};" %(self.argtype(i,index),i+1,str(self.values[i]).strip('[]').replace('\'','')) ]
> +        vals = []
> +        for j in range(0, vlen):
> +            if (len(vals) >= 128):	#avoid too many data
> +                vals = vals[0:128]
> +                break
> +            vals += self.values[i]
> +        self.cpplines += [ "const %s input_data%d[] = {%s};"
> + %(self.argtype(i,index),i+1,str(vals).strip('[]').replace('\'','')) ]
>      self.cpplines += [ "const int count_input = sizeof(input_data1) /
> sizeof(input_data1[0]);" ]
> -    self.cpplines += [ "const int vector
> = %s;\n"%(self.argvector(self.inputtype.__len__()-1,index)) ]
> +    self.cpplines += [ "const int vector = %s;\n"%(vlen) ]
> 
>  #####Cpu Function
>    def GenCpuCompilerMath(self,index):
> @@ -340,7 +347,7 @@ static void %s_%s(void)
>    OCL_CREATE_KERNEL(\"%s_%s\");
>    OCL_CREATE_BUFFER(buf[0], CL_MEM_READ_WRITE, count_input *
> sizeof(%s), NULL);
> 
> -  globals[0] = count_input;
> +  globals[0] = count_input / vector;
>    locals[0] = 1;
>   '''%(self.fileName,namesuffix,\
>       self.retType(index),\
> --
> 1.9.1
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list