Приведение плотных матриц с элементами из GF(2) к ступенчатому виду на платформе NVIDIA CUDA - page 3

организуются в трехмерные
блоки
, а блоки — в трехмерную
сетку
.
Потоки внутри одного блока могут использовать быструю общую па-
мять и примитивы синхронизации. Планировщик выполнения потоков
ГП оперирует группами по 32 потока —
ворпами
. В ворпе все пото-
ки выполняют одновременно одну и ту же инструкцию. Если из-за
условий, зависящих от данных, пути выполнения потоков в ворпе рас-
ходятся, образовавшиеся ветви выполняются последовательно, снижая
производительность. Половина ворпа также является единицей фор-
мирования транзакций доступа к памяти. Перечислим основные типы
памяти с точки зрения ядра:
регистры, выделяемые на каждый поток;
общая память — небольшая быстрая память, доступная для чте-
ния и записи всеми потоками блока, у каждого блока своя;
константная память — небольшая кэшируемая память только для
чтения;
глобальная память — основной массив памяти ГП, доступна для
чтения и записи;
локальная память — часть глобальной памяти, используемая при
нехватке регистров;
текстурная память — доступ к области основной памяти ГП через
блоки выборки текстур с их специфическими режимами адреса-
ции и интерполяции, только для чтения;
поверхности — вариант текстурной памяти с возможностью за-
писи, поддерживается только новыми моделями ГП.
Взаимодействие программы ЦП с ГП осуществляется через потоки
команд, содержащие вызовы ядер и операции копирования данных
между оперативной памятью и/или памятью ГП.
Рассмотрим метод Гаусса, являющийся основой метода “четырех
русских” для обращения.
Для системы с элементами из GF(2) алгоритм Гаусса [2] не содер-
жит шага деления строки на значение ее ведущего элемента, поэтому
применение алгоритма состоит из чередования двух шагов:
— поиск строки с ненулевым элементом в текущем столбце и обмен
местами строк, если это необходимо;
— вычитание текущей строки из всех нижележащих с ненулевым
элементом в текущем столбце.
Этим шагам соответствуют два ядра CUDA, вызываемые контро-
лирующей программой хост-системы. Выделение этих двух шагов в
отдельные ядра связано с необходимостью постоянного изменения
конфигурации вычислительной сетки во избежание простоя больших
групп потоков.
52
ISSN 1812-3368. Вестник МГТУ им. Н.Э. Баумана. Сер. “Естественные науки”. 2013. № 1
1,2 4,5,6,7,8,9,10,11
Powered by FlippingBook