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

Энтузиасты создают открытый аналог 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 в примерах» стала доступна на русском языке

На русский язык переведена книга Джейсона Сандерса и Эдварда Кэндрота «Технология CUDA в примерах: введение в программирование графических процессоров» с предисловием Джека Донгарра.

Книга написана двумя старшими членами команды по разработке программной платформы CUDА. Новая технология представлена в ней с точки зрения программиста. Авторы рассматривают все аспекты разработки на CUDA, иллюстрируя изложение работающими примерами. После краткого введения в саму платформу и архитектуру CUDA, а также беглого обзора языка CUDA С, начинается подробное обсуждение различных функциональных возможностей CUDA и связанных с ними компромиссов. Вы узнаете, когда следует использовать то или иное средство и как писать программы, демонстрирующую поистине выдающуюся производительность.

Издание предназначено для программистов, а также будет полезно инженерам, научным работникам и студентам вузов.

Уже в продаже.

Бесплатные инструменты для разработчиков от NVIDIA

Компания обновила свои инструменты для разработки и отладки приложений, попутно сделав Parallel Nsight полностью бесплатным.

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

Новая версия 1.5.1 набора инструментов разработки и отладки графических и GPGPU-приложений в среде Microsoft Visual Studio Parallel Nsight в сравнении с предыдущим релизом обзавелась поддержкой последних графических процессоров GeForce 400/500 серий, совместимостью с CUDA Toolkit 3.2, повышенной стабильностью работы в системе с несколькими графическими процессорами, поддержкой предварительно скомпилированных шейдеров DirectX; также был исправлен ряд ошибок и улучшено быстродействие в целом.

Но главным подарком разработчикам, в прямом смысле слова, стал перевод профессиональной редакции Parallel Nsight в бесплатный продукт. Экономия вышла весьма значительной, раньше за одно рабочее место пришлось бы заплатить до USD 349. Так что все желающие поразить мир с помощью технологий NVIDIA и технологий в целом могут регистрироваться на сайте NVIDIA для разработчиков и загрузить дистрибутив и всё необходимое для него. Предварительно рекомендуется ознакомиться с системными требованиями.

Вторым обновлённым инструментом стал NVIDIA Direct3D SDK. Его новая версия 10.6 содержит обновлённые примеры реализации тесселляции с помощью процедурной геометрии в Direct3D 9 и 10, обновлена до последней версии Microsoft DirectX SDK, все примеры и инструменты переделаны под среду Microsoft Visual Studio 2008. Хотя SDK ориентирован на работу с Direct3D 10, в то время как уже больше года доступен Direct3D 11, в котором та же тесселляция реализована «штатно», он всё еще может быть интересным для разработчиков, ведь пока что говорить о поголовном оснащении аудитории оборудованием и программной поддержкой DX11 преждевременно. Загрузить последнюю версию NVIDIA Direct3D SDK можно с сайта для разработчиков (~360 Мб).

Третьим обновлённым продуктом стал плагин NVIDIA Debug Manager для Android NDK, призванный помочь в написании и отладке приложений для мобильной платформы Tegra-Android в среде Eclipse. Новая версия плагина поддерживает последние версии Android Development Tools и Android NDK 5. Загрузить дистрибутив можно с сайта компании (~5 Мб), посвящённого платформе Tegra, но для получения возможности отладки Android-приложений в привычной среде разработки в Windows, Linux или MacOS придётся совершить ряд нетривиальных действий.

Будем надеяться, что бесплатные инструменты и примеры помогут разработчикам создать новые интересные программы и игры для раскрытия мощности графических процессоров в целом и продуктов NVIDIA — в частности.

Релиз CUDA Toolkit 3.2

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

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

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

CUDA Toolkit 3.2 RC2

Вторая предварительная версия CUDA Toolkit 3.2 и новые бета-драйверы для него.

NVIDIA продолжает открытое тестирование следующей версии API CUDA и набора средств разработки для него. Второй кандидат на релиз исправляет некоторые ошибки в поддержке архитектуры Fermi и улучшает совместимость с компилятором Intel в Linux. Загрузить инструменты разработки и документацию можно со специальной страницы сайта NVIDIA для разработчиков.

Одновременно NVIDIA обновила и драйверы с предварительной поддержкой CUDA 3.2 для всех основных платформ:

Релиз 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 Мб). Будем надеяться, что игроделы будут ей следовать, и мы увидим в будущем больше игр с корректно работающим стереорежимом.

CUDA Toolkit 3.2 в свободном доступе

Плюс новые экспериментальные драйверы.

NVIDIA открыла свободный доступ к анонсированному на этой неделе CUDA Toolkit 3.2. С сайта компании для разработчиков можно загрузить полный комплект средств разработки и документации для новой версии CUDA без необходимости в регистрации. Там же опубликованы драйверы для разработчиков с поддержкой CUDA 3.2: 260.61 для Windows, 260.24 для Linux и 3.2.8 для MacOS. К сожалению, новая версия 1.5 Parallel Nsight с поддержкой Microsoft Visual Studio 2010 пока остается под регистрацией.

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 вы можете на официальной странице.

Релиз 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 3.0 по программированию для Fermi

NVIDIA обновила предварительную документацию CUDA 3.0.

В конце прошлого года NVIDIA выпустила бета-версию CUDA SDK 3.0 с предварительной поддержкой Fermi. Однако, большинству CUDA-программистов воспользоваться этой самой предварительной поддержкой оказалось затруднительно — комплектная документация относилась в основном к предыдущей версии CUDA 2.3. И вот теперь на сайте NVIDIA для разработчиков были опубликованы три новых документа, содержащие сведения о архитектуре Fermi, характеристиках Compute Capability 2.0 устройств в целом и программировании на CUDA для них:

Сам CUDA 3.0 SDK и отладочные драйверы можно загрузить с форума NVIDIA для разработчиков.

Причины успеха 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 её уже будут ждать приложения и заказы — многие ли могут похвастаться тем же?