Ho right you have negative values as well 
I’m afraid this is going to be hard to do as fast as round without reimplementing an efficient C kernel for it.
In [12]: x = torch.tensor([-0.6, -0.5, -0.4, 0.4, 0.5, 0.6])

In [13]: %timeit x.round()
56.9 µs ± 7.92 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [14]: %timeit torch.sign(x) * torch.floor(torch.abs(x) + 0.5)
349 µs ± 4.78 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [16]: %timeit (x + x.sign().float() / 2.).round()
305 µs ± 3.89 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Note that these timings may not be representative for larger Tensors though. Or if you’re running on GPU.