Let's say I have one large buffer on GPU (tens to hundreds of megabytes). Let's call it main buffer. I need to change parts of it from CPU. It's trivial using clEnqueueMapBuffer or clEnqueueWriteBuffer, but the problem is that I have to update multiple parts of main buffer and updates are small (each one is < 1 KB). Since such small updates are much slower than one large update I'm looking for some tips on how to achieve better bandwidth. Is there any way I could combine multiple small updates into bigger one (note that each update is different size and has different offset into main buffer).