Новости про GPGPU и программирование

Энтузиасты создают открытый аналог CUDA

Разработчик GitHub с ником jgbit открыл проект с открытым исходным кодом, который назвал VUDA.

Идея этого проекта заключается в реализации аналога API NVIDIA CUDA, простого интерфейса для GPU вычислений, в мире свободного ПО.

Vulkan API

Система VUDA работает поверх уже набравшего популярность графического API Vulkan, который обеспечивает доступ к аппаратному обеспечению на низком уровне. VUDA является библиотекой C++, что означает совместимость со всеми платформами, которые имеют компилятор C++ и поддерживают Vulkan.

Пример кода для VUDA

Пока проект находится на начальном этапе, но его потенциал трудно представить, особенно, учитывая открытую лицензию. На GitHub приведен простой пример использования библиотеки, который может стать хорошим началом для будущих разработок.

NVDIA обещает 10% прирост производительности CUDA благодаря LLVM

Разработчик микропроцессоров, компания NVIDIA, обновила CUDA библиотеку базовых классов для объектно-ориентированного GPGPU программирования, включив в неё для увеличения производительности низкоуровневую виртуальную машину — low level virtual machine (LLVM).

В прошлом году компания объявила о значительных изменениях в их проприетарном программном фреймворке CUDA, а несколько дней назад выпустила первую версию изменения, которое включает компилятор LLVM. По утверждению NVIDIA, LLVM обеспечит «постоянное 10% ускорение в производительности приложений».

Кроме того, что NVIDIA теперь восхваляет мощь LLVM компилятора, фирма также предлагает виртуальный профилировщик, который поможет программистам оптимизировать их код. Суть в том, что программирование для GPGPU в большинстве случаев требует значительных оптимизаций, чтобы выжать каждую последнюю каплю скорости из GPU.

Кроме LLVM компания расширила библиотеку обработки сигналов. Обычно самостоятельный цифровой сигнальный процессор используется исследователями для симуляции определённых нагрузок, но с растущей библиотекой обработки сигналов некоторые нагрузки могут быть запущены на графической платформе NVIDIA с включённым CUDA.

Но пока NVIDIA наслаждалась популярностью CUDA в исследовательском сообществе, на горизонте появился серьёзный конкурент в лице OpenCL — открытого языка GPGPU вычислений. Тем не менее, NVIDIA утверждает, что им абсолютно безразлично какой именно язык используют программисты, до тех пор, пока они используют их графические платформы, продвигая CUDA в качестве отличного способа улучшения продаж GPU продуктов компании.

Релиз CUDA Toolkit 3.2

Встречайте новую версию CUDA — официально.

После двухмесячного тестирования на кошечках программистах NVIDIA выпустила финальную версию пока что самого успешного GPGPU API CUDA 3.2. Об изменениях в новой версии CUDAуже писалось неоднократно, так что желающие опробовать её в деле могут сразу загрузить всё необходимое с сайта NVIDIA для разработчиков.

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

Релиз Parallel Nsight 1.5 и обновлённые руководства по стерео

Новая версия среды разработки графических и GPGPU-приложений.

NVIDIA выпустила версию 1.5 своего набора средств для разработки графических и GPGPU-приложений Parallel Nsight, ранее известного как Nexus. Новая версия поддерживает интеграцию в Microsoft Visual Studio 2010, совместима с проектами CUDA Toolkit 3.2, содержит обновлённый отладчик CUDA-программ с поддержкой новых видеокарт GeForce и Quadro на базе Fermi, полностью поддерживает Direct3D 11 и DirectCompute и содержит ряд других изменений. Загрузить дистрибутив комплекта можно с сайта NVIDIA для разработчиков по ссылкам ниже:

Системные требования:

  • Операционная система Windows Vista/7/2008
  • Двуядерный процессор с частотой от 1,6 ГГц
  • 2 Гб оперативной памяти
  • Две видеокарты на базе G92 (GeForce 9800/Quadro FX) или более нового графического процессора для локальной отладки, одна для удалённой.
  • Microsoft Visual Studio 2008 SP1 или новее
  • NET Framework 3.5
  • Инструментальный драйвер версии 260.93: для Windows 32-bit (~100 Мб), для Windows 64-bit (~140 Мб).

Для получения одной бесплатной лицензии на стандартную версию пакета требуется регистрация на специальном сайте. Расширенная лицензия (с дополнительными функциями, такими как визуальный анализатор производительности и удалённая отладка) стоит USD 349 на год.

Также NVIDIA обновила документацию для разработчиков игр по обеспечению совместимости с системами стереовидения NVIDIA 3D Vision (PDF, ~1 Мб) и 3D Vision Surround (PDF, ~2 Мб). Будем надеяться, что игроделы будут ей следовать, и мы увидим в будущем больше игр с корректно работающим стереорежимом.

NVIDIA выпустила новый CUDA Toolkit 3.1

Разработчики, использующие мощности GPU для ускорения приложений, могут скачать и использовать новую версию CUDA Toolkit, которая доступна для Windows, Mac OS и Linux.

Пакет CUDA Toolkit 3.1 включает следующие изменения и дополнения:

  • GPUDirect позволяет другим устройствам прямой доступ к памяти CUDA;
  • поддержка параллелизма в 16 потоков позволяет использовать одновременно до 16 различных ядер на графических процессорах архитектуры Fermi;
  • runtime-драйвер совместимости приложений позволяет универсально использовать драйверы CUDA API с CUDA C Runtime и математическими библиотеками с помощью буфера обмена и миграции;
  • добавлены новые возможности языка CUDA C/C++:
    • поддержка printf() в коде устройства;
    • поддержка функций указателя и рекурсии облегчит портирование многих существующих алгоритмов для Fermi GPU;
  • Unified Visual Profiler теперь поддерживает CUDA C/C++ и OpenCL, а так же включает поддержку трассировки CUDA драйверов API;
  • математические библиотеки увеличили производительность, в часности:
    • улучшенна производительность отдельных трансцендентных функций log, pow, erf, и gamma;
    • значительно улучшена производительность для двойной точность FFT при исполнении на архитектуре графических процессоров Fermi для 2^N преобразований;
    • потоковый API теперь поддерживается в CUBLAS для перекрытия операций копирования и вычисления;
    • оптимизированы CUFFT Real-to-complex (R2C) и complex-to-real (C2R) для 2^N размеров данных;
    • улучшена производительность для GEMV и SYMV подпрограмм в CUBLAS;
    • оптимизирована реализация вычислений с двойной точностью по принципу разделения и взаимного использования программ для архитектуры Fermi;
  • новые и обновленные примеры SDK кода демонстрирует использование:
    • функции указателей в ядрах CUDA C/C++;
    • буфера обмена OpenCL/Direct3D;
    • Hidden Markov Model в OpenCL;
    • пример Microsoft Excel GPGPU, показывающий как запускать функции Excel на GPU.

Скачать новую версию CUDA Toolkit вы можете на официальной странице.

Окончательные спецификации OpenCL 1.1

Один из лидеров в мире Open Source программирования, Khronos Group сегодня опубликовал спецификации OpenCL 1.1 — первое крупное обновление OpenCL, распространяемое бесплатно.

Версия OpenCL 1.1 добавляет значительные функциональные возможности для расширения возможностей параллельного программирования и привносит в создаваемые приложения больше гибкости, функциональности и производительности, в том числе засчет:

  • новые типы данных, в том числе 3-х компонентные вектора и дополнительные графические форматы;
  • обработка команд из нескольких хостов и использование буфера между несколькими устройствами;
  • операции по отдельным частям буфера в том числе чтение, запись и копирование 1D, 2D или 3D прямоугольных областей;
  • расширенное использование событий и систем управления командами;
  • дополнительные OpenCL C встроенные функции, такие как: integer clamp, shuffle и asynchronous strided copies;
  • улучшенная совместимость с OpenGL на основе эффективного обмена изображениями и буферами для связи OpenCL и OpenGL событий.

Напомню, в рабочую группу OpenCL входят такие известные компании, как: AMD, Apple, Blizzard Activision, Electronic Arts, Ericsson, IBM, Intel, Nokia, S3 Graphics, Sony, STMicroelectronics, Symbian, Texas Instruments и, конечно же, NVIDIA.

Релиз CUDA Toolkit 3.0

К выходу Fermi — новая версия инструментов CUDA для разработчиков.

В CUDA 3.0 сделаны значительные изменения:

  • поддержка новой архитектуры Fermi;
  • поддержка классов C++;
  • взаимодействие CUDA и OpenCL с Direct3D 9/10/11 и OpenGL;
  • возможность использования в одном приложении и CUDA Runtime, и CUDA Driver API.
  • многократное повышение производительности при отладке в cuda-dbg и аппаратное ускорение отладки для CUDA Driver API на видеокартах с архитектурой Fermi;
  • утилита CUDA Memory Checker для поиска ошибок выравнивания данных и переполнения памяти;
  • ряд важных улучшений в OpenCL.

Загрузить CUDA SDK, документацию и отладочные драйверы для Windows, Linux и MacOS можно со специальной страницы сайта NVIDIA для разработчиков.

Swan — преобразователь программ CUDA в OpenCL

Инструмент для собирающихся переводить имеющиеся GPGPU программы с CUDA на OpenCL.

Консольное приложение Swan позволяет в среде Linux автоматически преобразовать исходный код ядра CUDA-программ в ядро OpenCL. Программа заменяет вызовы функций и создаёт новые точки входа. Также предлагается собственный «абстрактный» API, позволяющий создавать программы, равно легко конвертируемые с помощью Swan в CUDA или OpenCL.

Конечно, программа имеет множество ограничений, пока что не поддерживается работа с несколькими устройствами и конвертация для выполнения CUDA/OpenCL кода на CPU, как и использование возможностей C++ в исходном тексте CUDA-программы. Будем надеяться, что подобные экономящие время инструменты не останутся без развития, благо программа выпущена под GPL и исходный код доступен. Загрузить утилиту можно с официального сайта.

Причины успеха CUDA от Linux Magazine

Редактор издания «Linux Magazine» Douglas Eadline высказался о причинах успеха технологии NVIDIA CUDA.

Ведущий раздела высокопроизводительных вычислений в своей авторской колонке привёл некоторую статистику NVIDIA по использованию CUDA и её популярности в целом:

  • более 2700 упоминаний CUDA в Google Scholar;
  • более 800 видеоупоминаний CUDA на YouTube;
  • более 670 программ на CUDA Zone;
  • более 350 участников CUDA Superhero Challenge;
  • более 300 университетских курсов по изучению модели параллельного программирования CUDA;

Всё это явно выделяет CUDA среди прочих HPC технологий программирования, включая MPI, OpenMP, OpenCL и будущий Ct от Intel. Douglas Eadline попытался разобраться в причинах такого успеха CUDA.

Средства разработки CUDA бесплатны.

Хотя CUDA и не является open-source, CUDA Toolkit может загрузить и свободно использовать любой желающий с сайта NVIDIA. Даже не требуется регистрация, фактор, который нельзя недооценивать, поскольку традиционно компании-разработчики бесплатных инструментов заставляют проходить сложные регистрации с неизбежной дальнейшей обработкой их пользователей отделами продаж.

CUDA не вносит капитальных изменений в язык C.

Создатели CUDA не стали изобретать новый язык программирования. Любой владеющий C может сходу приступить к изучению и использованию CUDA.

Возможность постепенного перехода на CUDA.

Программист может постепенно добавлять функции CUDA в программу, написанную на C. Не требуется коренной переделки программ для извлечения выгоды из GPU-ускорения.

Низкий порог вхождения.

Обычно нелегко привлечь внимание к новой технологии, когда её использование требует значительных инвестиций в оборудование. В случае CUDA достаточно одной видеокарты на базе NVIDIA для начала работы. Можно проверить эффект на плате начального уровня и лишь потом решать, инвестировать ли в более мощное оборудование.

Поддержка и продвижение CUDA со стороны NVIDIA.

Многие кластерные технологии вроде MPI имеют многие схожие факторы и демонстрируют неплохой рост, но за ними не стоит компании, которая столько вкладывала бы в их продвижение. Для того же MPI просто нет аналогов центра компетенции уровня CUDA Center of Excellence Program.

Успех CUDA должен служить образцом действий для прочих разработчиков HPC технологий. Низкий порог вхождения — ключ к продвижению, а если вы предоставляете свободу разработки, ждать внедрений долго не придётся. К выходу Fermi её уже будут ждать приложения и заказы — многие ли могут похвастаться тем же?