Comments 24
1)А CUDA??? Или вы только по тому что поддерживает проц проходились?
2) Почему OpenCL без GPU не обеспечивает производительности? Тут были где-то тесты на хабре, сравнивали с OpenMP. Там были одинаковые производительности показаны.
3) «Страница кода для запуска OpenCL» — ну, если использовать соответствующие обёртки — всего пара строчек)
А так в целом понравилось. Про последние три знал очень мало — почитал теперь)
2) Почему OpenCL без GPU не обеспечивает производительности? Тут были где-то тесты на хабре, сравнивали с OpenMP. Там были одинаковые производительности показаны.
3) «Страница кода для запуска OpenCL» — ну, если использовать соответствующие обёртки — всего пара строчек)
А так в целом понравилось. Про последние три знал очень мало — почитал теперь)
0
1) Вы угадали, CPU должен участвовать, за остальным — в блоги к производителям GPU :)
2)Почему не обеспечивает — вопрос сложный, это много от чего зависит. Короткий ответ — накладные расходы. И, правильно, да OpenMP — я же говорю, что и она не обеспечивает :)
3) Смотрела Intel OpenCL SDK (что ж еще? :) ) и оберток не заметила. Если они есть — отлично.
2)Почему не обеспечивает — вопрос сложный, это много от чего зависит. Короткий ответ — накладные расходы. И, правильно, да OpenMP — я же говорю, что и она не обеспечивает :)
3) Смотрела Intel OpenCL SDK (что ж еще? :) ) и оберток не заметила. Если они есть — отлично.
+3
Не знаю… Про производительность это сложный вопрос. На CL есть высокий доступ к вычислительному устройству (в том числе синхронизации различные). При наличие прямых рук производительность там будет не хуже чем на любой другой система использующей процессор. Но мороки будет много.
Обёртки это обычно открытые проекты. Вот тут про некоторые из них написано немного — habrahabr.ru/blogs/hi/124873/
Без них CL ещё более сложен и уныл)
Обёртки это обычно открытые проекты. Вот тут про некоторые из них написано немного — habrahabr.ru/blogs/hi/124873/
Без них CL ещё более сложен и уныл)
+1
Если долго и внимательно смотреть на картинку в начале поста, то она превратится в картинку из этого поста :) — это так и задумано? :)
Отличный обзорный пост! Но его надо продолжить. Тут прозвучала оценка технологий с точки зрения простоты изучения и доступности материалов. Хотелось бы также услышать рекомендации по выбору технологии в зависимости от типов (объемов, сложности, и т.п.) решаемых задач.
Отличный обзорный пост! Но его надо продолжить. Тут прозвучала оценка технологий с точки зрения простоты изучения и доступности материалов. Хотелось бы также услышать рекомендации по выбору технологии в зависимости от типов (объемов, сложности, и т.п.) решаемых задач.
0
Оох… у меня нет времени долго смотреть на картинки :) так что — не знаю.
я знала, что кто-нибудь это обязательно попросит :) Но это проще попросить, чем сделать. Буду думать.
я знала, что кто-нибудь это обязательно попросит :) Но это проще попросить, чем сделать. Буду думать.
0
Почему для Clock Plus и TBB нету отдельного жирного подпункта «недостатки» как у остальных, а они упомянуты в тексте? И насколько я понимаю недостаток что не используется GPU относится и к Click Plus, хотя не упомянут в тексте.
0
UFO just landed and posted this here
Если мы говорим про работу на CPU, то там все просто. В основе всех библиотек — нативный интерфейс работы с потоками ОС, так что в принципе все библиотеки распараллеливания на CPU «взаимозаменяемы» — то есть, теоретически возможно взять интерфес одной и звать внутри начинку от другой. Но интерфейс каждой из них заточен под внутреннюю структуру (или наоборот:) — то есть, вышеупомянутая штука будет немного медленнее или сильно медленнее, чем это возможно (при вызове быстрейшей библиотеки).
Если же включить сюда и GPU, то нам нужны: код для CPU, специально скомпилированный особым компилятором код для конкретного GPU плюс блок, загружающий этот код на GPU и обрабатывающий потом результаты. Как это можно сделать автоматически, да еще и в рантайме из одного исходного кода, не зная, что куда — я не представляю.
Если же включить сюда и GPU, то нам нужны: код для CPU, специально скомпилированный особым компилятором код для конкретного GPU плюс блок, загружающий этот код на GPU и обрабатывающий потом результаты. Как это можно сделать автоматически, да еще и в рантайме из одного исходного кода, не зная, что куда — я не представляю.
+1
«Страница кода для запуска OpenCL» — это самая вершина айсберга.
Внутри все намного сложнее, зато и возможностей где можно развернуться очень много.
(Сейчас пишу именно на OpenCL'е)
(Выше имелась в виду GPU часть OpenCL'я)
Внутри все намного сложнее, зато и возможностей где можно развернуться очень много.
(Сейчас пишу именно на OpenCL'е)
(Выше имелась в виду GPU часть OpenCL'я)
0
Для полноты картины еще две технологии:
PPL (Parallel Patterns Library)
Это аналог OpenMP от Microsoft, реализован в виде библиотеки средствами языка C++11 (lambda-выражения передаются параметрами функций). Весьма вероятно, что спецификации открыты, но учитывая недостаточную распространенность C++11 и существование OpenMP это дело возможно есть только в vs2010.
Намного более интересна другая вещь — C++ Accelerated Massive Parallelism (C++ AMP). Это замена OpenCL, но с использованием C++, как и PPL — это просто библиотека, которая работает в рамках языка C++11. Это дело недавно демонстрировали в работе, синтаксис немного показали, будет доступно в следующей версии Visual Studio. Важно, что спецификация будет точно открытой.
Некоторые ссылки:
C++ Accelerated Massive Parallelism
PPL (Parallel Patterns Library)
Это аналог OpenMP от Microsoft, реализован в виде библиотеки средствами языка C++11 (lambda-выражения передаются параметрами функций). Весьма вероятно, что спецификации открыты, но учитывая недостаточную распространенность C++11 и существование OpenMP это дело возможно есть только в vs2010.
Намного более интересна другая вещь — C++ Accelerated Massive Parallelism (C++ AMP). Это замена OpenCL, но с использованием C++, как и PPL — это просто библиотека, которая работает в рамках языка C++11. Это дело недавно демонстрировали в работе, синтаксис немного показали, будет доступно в следующей версии Visual Studio. Важно, что спецификация будет точно открытой.
Некоторые ссылки:
C++ Accelerated Massive Parallelism
+1
Спасибо, интересно. А самое интересное — это как AMP по производительности сравнительно с OpenCL.
0
Это конечно интересно посмотреть, но реально можно будет сравнить, когда до пользователей дойдет этот инструмент. А вообще рекомендую видео с Herb Sutter — там демонстрируется работа моделирования частиц, GFlops-ы на экран выводятся и на разном железе показано как это все работает, какое ускорение.
0
Дополнение по поводу c++ amp, случайно запостил недописанный комментарий. Ссылки:
C++ Accelerated Massive Parallelism
Microsoft brings GPU computing to C++ with C++ AMP (есть слайды)
На channel9 можно еще видео по С++ AMP найти.
C++ Accelerated Massive Parallelism
Microsoft brings GPU computing to C++ with C++ AMP (есть слайды)
На channel9 можно еще видео по С++ AMP найти.
0
Доклад (видео) по C++ AMP с демонстрацией приложения:
Herb Sutter: Heterogeneous Computing and C++ AMP
Herb Sutter: Heterogeneous Computing and C++ AMP
0
0
Sign up to leave a comment.
ArBB, Cilk+, OpenMP, OpenCL, TBB — День Знаний или День Выборов