учитывать, что разделяемая память разбита на так называемые бан-
ки [2]. При обращении нескольких потоков к ячейкам памяти внутри
одного и того же банка происходит так называемый банк-конфликт,
который приводит к увеличению времени выполнения запросов к па-
мяти.
Как указывалось выше, правильное использование различных ви-
дов памяти крайне важно. Это многократно рассмотрено в докумен-
тации и примерах, предоставляемых вместе со средой разработки [2],
а также в обучающей литературе. Классическим примером является
решение задачи о нахождении суммы элементов массива, так называ-
емое reduce, входящее в качестве примера в nVidia c CUDA SDK и
подробно рассмотренное в работе [3].
Важность правильного использования памяти можно также пока-
зать на практически важном примере, когда требуется решить очень
большое число квадратных уравнений. Такие задачи актуальны, на-
пример, при моделировании процессов переноса излучения, когда тре-
буется провести трассировку объектов [5], границы которых заданы
поверхностями 2-го порядка.
Рассмотрим три варианта решения большого числа квадратных
уравнений с использованием графических процессоров:
1) алгоритм не использует разделяемую память. Вся работа ведется
в глобальной памяти, причем связанность запросов не обеспечивается;
2) aлгоритм использует разделяемую память, однако связывание
запросов к глобальной памяти при загрузке из нее данных не обеспе-
чивается;
3) aлгоритм использует разделяемую память, и, кроме того, загруз-
ка данных в разделяемую память проводится связанными запросами.
На рис. 3 приведены результаты сравнения эффективности исполь-
зования графического процессора при выполнении указанных вариан-
тов параллельного кода.
Из рис. 3 следует, что использование разделяемой памяти для хра-
нения массивов коэффициентов уравнений в совокупности с выпол-
нением связанных запросов значительно повышает быстродействие
алгоритма.
Гибридные и multi-GPU вычисления.
В настоящее время одним
из перспективных направлений применения графических ускорителей
в прикладных задачах является использование для расчетов несколь-
ких графических процессоров (multi-GPU), а также разработка алго-
ритмов для проведения параллельных вычислений на гибридных кла-
стерах, содержащих совокупности узлов, каждый из которых состоит
из многоядерных CPU и нескольких графических адаптеров.
76
ISSN 1812-3368. Вестник МГТУ им. Н.Э. Баумана. Сер. “Естественные науки”. 2011. № 3