Статьи

OpenACC: Вычисления на GPU с помощью простых директив.

Tags: 

В ноябре 2011 года был анонсирован стандарт OpenACC совместное детище суперкомпьютерных гигантов CRAY, CAPS и PGI и лидера рынка графических процессоров NVIDIA. Сам стандарт призван значительно упростить работу программиста и создать высокоуровневую прослойку над уже известными CUDA и OpenCL.

Стоит отметить, что до недавнего времени стандарт не поддерживался в полной мере ни одним компилятором, но даже то, что уже есть, впечатляет своей простотой и результативностью. Теперь написание программы, выполняемой параллельно на тысячах ядер современных GPU не требует почти никаких усилий и практически полностью перекладывается на компилятор. Все что нужно сделать расставить директивы по коду на манер OpenMP. Набор директив достаточно велик (полную спецификацию можно посмотреть по ссылке) и за один день его весь не освоить, но простейшую программу можно сделать за 5 минут, особенно если есть однопоточная реализация. Отсюда и вытекает основная идея спрятать от разработчика почти все детали архитектуры, освободить его от тонкостей (а ведь лет шесть назад до появления CUDA использовать GPU могли только знатоки шейдеров) и оставить время на работу над научным или пользовательским проектом.

Как и его прародители (PGI accelerator и CAPS HMPP) OpenACC поддерживает языки С и Fortran. Итак, все директивы в С-версии стандарта начинаются как обычно с #pragma, далее ставится спецификатор acc и одна из основных директив, дополненная одним, или несколькими условиями. Чаще всего используются 3 директивы: parallel, kernels и data.

Как использовать:

Рассмотрим на простом примере как можно ускорить перемножение матриц:

Intel OpenCL 1.5: AVX, отладчик, но плохая производительность

Tags: 

Пощупал вышедший вчера Intel OpenCL SDK 1.5.

Заявленные новые фишки:

  • Поддержка AVX-векторизации (т.е. векторов в 256 бит)
  • Отладчик
Имею сказать:
Отладчик
Отладчик - работает. Пошаговая отладка, просмотр значений переменных, все отлично. С каким конкретно потоком работать - задается до запуска программы.

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

Параллельное программирование на современных видеокартах - слайды

Tags: 

Выкладываю слайды со встречи, проходившей вчера на физфаке МГУ.

По сравнению с тем, что было показано в аудитории, стало чуть больше слайдов и добавлен небольшой список литературы (учебные курсы и статьи, которые упоминались с голоса)

Полная презентация в PDF-формате доступна тут: Parallel-Programming-On-GPU-29092010-PhysDept-MSU.pdf

Алгоритмы поиска на графическом процессоре с помощью технологии NVidia CUDA

Tags: 

В данной статье рассмотрим бинарный поиск и связанную с ним задачу сортировки. Попытаемся сделать теоретическую оценку алгоритмов и провести практические тесты.

Введение

Данная статья является продолжением темы CUDA search . В этой теме рассматривался простейший линейный поиск на графическом процессоре с помощью технологии nVidia CUDA. В наихудшем случае т.е. когда искомый элемент массива был последним, алгоритм на GPU превзошел свой аналог на CPU почти на 40%. Количество элементов в массиве было равно количеству процессоров. Такие условия задачи достаточно хороши для GPU. Однако, как быть в других условиях? Как с ними справиться GPU? Подходит ли он для других алгоритмов? Что ж, попытаемся ответить на эти вопросы.

OpenCL: ATI + NVidia, текущее состояние дел (windows)

Tags: 

По случаю выхода ATI Stream SDK 2.01, описанное в предыдущей статье несколько устарело. Теперь все иначе, по меньшей мере под Windows.

OpenCL.DLL устанавливается и драйверами NVidia (поверх имеющегося) и ATI SDK (только если в системе такого нет? если в системе есть более старый?) . При этом тот вариант, который ставят драйвера NVidia 196.xx - хороший, позволяющий работать и с NVidia и с ATI картами без каких-то избыточных телодвижений, а вот ATI-шный в двухкарточном варианте у меня вызывал непонятные проблемы.

NVdia Nexus: работа из виртуальной машины

Tags: 

После успеха с запуском NVidia Nexus на двух машинах, я загорелся сделать это на одной.

Стандартные системные требования в этом случае простые: две G92/G200 видеокарты, к одной подключается монитор (мониторы, если их несколько), вторая настраивается как "ускоритель PhysX" (без подключенного монитора) и все должно работать.

У меня в рабочей машине - две видеокарты, но одна из них NVidia, а вторая - ATI и сделать так, как написано выше - невозможно, если отключить от NVidia-карты мониторы, то она пропадает из системы, запустить CUDA-программу даже локально (без Nexus) не выходит. Вынимать ATI (менять на NVidia) не хотелось, для третьей двухслотовой карты места в машине нет, покупать еще одну видеокарту хотелось еще меньше.

После успеха с запуском NVidia Nexus на двух машинах, я загорелся сделать это на одной.

Стандартные системные требования в этом случае простые: две G92/G200 видеокарты, к одной подключается монитор (мониторы, если их несколько), вторая настраивается как "ускоритель PhysX" (без подключенного монитора) и все должно работать.

У меня в рабочей машине - две видеокарты, но одна из них NVidia, а вторая - ATI и сделать так, как написано выше - невозможно, если отключить от NVidia-карты мониторы, то она пропадает из системы, запустить CUDA-программу даже локально (без Nexus) не выходит. Вынимать ATI (менять на NVidia) не хотелось, для третьей двухслотовой карты места в машине нет, покупать еще одну видеокарту хотелось еще меньше.

NVidia Nexus: нулевые шаги

Tags: 

UPDATE: от большинства проблем удалось избавиться просто переустановкой NVidia Nexus на обеих машинах. Secure connection заработала, синхронизация - преимущественно заработала, хотя бывают необъяснимые сбои (и тогда надо удалить синхронизируемые файлы с той машины, на которую копируем т.е. ту, где Nexus Monitor).

Update2 И с виртуальной машиной тоже получилось, поэтому проще поменять полностью текст, чем вносить еще поправки:

  1. Если не работает синхронизация или Secure connection (при стандартных настройках, когда вы ничего не меняли) - попробуйте переставить Nexus Monitor, мне помогло.
  2. Иногда (закономерность понять не удалось) синхронизация файлов не может синхронизироваться. Тогда нужно вручную удалить синхронизируемые файлы с той машины, где запущен Nexus Monitor (на Win7/Vista это %user profile%/AppData/Roaming/Nvidia corporation/Nexus/Monitor/Mirror/)

Еще об NVidia и ATI в одной машине

Tags: 

Как ни печально, но поведение драйверов NVidia ничем не лучше драйверов ATI: чтобы CUDA/OpenCL работали, к какой-то видеокарте NVidia должен быть подключен какой-то из активных дисплеев.

Таким образом, идея потестировать NVidia Nexus на одной машине с двумя видеокартами, одна ATI и одна NVidia, полностью провалилась: если к Geforce не подключать монитор, то с точки зрения CUDA/NEXUS этой карты не существует. Вот если бы у меня было две карты NVidia, разговор был бы другой. Еще одна карта NVidia у меня есть, но слоты кончились....

OpenCL, NVidia, ATI и все все все....

Вопрос о совместимости OpenCL между железом разных производителей - является необычайно волнительным. Понятно, что задумывалось все совместимым, но насколько это получилось и сколько граблей разложено на пути к этой совместимости - отдельный интересный вопрос, который перешел в практическую плоскость сразу после выпуска ATI Stream SDK 2.0 beta 4, где появилась поддержка OpenCL на графическом адаптере. До того поддержка OpenCL на PC была только у NVidia и вопрос был сугубо теоретическим.

Как только мне в руки попал Radeon HD5870, так сразу захотелось тему исследовать... и в первом приближении я ее изучил.

content classify: 

Tags: 

SGEMM/DGEMM на видеокарте и CPU, серия 7: NVidia GTX280

Tags: 

Как я уже писал в прошлый раз, становится какой-то дурной традицией переделывать тест умножения матриц каждые несколько месяцев.

В этот раз причиной для тестов стало появление у меня в доступности видеокарты NVidia GTX280, что позволило протестировать два момента:

  • Производительность умножения матриц с одинарной точностью (SGEMM) на новом быстром оборудовании.
  • Производительность умножения матриц с двойной точностью (DGEMM).
И сравнить результаты с mainstream-поколением процессоров Intel (Penryn), к сожалению i7 в доступности у меня пока нет.

NVidia GTX 280, Tesla T10P

Tags: 

Как и обещали, публике предъявили новый чипсет и новые видеокарты на нем. Нас они интересуют не с точки зрения графики, а с точки зрения вычислений, так их и рассмотрим.

SGEMM на видеокарте и CPU, серия 6

Tags: 

Уже становится какой-то дурной традицией переделывать тест умножения матриц каждые несколько месяцев. Однако с прошлого забега случилось несколько событий:

Видеокарта с двойной точностью или AMD strikes back

Tags: 

Одна из наиболее неприятных проблем при расчетах на видеокартах — это поддержка только 32-битных чисел с плавающей точкой (single precision).

Несмотря на то, что все ожидали прорыва от NVidia (более того, это обещали к концу года), первой о поддержке FP64 объявила AMD/ATI, анонсировав FireStream 9170.

Вкратце:

  • поддержка FP64;
  • $1999 (MSRP);
  • 2 гигабайта памяти;
  • 500 GFLOP/s на одинарной точности, сколько на двойной - не пишут;
  • 150 ватт, PCIe 2.0, x16 ;

NVidia G92: совсем не то, что хотелось

Tags: 

Как многие уже знают, сегодня Nvidia анонсировала видеокарту GeForce 8800GT на новом чипсете G92.

То что анонсировано, сильно отличается от того, что прогнозировали весной, никакого терафлопа нету, новый чипсет медленнее и предыдущей топовой модели 8800Ultra и следующей за ней 8800GTX.

Умножение матриц, серия 5: вычисления на GPU - 2

Tags: 

Почему переделываем тесты?

Предыдущая моя статья на эту тему была написана в феврале 2007 года, сразу после выхода первой публичной бета-версии CUDA Toolkit/CUDA SDK. Представители NVidia предупреждали, что в бета-версии производительность не является оптимальной, к релизу она будет улучшена.

За прошедшие полгода, пока я занимался совсем другими вещами, были выпущены релизы:

  • NVidia CUDA: SDK и библиотеки CUBLAS/CUFFT v1.0;
  • NVidia CUDA Display Driver 162.xx (драйвер, собственно, транслирует псевдокод в реальные программы GPU);
  • RapidMind Platform версий 2.0.0, а затем и 2.0.1.

Интересно посмотреть, стала ли производительность лучше.

Pages

Subscribe to RSS - Статьи