OpenCL: запрос графического процессора для набора результатов с неизвестным размером - PullRequest
0 голосов
/ 17 декабря 2018

Я написал пространственную хэш-карту, используя openCL для выполнения запросов расстояния между точками в наборе.Идея заключается в том, что для каждой точки в наборе я хочу найти все остальные точки в наборе в пределах определенного радиуса.

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

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

Существуют ли другие методы для такого рода вещей?Или двухпроходное решение - лучшее решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...