Well, I suppose that this happens because the reduction algorithms are different both for CPU and GPU. However, based on my experience programming GPUs directly on CUDA, I do not remember that Nvidia provide an API for reduction operators. Thus, could not be programmed equally both on GPU and  CPU?
As example I checked what you say:
    import torch

    a=torch.zeros((100,)).uniform_()
    a[a<=0.5]=0
    b=a.cuda()
    a.argmax()#reurn 1
    b.argmax()#return 16