Что такое cuda

nVidia 6xx: CUDA делась производительность?

Продолжая «железную» тему выбора компьютера для занятий 3D-графикой, вынужден особо подчеркнуть неприятную особенность нового поколения 6xx видеокарт от nVidia. Информация будет интересна тем, кто связан с GPU-вычислениями (вычисления, рендеринг с использованием видеокарты).

Если вы не в курсе, то в компьютерной технике готовится очередной качественный скачок производительности за счет переноса вычислений с центрального процессора на специализированные вычислительные устройства. Примерами таких устройств являются, например, видеокарты nVidia, содержащие CUDA-ядра (семейства GeForce, Quadro, Tesla). А также анонсированный процессор Xeon Psi от Intel, который по сути является отдельным многоядерным устройством аналогичным CUDA.

Поскольку мы фактически говорим о многоядерных процессорах, то их производительность линейно зависит от количества ядер. Так, например, если мы берем видеокарту GeForce GTX 430 (96 ядер) и GeForce GTX 480 (480 ядер), то производительность второй в GPU-вычислениях будет примерно в 5 раз выше.

Поколение nVidia 5xx подарило нам невероятно классную видеокарту GeForce GTX 580 (512 CUDA-ядер). Карта оказалась феноменально производительной… чем похоже испугала саму компанию nVidia. На настоящий момент она остается наиболее выгодным решением для GPU-рендеринга.

Успех GTX 580 породил целый ряд проблем для nVidia:
1) Взята слишком высокая планка CUDA-производительности, в то время когда конкурент AMD (ATI) строго говоря даже не ступил на это поле (мне неизвестно ни об одной удачной реализации многоядерных вычислений на устройствах этого производителя).
2) Видеокарта GTX 580 оказалась пригодной практически для любых задач, а из-за своей CUDA-производительности она начисто разгромила карты Quadro («в-четыредорога») и сделала сомнительным приобретение устройств Tesla (просто «космический» ценник).

Ну и что же отчебучила nVidia?! nVidia просто сделала еще раз то же самое, но по-другому!

В видеокартах поколения 6xx используется новое ядро Kepler. Если коротко изложить суть нововведений, то из архитектуры предыдущих поколений выкинули часть блоков, вдвое понизили частоту (!), кое-что упростили. В результате чего ПРОИЗВОДИТЕЛЬНОСТЬ CUDA УПАЛА ВТРОЕ!!!

Чтобы пользователи не заметили подставы весь маркетинг построили вокруг двух тезисов:
1) Энергопотребление снизилось (чистая правда и это действительно важно и полезно)
2) Ядер CUDA стало больше (да-да, ядер стало больше, но, вот незадача, сами ядра втрое слабее)

Получился парадокс. Новое поколение 6xx по CUDA-производительности практически ничем не лучше чем предыдущие поколения (прирост 10-15% очень трудно почуствовать)! А некоторые функции по обработке геометрических данных, особенно необходимые для работы с 3D-сценами в них умышленно урезаны!

Это nVidia сделала себе задел на будущее. Через год она снова возьмет тот же рубеж, что уже был взят картой GTX 580. Разумеется в маркетинговых материалах все сплошь радостные известия (конечно, нужно просто сравнивать по нужным параметрам и отчеты будут какие надо).

А обрадовавшиеся пользователи побежали в магазины за «мега-производительными» видеокартами и обнаружили, что их как обычно «обули».

Не буду голословным. Например, при сравнении на Blender Cycles экспериментально получено время рендеринга:

GTX 660Ti (1344 CUDA-ядра Kepler) — 83 сек.
GTX 560Ti (384 CUDA-ядра Fermi) — 94 сек.

Т.е. получается, что 660Ti быстрее на 13,25% чем 560Ti.
Если привести результаты, то по производительности получается четко:
1 ядро Fermi = 3 ядра Kepler

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

Подведу итог. Два последних года нет сколько-нибудь заметного роста CUDA-производительности.

Такой маркетинг.

P.S. В качестве недорогого решения для GPU-рендера я сейчас рекомендую брать либо GTX 660Ti (оптимальное соотношение цена/производительность на сегодняшний день) либо что-то поколений 4хх или 5хх с большим количеством ядер. Проверяйте по формуле 1 ядро Fermi = 3 ядра Kepler. Ну а если у вас с деньгами порядок, то можете подумать также про GeForce GTX 680 и GeForce GTX 690.

Автор: Александр Миловский

Часть 1. Общие рекомендации по выбору компьютера для 3D
Часть 2. Хараткеристики видеокарт
Часть 3. Промежуточные Итоги
Часть 4. Бюджетные решения
Часть 5. nVidia 6xx: CUDA делась производительность?
Часть 6. Зачем нужны видеокарты Quadro

主页→

Основы работы с технологией CUDA

Основы работы с технологией CUDA

Боресков А.В., Харламов А.А.

Данная книга посвящена программированию современных графических процессоров (GPU) на основе технологии CUDA от компании NVIDIA. В книге разбираются как сама технология CUDA, так и архитектура поддерживаемых GPU и вопросы оптимизации, включающие использование .PTX.Рассматривается реализация целого класса алгоритмов и последовательностей на CUDA.
The file will be sent to selected email address. It may takes up to 1-5 minutes before you received it.
The file will be sent to your Kindle account. It may takes up to 1-5 minutes before you received it.
Please note you’ve to add our email mailer@bookmail.org to approved e-mail addresses. Read more.

CUDA– это программно-аппаратная вычислительная технология от компании NVidia, поэтому перед началом установки необходимо проверить, поддерживает ли ваша видеокарта технологию CUDA (это можно сделать на официальном сайте: https://developer.nvidia.com/cuda-gpus).

Для разработки и запуска приложений необходимо:

·        графический процессор, поддерживающий CUDA;

·        драйвер для устройства иCUDA Toolkit;

·        программное обеспечение NVidia, которое можно бесплатно загрузить с сайта https://developer.nvidia.com/cuda-downloads

·        среда разработки программ (Microsoft Visual Studio, Netbeans, etc.).

В данном методическом пособии будет рассмотрена интеграция и установкаCUDA (версия 4.0) с помощью Microsoft Visual Studio. Отметим, что у Вас должна иметься уже установленная программа Microsoft Visual Studio 2010.

Этапы установки:

1)    Необходимо загрузить и установить драйвер для работы CUDA, который интегрирован в последние версии NVidia ForceWare (см. http://www.nvidia.com/drivers). Нужно обратить внимание, что версия драйвера должна соответствовать требованиям, указанным в примечаниях к релизу (Release Notes) CUDA Toolkit.

2)   Скачать драйверы для разработчиков (CUDA Developer Drivers) находятся в разделе CUDA Toolkit на сайте NVidia: https://developer.nvidia.com/cuda-toolkit. Этот программный пакет содержит инструменты, библиотеки, заголовочные файлы для компиляции программ с помощью Microsoft Visual Studio.GPU Computing SDK содержит в себе демонстрационные примеры, которые уже предварительно сконфигурированы для удобной работы в среде Microsoft Visual Studio,и является исключительно полезным при изучении технологии, но не требуется для создания и запуска приложений.

3)   Запустите установочный пакет (CUDA Toolkit) и поэтапно следуйте процессу установки. Инструментарий CUDA по умолчанию устанавливается в каталогC:Program FilesNVIDIA GPU Computing ToolkitCUDAv4.0. В процессе установки автоматически создаются соответствующие переменные окружения (в том числе CUDA_LIB_PATH, CUDA_INC_PATH), для настройки можно использовать их.

4)   Для компиляции и сборки проектов в настройках среды (Microsoft Visual Studio) необходимо выбрать вкладку

Tools | Options | Projects and Solutions | VC++ Directories.

Во вкладкуIncludefilesдобавить следующие каталоги:

C:Program FilesNVIDIA GPU Computing ToolkitCUDAv4.0include

Во вкладкуLibraryfilesдобавить следующие каталоги:

C:Program FilesNVIDIA GPU Computing ToolkitCUDAv4.0libWin32(или C:Program FilesNVIDIA GPU Computing ToolkitCUDAv4.0libx64 для 64-битной сборки)

5)   Запустите установочный пакет GPU Computing SDK и поэтапно следуйте процессу установки. Данный программный комплект содержит не только исходные коды программ для множества примеров и задач, но и шаблоны для Microsoft Visual Studio.

6)   Для компиляции с использованием CUDA необходимо использовать соответствующие правила сборки (они автоматически добавляются в общий список при установке CUDA Toolkit): пункт меню

Project | Custom Build Rules…,далеевыбратьCUDA Runtime API Build Rule.При этом в настройках проекта будет добавлена вкладка CUDA Runtime API с настройками, специфичными для CUDA-части. Компилятор nvcc может быть вызван и отдельно, через командную строку.

Курс лекций по CUDA

 

 

Архитектура и программирование массивно параллельных процессоров

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

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

Задачей этого курса является обучение разработке приложений для процессоров с массивно параллельной вычислительной архитектурой. Мы называем процессор «массивно параллельным” если он способен выполнять более чем 64 арифметические операции за один цикл тактовой частоты. Сегодня процессоры NVIDIA могут быть отнесены к этому классу. Процессоры от Intel, AMD, и IBM перейдут к использованию массивно-параллельных архитектур в течение следующих нескольких лет. Эффективное программирование таких процессоров потребует детального понимания принципов параллельного программирования, а также моделей параллелизма, обмена данными и знания различных архитектурных ограничений этих процессоров. Целевая аудитория этого курса – это специалисты, которые хотели бы научиться разрабатывать приложения для таких процессоров, а также проектировать будущие реализации параллельных архитектур.

Курс лекций на ВМК МГУ (Москва)

«Архитектура и программирование массивно-параллельных вычислительных систем на основе технологии CUDA» читает К.ф.м.н. Боресков А.В.

ВВОДНЬIЙ ОБУЧАЮЩИЙ КУРС ПО CUDA ОТ КОМПАНИИ NVIDIA

СПИСОК ЛИТЕРАТУРЬI

 

Недавно вышла версия TensorFlow 1.5 с поддержкой CUDA 9, поэтому можно переводить TensorFlow и Keras на новую версию CUDA. В этой статье я расскажу, как установить CUDA 9 и CuDNN 7 в Windows 10. По установке для Linux будет отдельная статья.

Что нужно устанавливать

Чтобы TensorFlow и Keras могли использовать GPU под Windows, необходимо установить три компонента:

  1. Microsoft Visual Studio. Любая GPU-программа содержит код как для GPU, так и для CPU. Данные для проведения расчетов нужно загрузить из файлов и передать их в память GPU, где они будут обработаны. Результаты обработки передаются обратно на CPU для сохранения и визуализации. NVIDIA СUDA включает компилятор только для GPU. Код для CPU генерируется с помощью внешнего компилятора, для Windows это Microsoft Visual Studio.
  2. NVIDIA CUDA — библиотека, которая позволяет использовать GPU для проведения вычислений общего назначения (general purpose computing), а не только обрабатывать графику.
  3. Библиотека cuDNN. Это библиотека для CUDA, которая содержит эффективные реализации операций с нейронными сетями.

    В отличие от Theano, TensorFlow не может работать без cuDNN.

Проверка GPU

CUDA работает только с GPU компании NVIDIA, вот список поддерживаемых GPU. Если у вас GPU от AMD или Intel, то CUDA работать не будет и TensorFlow, к сожалению, не сможет использовать такие GPU.

Для TensorFlow нужна видеокарта с CUDA Compute Capability 3.0. Узнать Compute Capability для своей карты можно на сайте. Если у вас старый GPU с Compute Capability меньше 3.0, то вместо TensorFlow можно использовать Theano, у которой меньше требования к GPU. Однако ускорение на таких GPU будет не очень большим, по сравнению с центральным процессором.

Установка Microsoft Visual Studio

Под Windows NVIDIA CUDA использует Microsoft Visual Studio для генерации кода для CPU. Список поддерживаемых версий Visual Studio для CUDA 9 приведен на сайте NVIDIA. На момент написания этой статьи поддерживаются версии:

  • Visual Studio 2017
  • Visual Studio 2015
  • Visual Studio Community 2015
  • Visual Studio 2013
  • Visual Studio 2012

Из бесплатных версий есть только Visual Studio Community 2015, я устанавливал именно ее. Скачать Visual Studio Community 2015 можно с сайта my.visualstudio.com, нужна предварительная регистрация.

Если у вас есть Visual Studio 2017, то можно использовать ее. Однако обратите внимание, что пока не поддерживается обновленная версия Visual Studio 2017 с компилятором Visual C++ 15.5. Официально CUDA 9 работает только с Visual C++ 15.0.

Рекомендую устанавливать Visual Studio на английском языке. С русскоязычной Visual Studio есть проблемы у Theano. В TensorFlow я пока с подобными проблемами не сталкивался, но, возможно, мне просто повезло.

При установке Visual Studio выберите средства для разработки C++, остальное устанавливайте по желанию.

После установки добавьте путь к компилятору Visual С++ (cl.exe) в переменную PATH.

Установка NVIDIA CUDA

На время написания этой статьи текущей версией CUDA является 9.1.

Однако TensorFlow 1.5 поддерживает только CUDA 9.0. Если установите 9.1, то получите ошибку. Странное поведение, но что поделать.

Скачать CUDA 9.0 можно на странице CUDA Toolkit Archive. Выбираем нужную версию Windows и тип загружаемого файла — exe(local). Этот файл содержит CUDA и драйвер для GPU с поддержкой CUDA. Просто скачайте файл и запустите его. Все конфигурационные параметры при установке можно оставить по умолчанию.

Установка cuDNN

cuDNN — это дополнение к NVIDIA CUDA, которое содержит эффективную реализацию операций с нейронным сетями для GPU. DNN в названии библиотеки расшифровывается как Deep Neural Networks. Некоторые библиотеки, например, Theano, могут работать с CUDA без cuDNN. Но TensorFlow так работать не может, для нее cuDNN нужна обязательно.

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

После регистрации будет предложено скачать несколько версий cuDNN для разных версий CUDA. Выбирайте cuDNN 7 для CUDA 9.0. С другими версиями cuDNN и CUDA не будет работать TensorFlow 1.5.

cuDNN представляет собой архив, в котором всего три файла:

    Эти файлы нужно распаковать в каталог, где установлена CUDA 9.0. Как правило, это .

    Перезагрузка

    После установки Microsoft Visual Studio, NVIDIA CUDA и cuDNN, компьютер необходимо перезагрузить.

    Проверка установки CUDA

    Проверить, правильно ли установилась CUDA и видит ли она ваш GPU, можно с помощью утилиты . Эта утилита показывает доступные GPU для CUDA. Утилита работает в командной строке и при установке по умолчанию находится в каталоге . На моем ноутбуке с GPU NVIDIA GeForce GTX 1050 Ti выдает следующую информацию:

    В выводе видно, что в компьютере есть один GPU с номером 0, модель GeForce GTX 105… (название видеокарты поместилось не полностью), объем памяти 4 Гб, текущая загрузка 0%. В нижней части показаны процессы, которые используют GPU.

    Видеокарта есть в выводе , это означает, что CUDA установлена успешно.

    Итоги

    Кратко, основные особенности установки:

    1. Обязательно нужно Microsoft Visual Studio, у меня работает бесплатная англоязычная версия Visual Studio Community 2015. Не забудьте прописать путь с компилятору Visual C++ (cl.exe) в переменную PATH, иначе CUDA его не найдет.
    2. Для TensorFlow 1.5 нужно устанавливать CUDA 9.0, а не CUDA 9.1! TensorFlow ищет файлы именно из CUDA 9.0, поэтому CUDA 9.1 не работает.
    3. Устанавливать cuDNN обязательно, т.к. без нее TensorFlow не работает. Внимательно смотрим за версиями: нужна cuDNN 7 для CUDA 9.0.

    Полезные ссылки

    1. Проверка поддержки CUDA и Compute Capability.
    2. Загрузка Visual Studio Community 2015 c my.visualstudio.com.
    3. Загрузка CUDA 9.0 c CUDA Toolkit Archive
    4. Загрузка cuDNN.

    Добавить комментарий

    Закрыть меню