Hi,
I just remark a strange behavior on my kernel processing integrale image.
- input kernel struct
typedef struct {
uchar tableau[36];
} my_tab;
- kernel
__kernel void integraleImg( __global uchar* out,
__global uchar* Ginter,
my_tab in,
int im_width,
int im_height,
int sens,
__global uchar* Group)
{
- 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));
- 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 ;))