I had made a mistake in the comparison. My data matrix loaded from the file has 200K records and 300 features but I use the transpose when calculating the SVD. This was the mistake.
U, s, V = torch.svd(torch.Tensor(normalized_features.T).cuda(), some=True)

In Pytorch, even the following simple code fails with a segmentation fault. There is a limit to the number of columns in the matrix that SVD can handle.
import torch

x = torch.zeros(300, 100001).cuda();
u, s, v = torch.svd(x, some=True);
print(u);

So I made the following changes to my code and it works.
# perform single value decomposition
U, s, V = torch.svd(torch.Tensor(normalized_features).cuda(), some=True)
# compute the value k: number of minumum features that retains the given variance
k = get_minimum_features(s, 95)
# compute the reduced dimensional features by projection
V_reduced = torch.t(V)[:, : k[0]].cuda()
Z = torch.mm(torch.Tensor(normalized_features).cuda(), V_reduced)