Я начал работать над многопоточностью и обработкой облаков точек. Проблема в том, что мне нужно реализовать многопоточность в существующей реализации, и существует очень много операций чтения и записи, поэтому использование мьютекса не дает мне достаточного ускорения в плане производительности из-за слишком большого количества операций чтения из grid
.
В конце я изменил код таким образом, чтобы у меня мог быть один vtkSmartPointer<vtkUnstructuredGrid>
, который содержит мое облако точек. Единственная операция, которую должны выполнить потоки, - это доступ к точкам с использованием метода GetPoint . Тем не менее, он не является поточно-ориентированным, даже если у вас есть операция только для чтения из-за интеллектуальных указателей.
Из-за этого мне пришлось копировать мое основное облако точек для каждого потока, что в конце вызывает проблемы с памятью, если у меня естьслишком много нитей и больших облаков.
Я пытался разрезать облака точек на куски, но потом это становится слишком сложным, когда у меня слишком много нитей. Я не могу гарантировать оптимизированное количество баллов для обработки для каждого потока. Кроме того, я выполняю поиск соседей для каждой точки, поэтому разделение облака точек на куски становится еще более сложным, потому что для правильного поиска окрестностей мне нужно иметь перекрытия для каждого чанка.
Поскольку vtkUnstructuredGrid
оптимизирована для памяти, я мог быне заменяйте его на некоторые контейнеры STL. Я был бы рад, если бы вы порекомендовали мне структуры данных, которые я могу использовать для обработки облаков точек, которые можно поточно-ориентированно читать. Или, если есть какое-то другое решение, которое я мог бы использовать.
Заранее спасибо