Solved by googlebot in post #2 
              
              
                it comes down to two cuda kernels that, strongly simplified, look like: 
mul(float* a, float* b) 
vs 
mul(float* a, float b) 
second one is marginally faster, as one “load from global memory pointer” operation is avoided 
but this is not related to CPU-GPU transfers, note that function arguments, la…