4267

Состав NVIDIA CUDA. Модель программирования CUDA

Контрольная

Информатика, кибернетика и программирование

Состав NVIDIA CUDA CUDA включает два API: высокого уровня (CUDA Runtime API) и низкого (CUDA Driver API), хотя в одной программе одновременное использование обоих невозможно, нужно использовать или один или другой. Высокоуровневый работает «сверху» ...

Русский

2012-11-15

118.94 KB

28 чел.

Состав NVIDIA CUDA

CUDA включает два API: высокого уровня (CUDA Runtime API) и низкого (CUDA Driver API), хотя в одной программе одновременное использование обоих невозможно, нужно использовать или один или другой. Высокоуровневый работает «сверху» низкоуровневого, все вызовы runtime транслируются в простые инструкции, обрабатываемые низкоуровневым Driver API. Но даже «высокоуровневый» API предполагает знания об устройстве и работе видеочипов NVIDIA, слишком высокого уровня абстракции там нет. 

Есть и ещё один уровень, даже более высокий — две библиотеки:

CUBLAS CUDA вариант BLAS (Basic Linear Algebra Subprograms), предназначенный для вычислений задач линейной алгебры и использующий прямой доступ к ресурсам GPU;

CUFFT — CUDA вариант библиотеки Fast Fourier Transform для расчёта быстрого преобразования Фурье, широко используемого при обработке сигналов. Поддерживаются следующие типы преобразований: complex-complex (C2C), real-complex (R2C) и complex-real (C2R).

Модель программирования CUDA

CUDA использует параллельную модель вычислений, когда каждый из SIMD процессоров выполняет ту же инструкцию над разными элементами данных параллельно. GPU является вычислительным устройством, сопроцессором (device) для центрального процессора (host), обладающим собственной памятью и обрабатывающим параллельно большое количество потоков. Ядром (kernel) называется функция для GPU, исполняемая потоками (аналогия из 3D графики — шейдер).

Мы говорили выше, что видеочип отличается от CPU тем, что может обрабатывать одновременно десятки тысяч потоков, что обычно для графики, которая хорошо распараллеливается. Каждый поток скалярен, не требует упаковки данных в 4-компонентные векторы, что удобнее для большинства задач. Количество логических потоков и блоков потоков превосходит количество физических исполнительных устройств, что даёт хорошую масштабируемость для всего модельного ряда решений компании.

Модель программирования в CUDA предполагает группирование потоков. Потоки объединяются в блоки потоков (thread block) — одномерные или двумерные сетки потоков, взаимодействующих между собой при помощи разделяемой памяти и точек синхронизации. Программа (ядро, kernel) исполняется над сеткой (grid) блоков потоков (thread blocks), см. рисунок ниже. Одновременно исполняется одна сетка. Каждый блок может быть одно-, двух- или трехмерным по форме, и может состоять из 512 потоков на текущем аппаратном обеспечении. 

Блоки потоков выполняются в виде небольших групп, называемых варп (warp), размер которых — 32 потока. Это минимальный объём данных, которые могут обрабатываться в мультипроцессорах. И так как это не всегда удобно, CUDA позволяет работать и с блоками, содержащими от 64 до 512 потоков. Кеплер позволяет определять на 1 варп до 2048 потоков.

Модель памяти CUDA

Модель памяти в CUDA отличается возможностью побайтной адресации, поддержкой как gather, так и scatter. Доступно довольно большое количество регистров на каждый потоковый процессор, до 1024 штук. Доступ к ним очень быстрый, хранить в них можно 32-битные целые или числа с плавающей точкой.

Каждый поток имеет доступ к следующим типам памяти: 

Глобальная память — самый большой объём памяти, доступный для всех мультипроцессоров на видеочипе, размер составляет от 256 мегабайт до 1.5 гигабайт на текущих решениях (и до 4 Гбайт на Tesla). Обладает высокой пропускной способностью, более 100 гигабайт/с для топовых решений NVIDIA, но очень большими задержками в несколько сот тактов. Не кэшируется, поддерживает обобщённые инструкции load и store, и обычные указатели на память.

Локальная память — это небольшой объём памяти, к которому имеет доступ только один потоковый процессор. Она относительно медленная — такая же, как и глобальная.

Разделяемая память — это 16-килобайтный (в видеочипах нынешней архитектуры) блок памяти с общим доступом для всех потоковых процессоров в мультипроцессоре. Эта память весьма быстрая, такая же, как регистры. Она обеспечивает взаимодействие потоков, управляется разработчиком напрямую и имеет низкие задержки. Преимущества разделяемой памяти: использование в виде управляемого программистом кэша первого уровня, снижение задержек при доступе исполнительных блоков (ALU) к данным, сокращение количества обращений к глобальной памяти.

Память констант — область памяти объемом 64 килобайта (то же — для нынешних GPU), доступная только для чтения всеми мультипроцессорами. Она кэшируется по 8 килобайт на каждый мультипроцессор. Довольно медленная — задержка в несколько сот тактов при отсутствии нужных данных в кэше.

Текстурная память — блок памяти, доступный для чтения всеми мультипроцессорами. Выборка данных осуществляется при помощи текстурных блоков видеочипа, поэтому предоставляются возможности линейной интерполяции данных без дополнительных затрат. Кэшируется по 8 килобайт на каждый мультипроцессор. Медленная, как глобальная — сотни тактов задержки при отсутствии данных в кэше.

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

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

Типичный, но не обязательный шаблон решения задач:

  1.  задача разбивается на подзадачи;
  2.  входные данные делятся на блоки, которые вмещаются в разделяемую память;
  3.  каждый блок обрабатывается блоком потоков;
  4.  подблок подгружается в разделяемую память из глобальной;
  5.  над данными в разделяемой памяти проводятся соответствующие вычисления;
  6.  результаты копируются из разделяемой памяти обратно в глобальную.

Парадигма программирования подразумевает под собой не только тип программирования, но и среду разработки. В последнее время стали пользоваться огромной популярностью мобильные телефоны. А они соответственно имеют свою ОС. Наиболее известные – Symbian, WM, Android, IOS.

Каждая из этих ОС имеет свою среду разработки, на которых подробнее мы останавливаться не будем.

Рассмотрим еще одно направление программирования для ПК с точки зрения среды разработки – WPF.

Windows Presentation Foundation (WPF) — система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), использующая язык XAML.

WPF предустановлена в Windows Vista(.NET Framework 3.0) и Windows 7(.NET Framework 3.5 SP1). С помощью WPF можно создавать широкий спектр как автономных, так и запускаемых в браузере приложений.

 WPF позволяет расширить возможности программиста и дизайнера вместе с помощью продукта от MicrosoftBlend. Это ПО позволяет создавать XAML одинаковый как для программиста, так и для дизайнера. Больше нет этого сложного перехода.

Основные преимущества WPF:

  1.  Декларативное определение UI – XAML
  2.  Вовлечение дизайнеров
  3.  Универсальный подход работы с любыми медиа-источниками
  4.  Векторная отрисовка
  5.  Аппаратное ускорение
  6.  3D
  7.  Легкость разворачивания

Главной, на мой взгляд, особенностью является то, что именно за WPF будущее программирования. В современных условиях у этой технологии есть один важный плюс – ориентированность на пользователя. Выделяется эта технология тем, что она вполне внедрима как в WinForm, так и WinForm внедрима в нее. Впредь эта технология будет расширяться и внедряться в массы.


 

А также другие работы, которые могут Вас заинтересовать

27748. Факторы социализации и формирования личности 20.14 KB
  Факторы социализации и формирования личности Социализация как уже отмечалось осуществляется в различных ситуациях возникающих в результате взаимодействия множества обстоятельств. В подростковом и юношеском возрасте увеличивается и оказывается наиболее действенным влияние групп сверстников в зрелом же возрасте на первое место по значимости выходят сословие трудовой или профессиональный коллектив отдельные личности.В последние годы все большее значение ученые придают макпофакторам социализации в том числе и природногеографическим...
27749. Основными направлениями социально-педагогической деятельности являются 17.47 KB
  Поскольку проблема ребенка требующая разрешения как правило имеет и внутренние личностные и внешние аспекты социальнопедагогическая деятельность обычно включает две составляющие: непосредственную работу с ребенком; посредническую деятельность во взаимоотношениях ребенка со средой способствующую их социальнокультурному становлению и развитию. По содержанию социальнопедагогическая деятельность чрезвычайно многообразна. Однако в настоящее время эта задача непростая поскольку сфера практической социально педагогической деятельности...
27750. Становление идей воспитывающего и развивающего обучения в педагогической мысли Западной Европы до 80-х гг. XIX в 27.72 KB
  Становление идей воспитывающего и развивающего обучения в педагогической мысли Западной Европы до 80х гг. в педагогической мысли возникают теории обучения и воспитания которые становятся классическими педагогическими теориями и базой для дальнейшего развития науки и практики образования во всех странах. Так один из основоположников дидактики начального обучения швейцарский педагог Иоганн Генрих Песталоцци 17461827 окончивший два курса коллегиума Каролинум вел активную просветительскую деятельность организовал ряд приютов для детей из...
27751. Сущность коррекционно-педагогической деятельности с детьми и подростками 28.78 KB
  Возникает задача поиска более действенных и результативных путей профилактики и педагогической коррекции отклоняющегося поведения детей и подростков как следствия их школьной дезадаптации опирающихся на принципы гуманизации и индивидуализации педагогического процесса в общеобразовательной школе. В педагогической науке в настоящий момент отсутствуют системные исследования коррекционнопедагогической деятельности не ведется пока целостного изучения взаимосвязи между коррекционной деятельностью и единым педагогическим процессом. Поэтому...
27752. Психолого - педагогические подходы в воспитании детей с ограниченными возможностями 39.13 KB
  В процессе развития ребенка функциональные системы взаимовлияют друг на друга. Поэтому эмоциональноположительное взаимодействие ребенка с матерью составляет основу формирования всех психических функций: речи внимания памяти целенаправленной деятельности эмоциональной сферы мышления и сознания. Специальные исследования показали что отрицательные последствия воспитания детей грудного и раннего возраста в учреждениях закрытого типа возникают не изза отсутствия материального ухода а являются следствием недостаточности эмоциональных...
27753. Средства массовой информации. Их влияние на развитие личности детей и подростков 23.81 KB
  Не смотря на бурное развитие средств коммуникации в начале XXI века телевидение и сегодня остается самым массовым и доступным средством информации. СМИ являются также источниками пошлой информации порнографии. Помимо негативного влияния СМИ на молодежное поведение можно выделить несколько позитивных моментов: СМИ держит молодежь в курсе всех происходящих событий таким образом удаляя информационный голод средства массовой информации повышает общую в том числе и политическую культуру населения; служит для взаимного информирования властей и...
27754. МЕТОДОЛОГИЯ И МЕТОДЫ ПЕДАГОГИЧЕСКИХ ИССЛЕДОВАНИЙ 46.16 KB
  В свою очередь для их накопления и интерпретации нужны научно обоснованные методы исследования. Методология науки дает характеристику компонентов научного исследования его объекта предмета анализа задач исследования совокупности исследовательских средств необходимых для их решения а также формирует представление о последовательности движения исследователя в процессе решения исследовательских задач. Дескриптивная методология как учение о структуре научного знания закономерностях научного познания служит ориентиром в процессе...
27755. Сущность социальной педагогики 18.67 KB
  Социальная педагогика рассматривает процесс воспитания социологию личности в теоретическом и прикладном аспектах то есть социальная педагогика выступает и как наука и как область практической деятельности нацеленная на преобразование окружающей среды создание гуманных воспитывающих отношений в социуме поиск механизмов педагогически компетентного вмешательства в различные в том числе кризисные ситуации социальной действительности. Мудрик считает что социальная педагогика это отрасль педагогики рассматривающая социальное воспитание...
27756. Принцип. Основные принципы и их применение 26.32 KB
  Человек природное существо и развивается по законам естественной и социальной природы. Сущность принципа заключается в том что отношение к человеку должно быть как к природному существу а точнее социальноприродному. Принцип природосообразности диктует необходимость тщательного учета в процессе социальнопедагогической работы общих законов развития природы другими словами естественных возможностей человека. Основные требования это: знать законы и закономерности развития и воспитания человека и уметь строить в соответствии с ними всю...