ComputeCommandQueue.Read can read ComputeBuffer and ComputeImage types.
How can i read a single integer or float value from device memory?
Well you can't. Or rather you can't do it in a single method call. You have to use a ComputeBuffer containing a single value to achieve this.