cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

Fuxianjun
Journeyman III

kernel lead to crash

Why does this kernel lead my computer crash? To assign value to matrix with the size of p*q.

__kernel void test( __global float * matrix, __global int * p, __global int * q) { for(int i=0;i<p[0];i++) { for(int j=0;j<q[0];j++) { matrix=1.0; } } }

0 Likes
1 Reply
Illusio
Journeyman III

If that kernel crashes it's because of errors in your host code.

Some possible errors:

The matrix array is too small for the arguments you pass the kernel.

p[0] might not be initialized, or initialized to a wrong value.(That could apply to q[0] as well if you actually used it for anything beyond repeating the same assignment of 1.0 to the same memory location over and over)

p[0] was initialized correctly, but you forgot to unmap the buffer that contains it after initializing, so the correct value only exists in the CPU cache and not on the GPU.

and of course, any of the arguments could potentially not be set correctly in the kernel

Anyway, you should probably post the part of your host code that initializes the kernel parameters, as well as the code that initializes the opencl buffers you pass in them if none of the suggestions above help.

 

0 Likes