opencv中ocl矩阵的怪异行为

opencv中ocl矩阵的怪异行为,opencv,opencl,Opencv,Opencl,我面临一个奇怪的问题。我有两个矩阵,输入和输出。对于输入矩阵中r行中的每个元素i, 它对该行中i之前的所有元素求和,并将和放入输出矩阵的第i列和第r行。 当我对小矩阵这样做时,它不会给我任何问题。但对于大型矩阵(604x454), 输出矩阵包含除第一行以外的所有输出矩阵行中的GRARBAGE值 "__kernel void " " v2_integral_cols_sum(__global uchar *src,\n" "int

我面临一个奇怪的问题。我有两个矩阵,输入和输出。对于输入矩阵中r行中的每个元素i, 它对该行中i之前的所有元素求和,并将和放入输出矩阵的第i列和第r行。 当我对小矩阵这样做时,它不会给我任何问题。但对于大型矩阵(604x454), 输出矩阵包含除第一行以外的所有输出矩阵行中的GRARBAGE值

"__kernel void "
            "  v2_integral_cols_sum(__global uchar *src,\n"
                    "int rows,int cols,__global int *lm_sum, int pixels,int steps,int o_steps)\n"
                    "{\n"

                "int gid=get_global_id(0);\n"
                "if(gid>=pixels)"
                "return;\n"
                "else \n"
                "{"
                "int x = gid % steps;\n"
                "int y = gid / steps;\n"
                "int sum=0;\n"


                "for (int i=0;i<=x;i++)"
                "{\n"
                    "sum=sum+src[y * steps + i];\n"
                "}\n"

            "lm_sum[y*o_steps + x]=sum;\n"


        "}"

    "}\n"

你能用计算步骤和o_步骤的方式以及内核调用(特别是全局大小和维度)来编辑你的问题吗。关于奇怪的printf行为,它真的是包含正确值的输出矩阵,还是只包含printf在屏幕上显示的值;包含正确值的输出矩阵。我没有使用printf打印输出。它只是打印一个字符串。我尝试使用barrier代替printf,但也没有给出正确的结果。
"lm_sum[y*o_steps + x]=sum;\n"
 "if(gid==640)\n"
            "{"

            "printf(\"lm_sum [%d %d %d] %d  \",x,y,gid,lm_sum[y * o_steps+ x]);\n"


            "}\n"