как я могу ускорить вычисления для этого уравнения с помощью графического процессора или cuda, поскольку файл содержит 30 000 точек
points = pd.read_csv('file.dat', sep='\t', usecols=[0, 1])
d = pd.DataFrame(np.zeros((max_id, max_id)))
dis = sch.distance.pdist(points, 'euclidean')
n = 0
for i in range(max_id):
print(i)
for j in range(i + 1, max_id):
d.at[i, j] = dis[n]
d.at[j, i] = d.at[i, j]
n += 1
РЕДАКТИРОВАТЬ
Я попытался
points = genfromtxt(path, delimiter='\t', usecols=[0, 1])
points =torch.tensor(points)
d = pd.DataFrame(np.zeros((max_id, max_id)))
dis = torch.cdist(points)
но получил
TypeError: cdist() missing 1 required positional argument: 'x2'
означает ли это, что мне нужно читать точки или два столбца точек отдельно?
Решение проблемы
NumPy изначально не поддерживает графические процессоры. Хотя вы можете использовать некоторые библиотеки, которые совместимы с numpy
GPU и поддерживают его. Одним из таких вариантов было бы использование PyTorch
. torch.cdist
будет одной из функций, на которую вы можете посмотреть (тогда вам не нужно организовывать ее таким образом, используя циклы). Также есть torch.nn.functional.pdist
. Также обратите внимание, что во втором случае вам не нужно использовать цикл for. Как только вы получите результат, вы можете использовать reshape
его в соответствии с вашими потребностями.
Комментариев нет:
Отправить комментарий