Новости про CUDA и GPGPU

NVIDIA CUDA может работать на любом GPU благодаря SCALE

У индустрии появилась очередная попытка сломать доминирование NVIDIA в вопросах использования расчётах на GPU. Как известно, отрасль захватила CUDA, которая жёстка связана с оборудованием NVIDIA. Ранее уже осуществлялись попытки проведения CUDA-расчётов на GPU AMD. Эта технология получила названием ZLUDA, но теперь у неё есть конкурент под названием SCALE.

Исполнительный директор Spectral Compute Михаэль Зондергаард выражает уверенность, что GPU должны использовать открытое окружение, как современные CPU, при этом все платформы должны быть взаимосвязаны. Его разработка SCALE выступает мостом, заполняя совместимость между CUDA и другими производителями аппаратного обеспечения, расширяя лимиты существующих рынков. По словам Михаэля, SCALE — это набор инструментов GPGPU, подобный NVIDIA CUDA, использующий бинарники не-NVIDIA GPU для компиляции CUDA, исключая необходимость в слое трансляции.

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

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

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

oclHashcat — взломщик паролей с использованием GPU

Забытый пароль вскоре может перестать быть проблемой. 

Развитие GPGPU-технологий осложнило жизнь системным администраторам и простым пользователям, заботящимся о защите своих данных: вскрытие пароля нормальной длины и сложности путём перебора, ранее считавшееся доступным лишь спецслужбам и группам хакеров, стало возможным почти для каждого — достаточно «натравить» на пароль современную видеокарту на базе логики AMD и NVIDIA. Программа oclHashcat, в отличие от специализированных GPGPU-утилит для вскрытия паролей баз данных и архивов RAR, является настоящим комбайном, умея подбирать хэши MD5, SHA1, NTLM, кэшированных паролей домена и паролей баз данных MySQL. Поддерживаются видеокарты как на базе AMD (OpenCL, требуется Catalyst 10.12 и ATI Stream SDK), так и NVIDIA (CUDA, требуется драйвер 260.хх и новее), программа работает в Windows и Linux.

Производительность перебора для современных карт составляет:

  • GeForce GTX 480: 1041 M c/s
  • GeForce GTX 580: 1217 M c/s
  • Radeon HD 5870: 1211 M c/s
  • Radeon HD 6970: 1575 M c/s

Интересно, что программа умеет использовать и несколько GPU одновременно в системах SLI/Crossfire (до 16, по заявлениям авторов). Будучи основанной на коде Hashcat, к программе могут подключаться словари аналогичного формата для дополнительного ускорения перебора. Лишь сложный консольный интерфейс отпугнёт желающих восстановить свой забытый пароль или узнать чужой.

Релиз CUDA Toolkit 3.2

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

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

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

CPU против GPU: новый раунд

Плюс прогноз применимости GPGPU для суперкомпьютеров.

В этом году IBM публиковала два исследования, в которых сравнивалась производительность CPU и GPU в математических задачах. В первом случае центральный процессор IBM Power 7 опередил GeForce GTX 285, причём двухпроцессорная система на базе Intel Xeon показала лишь чуть меньший результат, во втором испытании модуль NVIDIA Tesla 2050 опередил всех соперников, но разрыв в производительности составил чуть более двухкратного для Power 7 и не дотянул до четырёхкратного над Xeon. И вот появилось новое исследование, от университетов Оксфорда и Ворвика, Великобритания, в котором системам на базе Xeon были противопоставлены модули Tesla разных поколений и пара «бытовых» видеокарт.

Хотя для исполнения на CUDA использованный тест NAS LU пришлось портировать с Fortran на C, результат представляет немалый интерес. Всего один четырёхъядерный процессор Xeon X5550, работающий на частоте 2,66 ГГц, смог показать лучший результат, чем GeForce 9800 GT с теоретической производительностью 500 GFLOPS. GeForce 8400 GS из-за ограниченного буфера памяти (256 Мб) смогла выполнить лишь один этап из трёх и показала ужасную производительность. Модули Tesla оправдали свою репутацию, но отрыв в производительности не превышал 10-кратного. Любопытно, что включение режима защиты памяти ECC на Tesla 2050 стоило ей 20 % производительности, в том числе из-за потери 16 % объема видеопамяти на контрольные суммы.

Британские учёные не могли хотя бы частично не подтвердить свою репутацию. На основе полученных данных они попытались спрогнозировать производительность суперкомпьютерных систем на базе Tesla, сравнив их предсказанную производительность с хорошо себя зарекомендовавшими системами BlueGene /P от IBM.

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

Глава NVIDIA поделился видением будущего GPGPU-технологий

CUDA останется основным API, поддерживаемым NVIDIA.

Глава NVIDIA Jen-Hsun Huang в интервью британскому отделению издания ZDNet ответил на вопросы о будущем GPGPU-технологий. Мы приводим выдержку высказанных им суждений:

  • NVIDIA активно поддерживает открытый стандарт OpenCL, тем более что Khronos Group в настоящее время возглавляет сотрудник компании. NVIDIA первой реализовала поддержку OpenCL, причём она всё еще считается лучшей в отрасли, и будет поддерживать OpenCL и дальше.
  • Технологии меняются очень быстро, производительность увеличивается четырёхкратно каждые два года, новые функции внедряются постоянно. В силу этого NVIDIA концентрируется на CUDA, не желая немедленно «выкатывать» новый общий стандарт. Тем более, что OpenCL такого внимания и не требует — там есть множество людей, в том числе из IBM, AMD, Intel, и NVIDIA не нужно тащить всё в одиночку.
  • CUDA получил большее распространение, чем OpenCL, в силу большей истории и инвестиций в разработку, большего числа работающих с ним людей, большего качества инструментов разработки, компилятора, надёжности рабочей среды.
  • NVIDIA не пытается каким-то способом полностью заменить CPU или нарушить их работу. Операционные системы и офисные приложения будут продолжать работать на CPU — но будет возможно прибегнуть к силе GPU для того, чтобы «проломить» определённые задачи.
  • Будущее за гетерогенной средой, в которой встретятся нарастившие мощь векторной обработки данных CPU и GPU с параллельной обработкой данных, научившиеся решать более сложные типы задач. В такой среде все приложения будут работать невероятно быстро.
  • Сейчас ситуация с приложениями такая, что они не работают, не работают, а потом раз — и работают очень быстро. Технологии вроде виртуальной памяти и синхронизации данных в памяти облегчат программирование. В целом будет лучше, если приложения будут работать сразу, пусть и лишь в три раза быстрее. Затем можно будет заниматься оптимизацией.
  • Сейчас графические процессоры лучше всего работают с одним приложением, так устроен их конвейер, следствие stateful-подхода. К примеру, одна большая программа исполняется на многих GPU. В будущем будет иная ситуация: множество приложений, использующих один GPU. NVIDIA работает над тем, чтобы обеспечить возможность использования обоих подходов.
  • В будущей архитектуре сервер с одним модулем Tesla сможет одновременно предоставить игровой ускоритель для сеанса геймера, Quadro-ускоритель для сеанса дизайнера автомобиля и GPGPU-ускоритель для сеанса высокопроизводительных вычислений. Можно будет одновременно заниматься вычислениями и визуализацией в отдельном «облаке», получая высококачественную картинку на экран компьютера, планшетного ПК или телефона.
  • Ключ к созданию подобных архитектур — отказ от копирования данных туда-сюда. NVIDIA совместно с InfiniBand разрабатывает решение, которое позволит избежать постоянного копирования данных из системной памяти в видеопамять и обратно. Это позволит частично снять остроту проблемы полосы пропускания каналов связи, хотя всё равно всегда будут требоваться как можно более быстрые методы передачи данных.

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

Релиз 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 для API CUDA. В новой версии 3.2, как сообщается, разработчиков ожидают следующие новшества:

  • Новые библиотеки CUSPARSE (для операций с матрицами) и CURAND (генератор случайных чисел).
  • Улучшение производительности библиотек CUFFT и CUBLAS на архитектуре Fermi.
  • В состав CUDA Toolkit теперь включены библиотеки для работы с видео в формате H.264.
  • Добавлена поддержка новых продуктов Quadro и Tesla с объёмом буфера более 4 Гб, включая отладку на таких конфигурациях.
  • Отладка многопроцессорных конфигураций в cuda-gdb и Parallel Nsight.
  • Поддержка Fermi в cuda-memcheck.
  • Поддержка компилятора Intel C в 64-битных версиях Linux в NVCC.
  • Поддержка функций malloc() и free() в ядре CUDA-программы.
  • nvidia-smi поддерживает выдачу нескольких новых счётчиков производительности, включая загрузку GPU.

Доступ к предварительной версии CUDA Toolkit 3.2 осуществляется через бесплатную регистрацию на сайте NVIDIA для разработчиков.

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