Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Возможности программирования процессоров архитектуры CUDA




Программирование GPU на CUDA мы рассмотрим на примере задачи о прохождении нейтронов через пластину. Общие принципы такого программирования заключаются в следующем:

· Язык программирования на CUDA представляет собой расширение языка С. Его компилятор [5] поддерживает все стандартные операторы и операции языка C (для вычислительных ядер – в пределах технических возможностей графического процессора), все широко используемые математические функции, а также специфические для CUDA операции, предназначенные для управления памятью GPU и для организации параллельных вычислений. Этот компилятор может быть подключен к таким средам программирования, как Microsoft Visual Studio 2005-2008, Microsoft Visual С++ Express 2005-2008.

· Современные GPU архитектуры CUDA могут работать с вещественными числами 32-битной (одинарной) и 64-битной (двойной) точности, а также с 32- и 64-битными целыми числами. Поддерживаются побитовые логические операции с целыми числами, необходимые, в частности, для высокоскоростной реализации генераторов псевдослучайных чисел, требуемых для метода Монте-Карло.

· Графическому процессору доступна память нескольких типов [4], из которых для вычислений общего назначения особенно важны следующие:

à Регистры графического процессора. Расположены прямо на кристалле GPU, так что доступ к ним (чтение либо запись числа 32-битной точности) требует минимально возможного времени – 4 тактов процессора. Каждый из потоковых мультипроцессоров, в зависимости от версии CUDA [4] имеет 8192 либо 16384 32-битных регистра. Регистры доступны центральному процессору для записи данных перед началом исполнения вычислительного ядра. Отметим, что для хранения чисел двойной (64-битной) точности используются пары этих же регистров.

à Разделяемая память (Shared Memory). Как и регистры, расположена на кристалле GPU и работает с такой же высокой скоростью (4 такта для чтения и для записи). В отличие от регистров, распределяемых по вычислительным потокам (threads), доступна одновременно всем вычислительным потокам, исполняемым на одном и том же мультипроцессоре. Позволяет этим потокам взаимодействовать между собой. Имеет объём 16 Кb (16384 байта, то есть 4096 32-битных ячеек) на мультипроцессор. Центральному процессору недоступна.

à Общая память (Global Memory). Конструктивно представляет собой отдельные микросхемы памяти, расположенные на плате графического ускорителя. Имеет большой объём, от 256 Mb до нескольких гигабайт. Предназначена для хранения больших массивов исходных данных и для сохранения результатов работы вычислительного ядра. Доступ из вычислительного ядра требует 400-600 тактов [5], так что эта память работает на два порядка медленнее, чем регистры. Доступна одновременно всем мультипроцессорам GPU и всем вычислительным потокам, а также центральному процессору, как для записи, так и для чтения. Через эту память центральный процессор получает результаты вычислений на GPU.

à Кроме рассмотренных типов памяти, существует также кэш графического процессора для констант (Constant cache) и текстур (Texture cache). Эти разделы памяти работают со скоростью регистров и доступны одновременно всем мультипроцессорам. Они применяются для оптимизации доступа к константам и графическим данным (текстурам). Подробности использования этих типов памяти приведены в описании [4].

Поскольку архитектура CUDA совершенствуется, возможности графических процессоров, выпускавшихся в разное время, несколько различны. Для обобщения этих возможностей, компания NVIDIA использует понятие «вычислительной способности» (Compute Capability [5]), которая к настоящему времени имеет версии от 1.0 до 1.3 (например, выпущенный в 2007 году процессор GeForce 8800 Ultra имел вычислительную способность 1.0, а выпущенный в 2008 году GeForce GTX 280 - вычислительную способность 1.3). Некоторые характеристики этих версий [5] приведены в табл. 3.1.

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

 

Таблица 3.1

Вычислительная способность GPU, поддерживающих технологию CUDA

Характеристика Вычислительная способность
1.0-1.1 1.2 1.3
Количество потоковых процессоров в составе одного мультипроцессора
Количество вычислительных потоков (threads), одновременно исполняемых одной логической «связкой» на одном мультипроцессоре
Количество вычислительных потоков, одновременно исполняемых двумя «связками» на одном мультипроцессоре
Количество 32-битных регистров, одновременно доступных одному мультипроцессору
Поддержка целочисленных типов и операций 32-битной точности есть есть есть
Поддержка целочисленных типов и операций 64-битной (двойной) точности нет есть есть
Поддержка вещественных чисел и операций 64-битной (двойной) точности нет нет есть

 


Поделиться:

Дата добавления: 2015-09-13; просмотров: 56; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты