opencv中ocl矩阵的奇怪行为

时间:2014-05-11 17:23:31

标签: opencv opencl

我是一个qweird问题。我有两个矩阵,输入和输出。对于输入矩阵中行r中的每个元素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"

有趣的是,如果我在输出赋值语句之后使用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"

0 个答案:

没有答案