Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Тема 6 Технология CUDA



1. Основные термины: концепция SIMD, мультипроцессор, устройство (device), хост (host), ядро (kernel). Организация потоков.

Технология CUDA — это программно-аппаратная вычислительная архитектура NVIDIA, основанная на расширении языка Си, которая даёт возможность организации доступа к набору инструкций графического ускорителя и управления его памятью при организации параллельных вычислений. CUDA помогает реализовывать алгоритмы, выполнимые на графических процессорах видеоускорителей GeForce восьмого поколения и старше (серии GeForce 8, GeForce 9, GeForce 200), а также Quadro и Tesla. Вычислительная архитектура CUDA реализована на концепции SIMD - один поток команд и множественный поток данных. То есть одна инструкция позволяет обрабатывать множество данных.

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

Устройство (device) - видеоадаптер, поддерживающий драйвер CUDA, либо другое специализированное устройство, предназначенное для выполнения инструкций CUDA (например NVidia Tesla)

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

Хост (host) - обычная программа в оперативной памяти, использующую CPU и выполняющую управляющие функции по работе с device, то есть та часть программы, которая выполняется на CPU - хост, а на GPU - device.

Организация потоков

Пусть необходимо выполнить некоторую процедуру на N потоках, в CUDA эта процедура называется ядром (kernel). Для CUDA характерна блочно-сеточная архитектура, при этом драйвер CUDA сам распределяет ресурсы устройства между потоками.

Все потоки, выполняющим kernel1, которые объединены блоки, которые объединены в решетку grid1. Каждый блок в свою очередь состоит из потоков. Все индексы потоков двухмерные, в CUDA можно работа с 1-3мерными индексами, все определяется спецификацией решаемой задачи. В CUDA можно использовать одномерный-трехмерные индексы. Индексы представляют собой трехмерные векторы, каждый поток знает индекс потока внутри блока threadIdx: threadIdx.x threadIdx.y и знает индекс блока внутри сетки blockIdx: blockIdx.x blockIdx.y. При запуске программы на device все потоки в grid отличаются только индексами, именно через индексы можно управлять потоками, указывая какая часть данных обрабатывается тем или иным потоком. Код задачи выполняется на мультипроцессоре определенными частями (пулами, warp'ами).


·





Дата публикования: 2015-02-03; Прочитано: 360 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...