Вопрос
Я ищу несколько вводных примеров для OpenCL, которые иллюстрируют типы приложений, которые могут испытывать большие (например, 50x-1000x) увеличения скорости. Cuda имеет много хороших примеров, но я не нашел то же самое для OpenCL . р>
Хорошим примером может служить глобальная оптимизация сложных функций с помощью скопления частиц, имитация отжига, эволюционные алгоритмы, оптимизация колоний муравьев и т. д.
Решение
Вот несколько замечательных примеров в SDK от nvidia:
Другие советы
Алгоритмы, которые вы описываете, не являются ни простыми, ни вводными с точки зрения программирования на GPU. Причина того, что у CUDA есть примеры в этих областях, заключается в том, что они были достаточно длинными, чтобы люди разработали эти примеры. В настоящее время нет общедоступной версии OpenCL, работающей на графических процессорах. Как ATI, так и NVIDIA предлагают бета-версии своих драйверов OpenCL, но ATI поддерживает только вычисления процессора, а NVIDIA требует подписания NDA для получения. Проще говоря, OpenCL не существовал достаточно долго для разработки и демонстрации таких всеобъемлющих примеров.
Тем не менее, получить доступ к драйверам NVIDIA OpenCL несложно. Вы можете узнать, как это сделать, на их форумах здесь . Я предполагаю, что дистрибутив OpenCL содержит несколько примеров программ, которые помогут вам начать работу.
Это также означает, что у вас есть отличная возможность разработать некоторые из этих тестов и опубликовать свои результаты. Тогда люди будут ссылаться на вашу работу, а не вы ссылаетесь на их работу. Я не ожидал бы слишком много сюрпризов, хотя. Производительность OpenCL должна быть примерно такой же, как и производительность CUDA, как только она станет широко доступной и поддерживаемой.
Наша команда работает над алгоритмами и ускорением OpenCL, и мы хотели бы предложить статью
в качестве примера реализации алгоритма имитации отжига для минимизации.
Вы можете попробовать следующие две книги:
Программирование массивно параллельных процессоров ... практический подход (NVIDIA) (главы 1 и 2)
Книга программирования OpenCL ... Параллельное программирование для многоядерных процессоров и графических процессоров (компоненты истории
И то, и другое подробно объясняет, почему была сделана разработка, и где можно найти истинные бонусы.
Хотя не уверен насчет бенчмаркинга, мне тоже не повезло.