Насколько эффективно можно реализовать алгоритм, основанный на табличном преобразовании с использованием CUDA, OpenCl. Т.е. есть строка символов. Каждый символ(после некотрых вычислений м.б.) явялется индексом в таблице. Нужно сформировать новую строку. Пример — преобразование регистра. Насколько технология GPGPU хзорошо подходит под такой класс задач?
В принципе хорошо подходит, если строка содержит очень много символов — 100кб и выше.
Табличка даже для 2х байт наверняка может целиком уместиться в кэше констант.
Еще лучше если символы обрабатываются независимо и код предварительной обработки имеет мало ветвлений.
Также желательно строку дополнять символами так, чтобы ее длина была кратной числу ядер ГПУ.
Здравствуйте, Аноним, Вы писали:
А>Насколько эффективно можно реализовать алгоритм, основанный на табличном преобразовании с использованием CUDA, OpenCl. Т.е. есть строка символов. Каждый символ(после некотрых вычислений м.б.) явялется индексом в таблице. Нужно сформировать новую строку. Пример — преобразование регистра. Насколько технология GPGPU хзорошо подходит под такой класс задач?
Если таблица позволит хранить себя в памяти для текстур, то всё срастётся.
С другой стороны. многие таблицы можно довольно быстро вычислить аналитически. Так что даже и без таблицы, или только с таблицей поправок, может хорошо получиться. Главное тут, чтобы преобразования были действительно массовыми.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Аноним, Вы писали:
А>Насколько эффективно можно реализовать алгоритм, основанный на табличном преобразовании с использованием CUDA, OpenCl. Т.е. есть строка символов. Каждый символ(после некотрых вычислений м.б.) явялется индексом в таблице. Нужно сформировать новую строку. Пример — преобразование регистра. Насколько технология GPGPU хзорошо подходит под такой класс задач?
мне кажется, что это и на cpu упрётся скорее в скорость памяти. сам посчитай — на core2quad можно выполнять больше 10 миллиардов таких преобразований в секунду