Повторное вычисление ближайшего соседа для миллионов точек данных слишком медленное

У меня есть набор данных, который работает с миллионами точек данных в 3D. Для вычисления, которое я делаю, мне нужно вычислить сосед (поиск диапазона) для каждой точки данных в радиусе, попытаться подогнать функцию, вычислить ошибку для подбора, повторить это для следующего пункта данных и так...