Memory bandwidth for transfer betwen host to device

I have a kernel which is run by my code every 1 second. The kernel takes only one argument - a buffer object that holds a table of size 128 bytes(holds ascii keys).

Now when I create a buffer object for this table, and I set this buffer as the kernel’s argument, will the contents of this buffer object be immediatley transferred to the device memory and some reference is kept in the kernel, so that every time the kernel is called(every 1 second), this buffer object need not be transferred from the host memory to device memory, OR is it that every time I call the kernel, the buffer would be transferred from the host memory to the device memory? Basically is it a one time transfer from the host memory to the device memory, till I release the mem object or will it be copied from the host memory to device memory for every invocation of the kernel?

It is a one-time copying of an object. IMHO doing latter way is much more expensive in case of performance, especially of buffer is of megabytes length.