Накопилось сразу много новостей, мимо которых нельзя пройти мимо.
OpenCL
OpenCL tools & compilers
Последние дни оказались богаты на всякие штуки для OpenCL:
- OpenCL Compiler tools
- Небольшая библиотека, позволяющая удобно компилировать OpenCL kernels заранее, сохраняя результат (можно - шифрованый). Цель - поэкономить на времени компиляции и на том, что kernel находится где-то внутри программы в исходных текстах.
Несколько смазывает впечатление то, что библиотека распространяется под GPL3, т.е. цель "спрятать kernel" под такой лицензией, очевидно, не может быть достигнута т.к. использующий библиотеку варез обязан тоже быть под GPL3+
- Portable OpenCL
- Реализация OpenCL (для CPU) на базе LLVM. OpenSource, BSD-style license.
Не смотрел, но идея мне нравится.
- libclc
- Реализация OpenCL для CPU в виде библиотеки, тоже поверх LLVM/Clang, хотя поминается и PTC
Анонсирую исключительно до кучи, на настоящий момент проект фактически пустой, но вдруг там что-то разовьется со временем?
Intel OpenCL 1.5: AVX, отладчик, но плохая производительность
Пощупал вышедший вчера Intel OpenCL SDK 1.5.
Заявленные новые фишки:
- Поддержка AVX-векторизации (т.е. векторов в 256 бит)
- Отладчик
- Отладчик
-
Отладчик - работает. Пошаговая отладка, просмотр значений переменных, все отлично. С каким конкретно потоком работать - задается до запуска программы.
Несколько неудобно то, что путь до файла с исходными текстами передается в флагах компиляции.
NVidia OpenCL 1.1
NVidia в рассылке для девелоперов сообщает нам, что в драйверах начиная с 280.13 поддерживается OpenCL 1.1
Я пощупал драйвера 280.18 для Win7/x64, и так оно и оказалось.
Проверил все примеры из AMD APP SDK, существенная часть которых раньше не работала с NVidia т.к. требовала OpenCL 1.1. Ситуация стала лучше, хотя и не идеальной:
- Два примера должны бы работать, но не работают по причине разницы синтаксиса:
- FluidSimulation2D ломается c диагностикой "не могу преобразовать вектора разных размеров" на конструкции вида int8 = unsigned + int8.
- GlobalMemoryBandwidth ломается на вызове "overloadable" функции native_divide()
- Еще три примера ломаются т.к. NVidia не поддерживает ряд расширений (что вполне ожидаемо):
- DeviceFission - нет соответствующего расширения (хотя на Fermi его хотелось бы иметь, аппаратура то умеет)
- SimpleDX10 - нет интеграции с DX10
- TransferOverlap - работает, если не попросить для памяти флаг CL_MEM_USE_PERSISTENT_MEM_AMD
Свежие GPGPU tools
В последние дни оба основных разработчика GPU обновили свои GPGPU toolkits до CUDA 4.0 RC2 и APP SDK 2.4, соответственно.
Новости одной строкой
Вдруг накопилось много мелких, но довольно существенных новостей, которые анонсирую одним текстом:
- Parallel Nsight Pro стал бесплатным
-
Pro-версия Parallel Nsight теперь раздается бесплатно (раньше - только версия Standard). Берут отсюда, требуется регистрация.
Профессиональная версия отличается наличием отладчика.
- Поддержка OpenCL включена в ATI/AMD Catalyst 11.x
-
До версии Catalyst 10.10, для поддержки OpenCL нужны были девелоперские драйвера, которые входили в Stream SDK. Начиная с 10.10 - появилась специальная версия с включенным OpenCL, которая ставилась как обычные драйвера, но пользователю нужно было специально скачивать эту версию.
В 11.1 (11.0 я пропустил и потому не знаю) все наоборот - в стандартный драйвер поддержка OpenCL входит, но если вам оно не надо, то можно скачать обрезанную версию на 20 мегабайт поменьше.
Другими словами, пользователя можно просить "поставь стандартные драйвера 11.x и будет тебе счастье.
- AMD выпустил готовый комплект преподавателя для курса по OpenCL
- AMD/ATI предлагает преподавателям готовый комплект из 13 презентаций и трех примеров кода (два примера - микроскопические, один - NBody), предназначенный для чтения лекций в университетах.
Про качество мне судить трудно, но посмотреть всяко имеет смысл.
Intel: OpenCL для CPU (alpha)
Inel выпустил альфа-версию OpenCL для CPU.
Целиком поддерживаю это начинание. Конечно, у AMD такое уже есть полтора года как, но на Intel несколько больше надежды, что это станет стандартной частью системы или, как минимум, удобным redistributable (а не частью "драйвера видеокарты", притом не общего, а отдельной версии). А для всяких GPGPU-решений появится удобный fallback на CPU.
Кроме того, c OpenCL для CPU есть гораздо больше надежды на авто-векторизацию: стандартные векторные типы и все такое. Ну и ряд других вкусностей, таких как анализ OpenCL-кода с помощью VTune (анонсировано, но я не пробовал).
Ссылки:
- стартовая страница продукта
- Release Notes
- страница download
- видеопрезентация с SIGGRAPH10 (и часть два).
Ну и на первой странице из списка есть ссылки на много других материалов.
Я помацал это дело руками минут 15 и остался в некотором недоумении.
ATI Catalyst & OpenCL
Начиная с Catalyst 10.10, пользователям доступна расширенная версия драйверов видеокарт ATI: "Accelerated Parallel Processing (APP) Technology Edition".
Теоретически это означает, что для запуска OpenCL-кода на пользовательской машине пользователю больше не нужно качать и ставить Stream SDK.
В настоящий момент у меня ATI-карты в машине нет, но и без нее драйвер можно поставить, при этом поставится только рантайм от Stream SDK, которого достаточно для получения OpenCL на CPU. Работает. Есть надежда, что с видеокартой тоже будет работать.
Немножко не так удобно, как у NVidia, где OpenCL входит во все драйвера уже довольно давно, но раздавать клиентам с ATI-картами всякие программы стало гораздо удобнее.
OpenCL 1.1
Новостные сайты массово написали, что Khronos Group выпустила спецификации OpenCL 1.1 (вот, скажем, HardOCP).
Удивительно, но на сайте Khronos об этом знаменательном событи не написано (хотя вот на HardOCP лежит 3-страничный пресс-релиз). Ну да новость сегодняшняя, сначала пресс-релиз, потом сайт...уже написано, за час справились. К сожалению, удобного содержательного диффа не обнаружилось (кроме пресс-релиза), чтобы понять разницу - нужно 300+ страниц спецификации честно прочитать.
Из пресс-релиза, естественно, ничего существенного понять нельзя.
Но есть в этом и содержательная сторона: NVidia моментально прислала письмо, что у них есть Conformance Candidate (в письме, впрочем, в некоторых местах написано что OpenCL 1.0, ну так торопились), который доступен на девелоперском сайте.
И действительно, доступен. В числе прочего, там лежат виндовые драйвера версии 258.19, которые, как я понимаю, новее и текущих доступных на оф-сайте бета-драйверов 257.15 и прилагавшихся к свежему Нексусу 257.19.
А значит можно потестироваться на предмет, исправились ли странности бета-драйверов 257.15.
OpenCL: ATI + NVidia, текущее состояние дел (windows)
По случаю выхода , описанное в несколько устарело. Теперь все иначе, по меньшей мере под Windows.
OpenCL.DLL устанавливается и драйверами NVidia (поверх имеющегося) и ATI SDK (только если в системе такого нет? если в системе есть более старый?) . При этом тот вариант, который ставят драйвера NVidia 196.xx - хороший, позволяющий работать и с NVidia и с ATI картами без каких-то избыточных телодвижений, а вот ATI-шный в двухкарточном варианте у меня вызывал непонятные проблемы.
AMD/ATI Stream SDK 2.0
Вышел (релиз).
Лично меня интересует только OpenCL, поэтому и смотрел я исключительно с этих позиций:
ATI HD4xxx и OpenCL
Читал , много думал.
Вычитал :
- The HD4XXX series was not designed for OpenCL whereas the HD5XXX series was.
OpenCL, NVidia, ATI и все все все....
Вопрос о совместимости OpenCL между железом разных производителей - является необычайно волнительным. Понятно, что задумывалось все совместимым, но насколько это получилось и сколько граблей разложено на пути к этой совместимости - отдельный интересный вопрос, который перешел в практическую плоскость сразу после выпуска ATI Stream SDK 2.0 beta 4, где появилась поддержка OpenCL на графическом адаптере. До того поддержка OpenCL на PC была только у NVidia и вопрос был сугубо теоретическим.
Как только мне в руки попал Radeon HD5870, так сразу захотелось тему исследовать... и в первом приближении я ее изучил.
AMD и OpenCL
Последняя бета-версия Stream SDK поддерживает OpenCL для GPU. Вот, собственно, весь список нововведений:
- First beta release of ATI Stream SDK with OpenCL GPU support.
- ATI Stream SDK v2.0 OpenCL is certified OpenCL 1.0 conformant by Khronos1.
- Added Microsoft Windows 7 support.
- Added native Microsoft Windows 64-bit support.
- Float comparisons in kernels no longer produce a runtime error.
- Various other issues from previous v2.0 beta releases have been resolved.
Берут тут:
Новости OpenCL
С некоторым опозданием, но:
- Mac OS X 10.6
МанулSnow Leopard - Вышла, OpenCL входит в поставку, работает, хотя местами и странно (не для всех примеров удалось собрать Release-вариант, для некоторых собирается только отладочный.
Правда не безумно быстро, я смотрел на пример NBody: на старом (двухлетнем) MacBook Pro с Geforce 8600M он медленнее, чем на CPU, а поддерживаемая конфигурация GPU+CPU медленнее, чем CPU отдельно, вероятно в силу пересылок. На более новом железе выигрыш должен быть больше, надо бы собрать на пробу бокс с ATI 4870
Приятно то, что и без графического акселератора оно вроде бы работает. - ATI Stream SDK 2.0 Beta2
-
: First public beta release of ATI Stream SDK with OpenCL CPU support.
The OpenCL 1.0 conformance logs from this release have been submitted to the Khronos OpenCL Working Group.
Поддержаны Windows и Linux, про MacOS см. выше.