Size of parameters and kernel behavior for large parameters kernel does nothing

Ok I’ll be precise. My program has two structures:

[codebox]struct A


int a1;

int a2;

int a3;

int a4;

float a5;


struct B


int b1;

int b2;

int b3[25];

int b4;

int b5;

int b6;

int b7;

int b8;

float b9;

float b10;


The host code is making arrays of these structures. The size of arrays changes with different data instances. If the size of array of struct B is n then the size of array of struct A is n*(n-1)/2. Also I am sending one more float array of size n to the kernel. The kernel is executed on n+1 blocks with 2 threads each. My code works fine when n is about 50. But it does not work when n is 100. Is it because the parameters passed to the kernel are transfered to the shared memory which in this case overflows? For large data set the program does not crash or anything. It just doesn’t do anything. The parameters passed to the kernel are returned unchanged.

Further, when I only pass array of struct B (n=100) and to some processing, it works. But when I pass all other parameters (as described above) it doesn’t work. What am I doing wrong? Is there a way out or I need to change my approach?

Any help will be much appreciated.