2. GPGPU — техника использования графического
процессора видеокарты для общих вычислений,
которые обычно проводит центральный процессор.
• архитектура видеокарты позволяет быстро и без
проблем «распараллелить» обработку данных.
Происходит «слаженная разбивка» нагрузки в
ядре карты.
• работа памяти и видеопроцессора оптимальнее,
чем связка «ОЗУ-кэш-процессор». В тот момент,
когда единица данных в видеокарте начинает
обрабатываться одним потоковым процессором
GPU, другая единица параллельно загружается в
другой, и, в принципе, легко можно достичь
загруженности графического процессора.
3. Идея распараллеливания вычислений -
большинство задач может быть разделено на
набор меньших задач, которые могут быть
решены одновременно.
• параллелизм на уровне битов,
• параллелизм на уровне инструкций,
• параллелизм данных,
• параллелизм задач.
4. Ядра CPU созданы для исполнения одного потока
последовательных инструкций с максимальной
производительностью
GPU проектируются для быстрого исполнения большого числа
параллельно выполняемых потоков инструкций
Разработчики CPU стараются добиться выполнения как можно
большего числа инструкций параллельно, для увеличения
производительности.
Из-за изначально параллельной организации работы в GPU
используется большое количество исполнительных блоков,
которые легко загрузить, в отличие от последовательного
потока инструкций для CPU. Кроме того, современные GPU
также могут исполнять больше одной инструкции за такт (dual
issue).
Все центральные процессоры имеют встроенные контроллеры
памяти
У всех GPU обычно есть по несколько контроллеров, вплоть до
восьми 64-битных каналов в чипе NVIDIA GT200. Кроме того, на
видеокартах применяется более быстрая память.
В универсальных процессорах большие количества
транзисторов и площадь чипа идут на буферы команд,
аппаратное предсказание ветвления и огромные объёмы
начиповой кэш-памяти.
Видеочипы тратят транзисторы на массивы исполнительных
блоков, управляющие потоками блоки, разделяемую память
небольшого объёма и контроллеры памяти на несколько
каналов.
Универсальные центральные процессоры используют кэш-
память для увеличения производительности за счёт снижения
задержек доступа к памяти. CPU снижают задержки доступа к
памяти при помощи кэш-памяти большого размера, а также
предсказания ветвлений кода.
GPU используют кэш или общую память для увеличения полосы
пропускания. Видеочипы обходят проблему задержек доступа к
памяти при помощи одновременного исполнения тысяч
потоков — в то время, когда один из потоков ожидает данных
из памяти, видеочип может выполнять вычисления другого
потока без ожидания и задержек.
CPU исполняет 1-2 потока вычислений на одно процессорное
ядро.
Видеочипы могут поддерживать до 1024 потоков на каждый
мультипроцессор, которых в чипе несколько штук. И если
переключение с одного потока на другой для CPU стоит сотни
тактов, то GPU переключает несколько потоков за один такт.
5. Самое главное — эти несколько ядер
мультипроцессора в GPU являются SIMD
(одиночный поток команд, множество потоков
данных) ядрами. И эти ядра исполняют одни и те
же инструкции одновременно, такой стиль
программирования является обычным для
графических алгоритмов и многих научных
задач, но требует специфического
программирования. Зато такой подход
позволяет увеличить количество
исполнительных блоков за счёт их упрощения.
6.
7.
8. РЕАЛИЗАЦИИ
• AMD FireStream — технология GPGPU, позволяющая
программистам реализовывать алгоритмы,
выполнимые на графических процессорах
ускорителей ATI.
• CUDA — технология GPGPU, позволяющая
программистам реализовывать на языке
программирования Си алгоритмы, выполнимые на
графических процессорах ускорителей GeForce
восьмого поколения и старше (GeForce 8 Series,
GeForce 9 Series, GeForce 200 Series), Nvidia Quadro и
Nvidia Tesla компании Nvidia. Технология CUDA
разработана компанией Nvidia.
• Direct3D 11 — вычислительный шейдер (англ.
Compute Shader).
• OpenCL является языком программирования задач,
связанных с параллельными вычислениями на
различных графических и центральных процессорах.
9. • CUDA (англ. Compute Unified Device Architecture) — програмно-
аппаратная архитектура, позволяющая производить
вычисления с использованием графических процессоров
NVIDIA, поддерживающих технологию GPGPU. Архитектура
CUDA впервые появились с выходом чипа NVIDIA восьмого
поколения - G80 и присутствует во всех последующих сериях
графических чипов, которые используются в семействах
ускорителей GeForce, Quadro и Tesla.
• CUDA SDK позволяет программистам реализовывать на
специальном упрощенном диалекте языка программирования
Си алгоритмы, выполнимые на графических процессорах
NVIDIA и включать специальные функции в текст программы на
Cи. CUDA даёт разработчику возможность по своему
усмотрению организовывать доступ к набору инструкций
графического ускорителя и управлять его памятью,
организовывать на нём сложные параллельные вычисления.
10. • AMD FireStream (ранее как ATI FireStream и AMD Stream
Processor[1]) — представляет собой потоковый процессор,
разработанный компанией ATI. FireStream — технология
GPGPU, позволяющая программистам реализовывать
алгоритмы, выполнимые на графических процессорах
ускорителей ATI.
• Областями применения FireStream являются приложения,
требовательные к вычислительному ресурсу, такие, как
финансовый анализ или обработка сейсмических данных.
Использование потокового процессора позволило
увеличить скорость некоторых финансовых расчётов в 55
раз по сравнению с решением той же задачи силами
только центрального процессора.
11. • Tesla — название семейства вычислительных систем
NVIDIA на основе графических процессоров с
архитектурой CUDA, которые могут быть использованы
для научных и технических вычислений общего
назначения. Tesla не может полностью заменить
обычный универсальный процесcор, но позволяет
использовать вычислительный ресурс множества своих
ядер для решения определенного круга ресурсоемких
задач, которые позволяют независимую параллельную
обработку данных (примерами таких задач могут
служить: симуляция свёртывания молекул белка,
секвенирование ДНК, моделирование погоды, анализ
финансового риска и т. п.).
12. • Highly Optimized Object Oriented Molecular Dynamics (HOOMD) — это
объектно-ориентированный пакет утилит для молекулярной динамики. Он
предназначен для проведения симуляций молекулярной динамики общего
назначения, и одним из первых подобных пакетов начал использовать NVIDIA
CUDA для ускорения расчётов. Объектно-ориентированный дизайн HOOMD
делает этот пакет универсальным и расширяемым. В текущей версии пакета
представлено большое количество разных силовых полей и интеграторов, а
дополнительные могут быть легко добавлены.
• Для описания, управления и запуска симуляций используется простой
скриптовый язык Python. Скрипты дают полное управление над силовыми
полями, интеграторами, всеми параметрами, количеством шагов и т.д.
Система скриптов специально сделана максимально простой в использовании
для пользователей, не являющихся программистами.
• Пока HOOMD симулирует молекулярную динамику на CPU или одиночном
GPU производства компании NVIDIA, но внедрение мультичипового расчёта
планируется в будущих версиях. Пакет работает под следующими
операционными системами: Microsoft Windows XP, Linux и Mac OS X. Результат
симуляций можно визуализировать при помощи интерфейса VMD.
• http://www.external.ameslab.gov/hoomd/index.html
13. • Ascalaph Liquid GPU — программа для симуляции молекулярной динамики в
жидкой фазе
• Ascalaph DNA GPU — программа создания моделей нуклеиновых кислот и их
комплексов с лигандами
• Ascalaph Liquid GPU — это аппаратно ускоренная на GPU версия программы Ascalaph
Liquid, идентичная CPU-версии во всём, кроме производительности. То же и насчёт
Ascalaph DNA GPU — это аналог Ascalaph DNA. Ascalaph Liquid GPU использует
аппаратные и программные возможности NVIDIA CUDA, ускоряя расчёт невалентных
взаимодействий. Расчёт делается специальным образом, все валентные параметры
силового поля игнорируются.
• Для этих специальных GPU версий используются видеокарты с поддержкой
технологии CUDA 2.0, причём, для достижения существенного роста
производительности, видеочип должен иметь как минимум 12 мультипроцессоров
(GeForce 8800 GT). При расчёте маленьких моделей из 100-200 атомов ускорение на
GPU не используется, включаясь только в случае моделей из тысячи и более атомов.
Программа делает расчёт моделей ограниченного размера, в зависимости от
конфигурации системы. С использованием 2 ГБ системного ОЗУ и 300 МБ локальной
видеопамяти, программы работают с моделями, включающими до 5000 атомов.
• http://www.agilemolecule.com/Ascalaph/Ascalaph-Liquid.html
• http://www.agilemolecule.com/Ascalaph/Ascalaph_DNA_GPU.html