Transfer of host variables in calling a kernel

When we pass a (host) variable (e.g. int a ) through a kernel call, then whenever the kernel is executed, does it fetch the data from the host each time or it just makes a copy at the beginning only?
Will converting the variable to a pointer and performing MEMCPY speed up the process?

Means if I need the value of a host variable ‘int c’ in kernel function and so if I pass it when calling the kernel function, like
kernel<<<dimGrid,dimBlock>>>(matrix_d,int c) ,
where ‘int c’ is a host variable,
then on each kernel call, where will the kernel fetch the data from?
from the host each time or some other mechanism?
then will this degrade the performance or should I convert ‘int c’ to a pointer and perform ‘memcpy’ for the purpose as ‘c’ has to be used a lot in calculations in the kernel function?

Means if I need the value of a host variable ‘int c’ in kernel function and so if I pass it when calling the kernel function, like
kernel<<<dimGrid,dimBlock>>>(matrix_d,int c) ,
where ‘int c’ is a host variable,
then on each kernel call, where will the kernel fetch the data from?
from the host each time or some other mechanism?
then will this degrade the performance or should I convert ‘int c’ to a pointer and perform ‘memcpy’ for the purpose as ‘c’ has to be used a lot in calculations in the kernel function?