title: OpenCl - Global and local size - differences and why increasing local size only sometimes is noticable?
body: <p>I wrote 2 OpenCl programs that are multiplatform and multidevices.
  First is Integral and second Matrix-Matrix multiplication.
  I found out that manipulating with global work size and making it bigger to some absurdly big numbers like 2^28 is slowing my program (while local size is 1)
  and I kind of can self explain that to me, because probably GPU puts every thread that it has and as global size is so big, another threads are queued and waiting for previous one to finish their job and it is slowing the computing down.
  But in matrix multiplication I was able to set local size to 1024 (my max) and it went so fast, like from 130 seconds of computing to about 6 seconds.
  But in Integral I did the same, but increasing local size doesn't change anything in terms of time spent on computing.
  When I was learning OpenCl I didn't understand what is that global and local size, now I understand that global size number is just number of threads that will execute kernel code, which means if global size is 4 000, kernel code will be executed 4 000 times. But I still don't understand what is local size and why sometimes it make a difference and sometimes not, can someone explain "local size" definition to me? In a simple words.</p>
  
  <p>Thank you in advance!</p>