PDA

View Full Version : Regarding the kernel function



shahsaurabh1990
01-27-2013, 11:59 PM
In my kernel function i have given arguments as three vectors A,B and C respectively.
A and B are input vector ; C is the output vector
kernel function is as follows
{
int i=get_global_id(0);
int j;
for(j=0;j<6;j++)
{
B[j]=B[j]+1;
}
}

there was no change in the B vector

but when i wrote C[j] in place of B[j] inside the for loop, i got the changes in C vector
C[j]=C[j]+1;
Can anyone explain why??

clint3112
01-28-2013, 06:11 AM
how do you define your buffer B and C? is buffer B defined as read only and C as write only? or is B defined as

__global const float* B

shahsaurabh1990
01-28-2013, 06:33 AM
i have written a kernel for union function between 2 vectors

kernel(a,b,c,k)
{
int i=get_global_id(0);
int j;
int v;
v=0;
for(j=0;j<k;j++)
{
if(A[i] == B[j])
{
v=1;
}
}
if(v==0)
C[i]=A[i];
}
before the kernel function i initialized the values of vector C with 99999
and i have two vectors A and B which have some common values =, but still the values of vector C remain the same.
Can you tell why??

clint3112
01-28-2013, 09:26 AM
how are a,b and c defined?

__kernel foo(__global const a, __global const b, __global const c, int k)
or

__kernel foo(__global const a, __global const b, __global c, int k)

and is c defined as a read/write buffer on host side??

shahsaurabh1990
01-29-2013, 03:51 AM
Now the code is running; it was not accessing the GPU through a virtual instance therefore i ran the code on the machine where the Gpu card was installed, now it is running correctly