2012-05-06 2 views
0

У меня есть отсортированный набор массивов неподписанных шорт, например:OpenCL для поиска набора?

12, 222, 333, 444, 555 
78, 456, 123, 987, 231 

Я хочу, чтобы найти первые или все из этих массивов, которые соответствуют набору данных предикатов: например: [IDX [1] = 222 , idx [3] = 444], будет соответствовать первой строке, так как значение в индексе 1 равно 222, а значение в индексе 3 равно 444.

Является ли это задачей, когда я увижу преимущество от запуска поиска по GPU через OpenCL? Объем данных от 1 до 2 сотен миллионов предметов.

ответ

1

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

+0

Спасибо, вы можете выйти из ранней формы такой операции на gpu? Например: если мне нужно только первое совпадение – jdoig

+1

@jdoig: К сожалению нет, вы не можете отменить все потоки в блоке потока, они должны выполняться до завершения. Вы можете попытаться получить завершение глобальной передачи сигналов и проверить его на каждом этапе K. В любом случае, если у вас хороший GPU, вы получите гораздо более быстрое время выполнения, чем на CPU. – Tudor

+0

Еще раз спасибо Tudor. Не могли бы вы указать мне ссылку на технику, которую вы там упомянули? (завершение сигнализации посредством глобальной переменной). Я беспокоюсь, что если первое совпадение находится в индексе 1000, а последнее - в 150 миллионов долларов, тогда маршрут OpenCL может оказаться не столь эффективным и/или вернуть более много данных, чем мне действительно нужно (и я слышу перемещение данные на/из карты являются медленной частью) – jdoig

Смежные вопросы