Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК 2 Лекционный курс.doc
Скачиваний:
20
Добавлен:
16.08.2019
Размер:
3.92 Mб
Скачать

9.2.2.Конвейерная обработка данных на gpu sm4

Как описано выше, физически графический процессор G80 состоит из 16 мультипроцессоров, в каждом из которых по 8 «вычислителей». Вместе с тем, эти «вычислители» имеют конвейерную архитектуру, то есть – могут одновременно исполнять несколько конкретных вычислительных процессов, находящихся на разных стадиях алгоритма (например, когда один процесс записывает данные в глобальную видеопамять, другой может вести вычисле­ния). Эти вычислительные процессы принято называть потоками (англ. tread – обработка). Каждый мультипроцессор может одновременно исполнять до 768 параллельных потоков.

В программах должны быть логически разделены потоки, испол­няемые на различных мультипроцессорах, поскольку только потоки, исполняемые на одном и том же мультипроцессоре, имеют общий доступ к разделяемой памяти. Поэтому, потоки объединяются в «связки» потоков (англ. blocks). Каждая «связка» исполняется на одном мультипроцессоре. В «связке» может быть до 512 потоков. На одном мультипроцессоре могут исполняться две «связки», при условии, что для этого достаточно его ресурсов (общее количество потоков – не более 768, требуемый объём разделяемой памяти не больше имеющегося).

9.2.3.Логическая структура вычислений на gpu sm4

Шейдерная модель 4.0 даёт программисту возможность управлять распределением обрабатываемых данных и задач по «связкам» и по конкрет­ным потокам. Для этого существуют системные переменные, которые внутри каждого конкретного потока возвращают индексы именно этого потока, а также индексы той «связки», к которой он принадлежит. Методы использо­вания этих индексов показаны в нижеследующих примерах.

Программист имеет и возможность задавать способ индексации свя­зок и потоков. В общем случае индексы являются трёхмерными, что может быть удобно при обработке трёхмерных сеток. Допустимы также одно- и двухмерные индексы (см. примеры).

В системе программирования CUDA (см. ниже) переменные, возвращающие индексы «связок» и потоков, имеют следующие имена.

 dim3 – тип переменной, означающий 3-компонентный вектор;

 dim3 gridDim – размерности 3-мерной сетки «связок», задаваемые для исполнения алгоритма;

 dim3 blockDim - размерности 3-мерной сетки «вычислителей» внутри одной «связки», задаваемые для исполнения алгоритма;

 dim3 blockIdx – 3-мерные индексы (координаты) той «связки», к которой принадлежит исполняемый поток;

 dim3 threadIdx – 3-мерные индексы (координаты внутри «связки») исполняемого потока.

9.2.4.Преимущества gpu шейдерной модели 4.0

Архитектура GPU SM4 позволяет этим графическим процессорам исполнять все программы «чистого» поточно-параллельного моделирования, написанные для шейдерной модели 3.0, а кроме этого – предоставляет программисту дополнительные возможности, позволяющие использовать алгоритмы, кото­рые раньше не были эффективны на GPU. Шейдерная модель 4.0 даёт следующие конкретные преимущества перед использованием стандартных графических библиотек DirectX и OpenGL:

 широко известный стандартный язык программирования Си с несколькими простыми расширениями;

 произвольная адресация при записи в память;

 программируемость кэша;

 значительно меньшие накладные расходы на взаимодействие CPU и GPU, некоторые операции выполняются асинхронно;

 побитные операции над целыми числами;

 двойная точность операций с плавающей запятой (аппаратная реализация, начиная с поколения чипов ATI Radeon 4xxx и NVIDIA GeForce GTX 2xx).

Приведённые возможности делают графические процессоры шейдер­ной модели 4.0 гораздо более универсальными вычислительными системами, чем предыдущие GPU.