enqueueReadBuffer data not usable for next enqueueNDRangeKernel

Hi,

I just remark a strange behavior on my kernel processing integrale image.

  1. input kernel struct
  typedef struct {
             uchar tableau[36];
  } my_tab;
  1. kernel
 __kernel void integraleImg(   __global  uchar*   out,
                               __global  uchar*   Ginter,
                                         my_tab   in,
                                         int      im_width,
                                         int      im_height,
                                         int      sens,
                               __global  uchar*   Group)
 {
  1. buffer
        group           = cl::Buffer(gContext, CL_MEM_READ_WRITE,  1*sizeof(cl_uchar));
        tabtest         = cl::Buffer(gContext, CL_MEM_READ_WRITE, 36*sizeof(cl_uchar));
        intering        = cl::Buffer(gContext, CL_MEM_READ_WRITE,  6*sizeof(cl_uchar));
  1. processing
        my_tab tab;
        for (int i =0 ; i < sizeof(tab); i++) {
            LOGI(" 0 tableau ind: %d value: %d \n",i,tab.tableau[i]);
        }

        gIntegraleImg.setArg(0,tabtest);        // Image Integrale
        gIntegraleImg.setArg(1,intering);       // calcul intermediaire
        gIntegraleImg.setArg(2,tab);            // input table
        gIntegraleImg.setArg(3,6);
        gIntegraleImg.setArg(4,6);
        gIntegraleImg.setArg(5,0);              // sens du calcul X = ligne
        gIntegraleImg.setArg(6,group);          // grouId
        gQueue.enqueueNDRangeKernel(gIntegraleImg, cl::NDRange(0,0), cl::NDRange(6,6), cl::NDRange(6,1));

        gQueue.enqueueReadBuffer(tabtest, CL_TRUE, 0, 36*sizeof(cl_uchar), tab.tableau, &events, NULL);
        arraySecondEvent.wait();

        for (int i =0 ; i < sizeof(tab); i++) {
            LOGI(" 1 tableau ind: %d value: %d \n",i,tab.tableau[i]);
        }

        gIntegraleImg.setArg(0,tabtest);      // Image Integrale
        gIntegraleImg.setArg(1,intering);     // calcul intermediaire
        gIntegraleImg.setArg(2,tab);
        gIntegraleImg.setArg(3,6);
        gIntegraleImg.setArg(4,6);
        gIntegraleImg.setArg(5,1);            // sens du calcul Y = colonne
        gIntegraleImg.setArg(6,group);        // grouId
        gQueue.enqueueNDRangeKernel(gIntegraleImg, cl::NDRange(0,0), cl::NDRange(6,6), cl::NDRange(1,6));


        gQueue.enqueueReadBuffer(tabtest, CL_TRUE, 0, 36*sizeof(cl_uchar), tab.tableau, &events, NULL);
        arraySecondEvent.wait();

        for (int i =0 ; i < sizeof(tab); i++) {
            LOGI(" 2 tableau ind: %d value: %d \n",i,tab.tableau[i]);
        }

I send tab struct as input to the first kernel.
I copy the output tabtest(buffer) to the tab (struct) to get the first pass
i use the tab(struc) updated as input for the second kernel.

But the second kernel is donig nothing ?

If i process the secend kernel without the first one the work in Y direction is done. But if i do first X direction kernel and second Y direction kernel i only got the same infmation than the output first kernel.

I missed something somewhere ;))

here the output

2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 0 value: 5 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 1 value: 4 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 2 value: 3 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 3 value: 8 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 4 value: 3 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 5 value: 4 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 6 value: 3 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 7 value: 9 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 8 value: 1 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 9 value: 2 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 10 value: 6 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 11 value: 3 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 12 value: 9 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 13 value: 6 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 14 value: 0 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 15 value: 5 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 16 value: 7 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 17 value: 5 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 18 value: 7 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 19 value: 3 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 20 value: 6 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 21 value: 5 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 22 value: 9 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 23 value: 2 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 24 value: 1 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 25 value: 2 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 26 value: 2 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 27 value: 8 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 28 value: 3 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 29 value: 1 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 30 value: 2 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 31 value: 5 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 32 value: 4 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 33 value: 8 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 34 value: 3 
2023-05-24 21:23:10.159 I/JNIProcessor:  0 tableau ind: 35 value: 6 

2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 0 value: 5 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 1 value: 9 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 2 value: 12 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 3 value: 20 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 4 value: 23 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 5 value: 27 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 6 value: 3 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 7 value: 12 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 8 value: 13 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 9 value: 15 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 10 value: 21 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 11 value: 24 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 12 value: 9 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 13 value: 15 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 14 value: 15 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 15 value: 20 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 16 value: 27 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 17 value: 32 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 18 value: 7 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 19 value: 10 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 20 value: 16 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 21 value: 21 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 22 value: 30 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 23 value: 32 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 24 value: 1 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 25 value: 3 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 26 value: 5 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 27 value: 13 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 28 value: 16 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 29 value: 17 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 30 value: 2 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 31 value: 7 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 32 value: 11 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 33 value: 19 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 34 value: 22 
2023-05-24 21:23:10.160 I/JNIProcessor:  1 tableau ind: 35 value: 28 

2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 0 value: 5 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 1 value: 9 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 2 value: 12 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 3 value: 20 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 4 value: 23 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 5 value: 27 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 6 value: 3 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 7 value: 12 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 8 value: 13 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 9 value: 15 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 10 value: 21 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 11 value: 24 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 12 value: 9 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 13 value: 15 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 14 value: 15 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 15 value: 20 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 16 value: 27 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 17 value: 32 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 18 value: 7 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 19 value: 10 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 20 value: 16 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 21 value: 21 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 22 value: 30 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 23 value: 32 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 24 value: 1 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 25 value: 3 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 26 value: 5 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 27 value: 13 
2023-05-24 21:23:10.160 I/JNIProcessor:  2 tableau ind: 28 value: 16 
2023-05-24 21:23:10.161 I/JNIProcessor:  2 tableau ind: 29 value: 17 
2023-05-24 21:23:10.161 I/JNIProcessor:  2 tableau ind: 30 value: 2 
2023-05-24 21:23:10.161 I/JNIProcessor:  2 tableau ind: 31 value: 7 
2023-05-24 21:23:10.161 I/JNIProcessor:  2 tableau ind: 32 value: 11 
2023-05-24 21:23:10.161 I/JNIProcessor:  2 tableau ind: 33 value: 19 
2023-05-24 21:23:10.161 I/JNIProcessor:  2 tableau ind: 34 value: 22 
2023-05-24 21:23:10.161 I/JNIProcessor:  2 tableau ind: 35 value: 28 
2023-05-24 21:23:10.161 E/JNIProcessor:  enqueueReadBuffer in 4 ms 

It look like the the second kernel as not been excecuted or something else.
Because the second kernel work well if the first kernel is not exceuted.

There is something that i did not andrestoud .))

Thanks for the help.

PS: i succes today to make openCL cl2.hpp work on windows platform. Ill will see the performance between hauwei honnor play mali G72 and I7 and gtx1060. I let you know ;))

Hi,

Very sorry for the post and for people how take time to loock at it.

Stupid error i forgot to réinitialize the info.

Very sorry again.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.