The issue seems to be related to the version.
For the same one used above,
>>> print(torch.__version__)
1.8.1+cu111
>>> print(torch.version.cuda)
11.1

This is the result:
>>> linearcuda = torch.nn.Linear(1,1,bias=False).to('cuda:0')
>>> linearcpu = torch.nn.Linear(1,1,bias=False)
>>> onescuda = torch.ones(3,1,device='cuda:0')
>>> onescpu = torch.ones(3,1)
>>> print(linearcuda(onescuda))
tensor([[1.],
        [1.],
        [1.]], device='cuda:0', grad_fn=<MmBackward>)
>>> print(linearcpu(onescpu))
tensor([[0.2037],
        [0.2037],
        [0.2037]], grad_fn=<MmBackward>)
>>> print(linearcuda.state_dict())
OrderedDict([('weight', tensor([[0.0904]], device='cuda:0'))])

While with an older version:
>>> print(torch.__version__)
1.4.0
>>> print(torch.version.cuda)
10.1
>>> linearcuda = torch.nn.Linear(1,1,bias=False).to('cuda:0')
>>> linearcpu = torch.nn.Linear(1,1,bias=False)
>>> onescuda = torch.ones(3,1,device='cuda:0')
>>> onescpu = torch.ones(3,1)
>>> print(linearcuda(onescuda))
tensor([[0.2613],
        [0.2613],
        [0.2613]], device='cuda:0', grad_fn=<MmBackward>)
>>> print(linearcpu(onescpu))
tensor([[0.8475],
        [0.8475],
        [0.8475]], grad_fn=<MmBackward>)