как я могу ускорить вычисления для этого уравнения с помощью графического процессора или 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 изначально не поддерживает графические процессоры. Хотя вы можете использовать некоторые библиотеки, которые совместимы с numpyGPU и поддерживают его. Одним из таких вариантов было бы использование PyTorch. torch.cdistбудет одной из функций, на которую вы можете посмотреть (тогда вам не нужно организовывать ее таким образом, используя циклы). Также есть torch.nn.functional.pdist. Также обратите внимание, что во втором случае вам не нужно использовать цикл for. Как только вы получите результат, вы можете использовать reshapeего в соответствии с вашими потребностями.
Комментариев нет:
Отправить комментарий