ВЕСТНИК 11/2013
МГСУ_11/2013
УДК 624.04
В.Л. Якушев, А.В. Филимонов, П.Ю. Солдатов
ФГБУН ИАП РАН
ВОЗМОЖНОСТИ ПРИМЕНЕНИЯ ВЫЧИСЛЕНИЙ НА ГРАФИЧЕСКИХ УСКОРИТЕЛЯХ ПРИ РАСЧЕТАХ
СООРУЖЕНИЙ
Предложен способ адаптации прямого решателя систем линейных алгебраических уравнений для вычислительных систем, использующих графические ускорители (GPU). Описан опыт пошагового повышения быстродействия. Перечислены проблемы, возникшие при работе с графическими процессорами, рассмотрены варианты их решения. Исследовалось влияние различных факторов на эффективность решателя. Приведены результаты тестирования для конечно-элементных моделей реальных строительных объектов.
Ключевые слова: графические процессоры (GPU), параллельные вычисления, разложение Холецкого, системы автоматизированного проектирования.
Проектирование современных строительных объектов не обходится без применения CAD/CAE-систем для автоматизации расчетов. Требуются все более подробные конечно-элементные модели сооружений, и, следовательно, возникает проблема быстрого решения систем линейных алгебраических уравнений (СЛАУ) с большим количеством неизвестных. Особенности матриц, задающих данные системы, такие как разреженность и симметричность, позволяют разрабатывать и применять эффективные методы для их решения.
Благодаря параллельным алгоритмам и развитию архитектур центральных процессоров, можно существенно оптимизировать работу решателей. Тем не менее, повышать производительность вычислений на традиционных архитектурах становится все сложнее: рост тактовой частоты центральных процессоров (CPU) замедлился, требуются вложения в содержание кластеров, необходимо адаптировать коды под многопроцессорную архитектуру. Альтернативой дальнейшему наращиванию мощностей являются вычисления на графических процессорах (GPU). Благодаря большому количеству ядер и другим особенностям архитектуры использование GPU позволяет значительно увеличить производительность вычислений для некоторых задач [1, 2]. В данный момент развитие технологий вычислений общего назначения на GPU идет быстрыми темпами, причем как на аппаратном, так и на программном уровне.
В данной работе рассмотрен прямой решатель СЛАУ, который реализует разложение Холецкого, — симметричная положительно определенная матрица A представляется в виде A = LLT, где L — нижняя треугольная. Данный метод является прямым, а значит время работы решателя практически не зависит от количества правых частей. Так как в строительной механике часто возникают задачи с большим количеством правых частей, то данная особенность актуальна для применения метода в программных комплексах для расчета сооружений [3, 4]. Разработанный решатель эффективно распараллелен для машин с общей памятью с помощью директив OpenMP.
Перспективы применения вычислений на GPU. Разработка оптимального для графических вычислительных устройств параллельного алгоритма для реализации разложения Холецкого с нуля или внедрением директив OpenACC потребовала бы много ресурсов [5]. Поэтому было решено сосредоточиться на перенаправлении наиболее ресурсоемких вычислений на GPU и обойтись минимальными изменениями кода. Решатель использует интерфейс BLAS (Basic Linear Algebra Subprograms), который является де-факто стандартом интерфейса программирования приложений для создания библиотек, выполняющих основные операции линейной алгебры, такие как умножение векторов и матриц. В то же время существует библиотека cuBLAS, которая реализует тот же интерфейс, адаптирована для GPU и входит в стандартный комплект разработки CUDA Toolkit, поставляемый компанией nVidia [6, 7]. Таким образом, можно динамически подключить две библиотеки, оптимизированные для разных архитектур. Для внедрения cuBLAS в работу решателя потребовалось разработать набор функций, которые устраняют отличия в обращении к BLAS и cuBLAS (например, в передаваемых типах данных) и корректно осуществляют передачу данных между вычислительными мощностями [8].
Профилирование алгоритма показало, что операция умножения матриц (GEMM) занимает 80...85 % от времени факторизации. Используя GPU возможно значительно уменьшить время выполнения умножений и, следовательно, серьезно сократить время работы решателя.
Однако особенности работы GPU затрудняют применение данного подхода. Так, перенаправление абсолютно всех операций умножения матриц не ускорит, а замедлит работу решателя, поскольку будет затрачено слишком много времени на переписывание данных. Поэтому необходимо было определить критерии направления операции на GPU. Отдельный интерес представляет поиск максимально быстрого способа копирования данных на GPU и обратно. Подготовка данных для GPU происходит во многих параллельных потоках на CPU, и при их передаче образуется очередь, которая практически сводит на нет распараллеливание OpenMP. Оптимальный баланс, полученный на определенном примере и конфигурации оборудования, может быть нарушен при изменении конфигурации или задачи. Способы решения этих проблем будут описаны ниже.
Работа с cuBLAS. В ходе исследования были разработаны тестовые программы сравнения скорости умножения матриц. По результатам их выполнения были определены размеры массивов, превышение которых могло сделать выгодным использование GPU. Очевидно, чем выше класс используемого GPU, тем ниже находится этот порог, тем быстрее выполняются сами вычисления и уменьшается время работы решателя. Даже с учетом копирования данных на GPU и обратно для матриц, содержащих десятки тысяч элементов, умножение матриц на GPU может выполняться на один-два порядка быстрее, чем при использовании многопоточных CPU, устанавливаемых в настольных ПК.
Любое обращение к GPU требует достаточно много времени, поэтому в первую очередь внимание было уделено работе с памятью. Было установлено, что выделять и освобождать участок памяти на GPU для каждого набора переменных менее эффективно, чем при инициализации устройства выделить
ВЕСТНИК
МГСУ-
11/2013
под указатели память, размер которой сопоставим с доступной глобальной памятью на конкретном GPU. В этом случае копирование матриц производится каждый раз в один и тот же участок памяти без его освобождения. Освобождение памяти производится по завершении работы устройства. Также установлено, что при необходимости выполнения операций с подматрицами передаваемых матриц выгоднее переписать матрицу полностью, а не только нужную для вычислений часть, поскольку при этом не тратится лишнее время на вызов копирования.
В многопоточном режиме образование очередей заданий для GPU замедляет работу решателя, поскольку стандартными способами отправить новое задание на GPU можно только после завершения исполнения текущего. Быстрое умножение не перекрывает времени ожидания и копирования, и уменьшить время работы решателя не удается. В случае, если в алгоритме распределения прописать запрет на формирование заданий для GPU, когда GPU уже занят, можно добиться незначительного ускорения. Эффект от работы GPU будет нивелирован относительно медленной работой ядер CPU с оставшимися в их распоряжении большими объемами информации, но общее время работы все же уменьшится. Было установлено, что применение такого алгоритма позволяет сократить время работы решателя вдвое в однопоточном режиме (без использования OpenMP) и на 20 % в многопоточном режиме.
Запуск профилировщика GPU для тестового примера умножения матриц, аналог которого был встроен в решатель, показал, что загрузить видеокарту должным образом не получается, так как слишком мало ядер участвует в вычислениях и соотношение времени вычислений к общему времени работы GPU незначительно (рис. 1). Несмотря на экономию времени за счет выделения и освобождения памяти, копирование выполнялось слишком долго. Поэтому был сделан вывод о неэффективности библиотеки, формирующей и передающей задания для GPU, и необходимости ее усовершенствования. Для получения приемлемого результата умножение матриц на GPU должно выполняться гораздо быстрее.
Рис. 1. Профилирование умножения матриц на GPU без оптимизации
Существуют методы распараллеливания операций на самой GPU [9, 10]. Было использовано асинхронное копирование матриц. Благодаря cuda streams удается выполнять на видеокарте несколько операций умножения практически одновременно: каждый omp thread создает свой поток на GPU и возникает параллельность выполнения некоторых команд. Так как программа после отправки задания на GPU продолжает выполнение команд на CPU, количество одновре-
менно работающих потоков на GPU может превышать количество omp threads. Чтобы избежать переполнения памяти GPU, на некоторых видеокартах требуется ограничивать количество cuda streams и направлять лишние задания на CPU.
С целью улучшения взаимодействия между CPU и GPU была применена pinned-память — прикрепленный буфер в оперативной памяти, который очень быстро может быть помещен в память GPU. Каждая матрица, которую нужно записать на GPU, сначала помещается в pinned-массив, а затем асинхронно копируется на GPU. Тестовый пример показал, что видеокарта стала простаивать гораздо реже (рис. 2), а скорость выполнения умножения, включая копирование матриц, увеличилась примерно в 2 раза по сравнению реализацией cublasDgemm без применения оптимизации (рис. 3).
939 ms 939,5 ms 940 ms MO.Srns 941 mi 941,5 ms 942 ms «3.5
S Process 5612 В Thread 1472
Runtime API
Dr»ff API В Thread 5324
Runtime API cudsStreamSyn chronize
ffl Thread 3136 ffl Thread 5300
Profiling Overhead Buffer Flush 11ДЯ u
В PJ GeForce GTS 450 В Content KCUOA) V MemCpy IHtoD) V MemCpy (DtoH) — ■ Л
S Compute FSf. 1 ДТп ijWÜÜ v... 1 void fefmiDqe mm v... I void ferr niDqemni 1/. . I void fermiDaemm ra
S Streams Stream2
Stream 7 ЯЯЯЯВШ8ЯЯ &Ш Л
StrearaS нал ими
Stream 10 HB ЕЕИ5ЕШЕ mm
Stream 13 ■ niDg«mm_ gg
Рис. 2. Профилирование умножения матриц на GPU с использованием асинхронного копирования и pinned-памяти
Рис. 3. Сравнение времени выполнения умножения матриц на GPU различными способами
Для настройки алгоритма, проверки правильности и оценки эффективности его работы был подобран ряд конечно-элементных моделей проектируемых строительных объектов из практики ЦНИИСК имени В.А. Кучеренко. Численные эксперименты были проведены для различных конфигураций оборудования. Результаты тестирования решения — время расчета для каждой модели в различных
ВЕСТНИК 11/2013
МГСУ_11/2013
режимах работы приведены в таблице. Все данные получены для двойной точности вычислений. Предполагается, что данный решатель будет использоваться в программных комплексах, при этом значительных затрат на новую технику со стороны компаний-пользователей не потребуется. Тестирование данного решателя производилось на оборудовании низкого и среднего ценового диапазона.
Результаты тестирования (конфигурация 1: CPU Intel Core i7 3400 MHz (4 ядра, 8 потоков), GPU nVidia GeForce GTX 550Ti; конфигурация 2: 2x Intel Xeon X5680 3300 MHz (6 ядер, 12 потоков), GPU nVidia Tesla M2090)
Количество степеней свободы Время выполнения факторизации, с
Номер Конфигурация 1 Конфигурация 2
задачи CPU CPU+ GPU Ускорение CPU CPU+ GPU Ускорение
1 921 600 64 36 1,78 59 25 2,36
2 2263 338 127 76 1,67 115 44 2,61
3 2 428 323 108 64 1,69 99 37 2,68
4 2545314 267 128 2,09 141 53 2,66
Для некоторых задач добиться ускорения работы решателя не удается в силу особенностей решения СЛАУ, например из-за низкого заполнения множителей разложения Холецкого. Рассматривается вариант написания собственного ядра для перемножения небольших матриц в первую очередь из-за непредсказуемого времени работы функций cuBLAS на небольших объемах данных (см. рис. 3). Возможно как варьировать способы копирования в зависимости от размеров входящих матриц, так и генерировать сами матрицы непосредственно на GPU. Другое направление для изучения — использование нескольких графических процессоров одновременно. Также необходимо стремиться к максимальному использованию пропускной способности канала передачи данных между вычислительными мощностями.
Заключение. При использовании графического ускорителя удалось уменьшить время работы решателя на 40.. .60 %, при этом существенных изменений кода не потребовалось и серьезные требования к оборудованию не предъявлялись. Дальнейшее развитие представленного подхода видится в использовании нескольких графических ускорителей и применении более эффективных алгоритмов умножения матриц. После тестирования в различных условиях решатель может использоваться в расчетных программных комплексах.
Библиографический список
1. Cullinan C., Wyant C., Frattesi T. Computing Performance Benchmarks among CPU, GPU, and FPGA. Available at: http://www.wpi.edu/. Accessed: Mar 26, 2013.
2. General-Purpose Computation on Graphics Hardware. Available at: http://www. gpgpu.org/. Accessed: Mar 26, 2013.
3. Реализация методов расчета для большеразмерных задач строительной механики в программном комплексе STARK ES / В.Л. Якушев, Ю.Н. Жук, В.Н. Симбиркин, А.В. Филимонов // Вестник кибернетики. 2011. № 10. С. 109—116.
4. Якушев В.Л., Симбиркин В.Н., Филимонов А.В. Решение большеразмерных задач строительной механики методом конечных элементов в программном комплексе
STARK ES // Теория и практика расчета зданий, сооружений и элементов конструкций. Аналитические и численные методы : Сб. тр. междунар. науч.-практ. конф. М. : МГСУ, 2010. С. 516—526.
5. Hogg J.D., Reid J.K., Scott J.A. Design of a Multicore Sparse Cholesky Factorization Using DAGs: STFC Technical Report RAL-TR-2009-027. Science and Technology Facilities Council, 2009.
6. Sanders J., Kandrot E. CUDA by Example: an Introduction to General Purpose GPU Programming. Available at: http://developer.nvidia.com/. Accessed: Mar 26, 2013.
7. CUBLAS Library User Guide. NVIDIA Corporation. Available at http://developer. nvidia.com/. Accessed: Mar 26, 2013.
8. Tan G., Li L., Triechle S., Phillips E., Bao Y., Sun N. Fast implementation of DGEMM on Fermi GPU // Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis, ACM, New York, NY, USA, pp. 35:1—35:11.
9. CUDA C Programming Guide. Available at: http://docs.nvidia.com/. Accessed: Mar 26, 2013.
10. CUDA C Best Practices Guide. Available at: http://docs.nvidia.com/. Accessed: Mar 26, 2013.
Поступила в редакцию в мае 2013 г.
Об авторах: Якушев Владимир Лаврентьевич — доктор физико-математических наук, профессор, главный научный сотрудник отдела информатизации, математического моделирования и управления, ФГБУН Институт автоматизации проектирования Российской академии наук (ФГБУН ИАП РАН), 123056, г. Москва, ул. 2-я Брестская, д. 19/18, 8(499)250-08-92, [email protected];
Филимонов Антон Валерьевич — научный сотрудник отдела информатизации, математического моделирования и управления, ФГБУН Институт автоматизации проектирования Российской академии наук (ФГБУН ИАП РАН), 123056, г. Москва, ул. 2-я Брестская, д. 19/18, 8(499)250-58-60, [email protected];
Солдатов Павел Юрьевич — аспирант отдела информатизации, математического моделирования и управления, ФГБУН Институт автоматизации проектирования Российской академии наук (ФГБУН ИАП РАН), 123056, г. Москва, ул. 2-я Брестская, д. 19/18, 8(499)250-58-60, [email protected].
Для цитирования: Якушев В.Л., Филимонов А.В., Солдатов П.Ю. Возможности применения вычислений на графических ускорителях при расчетах сооружений // Вестник МГСУ 2013. № 11. С. 256—262.
V.L. Yakushev, A.V. Filimonov, P.Yu. Soldatov
POSSIBILITIES OF GPU USE IN THE PROCESS OF CONSTRUCTION CALCULATIONS
Computer aided design (CAD) and computer aided engineering (CAE) systems are significant tools in modern construction industry. More computations have to be run and handled to achieve the desired accuracy for more detailed models. Therefore, solver of sparse systems of linear algebraic equations is an important and time-consuming part of such software. Raising productivity of conventional clusters has become more complicated. Graphics processor units (GPU) may reach many folds higher productivity than standard CPU, especially in massive data operations. The paper suggests simple and productive technique of speeding up existing solver by implementation of GPU computing.
The solver performs Cholesky factorization and is effectively omp-parallelized. Profiling indicated that matrix multiplications executed by standard BLAS library took up to eighty per cent of solver time running. Hence it was possible to distribute tasks between CPU and GPU dynamically by slight code modifications using standard BLAS interface.
Proper matrices sizes were identified as data transfer between CPU and GPU. Data transfer takes too long, and multiplication of smaller matrices on GPU would slow down the solver. Allocation of pinned memory improved cooperation between processing units, while enabling the asynchronous transfer increased the load of the GPU. Cuda streams
BECTHMK 11/2013
MfCY_11/2013
were associated with every omp thread to avoid queues of GPU calls. All the settings may be considerably different depending on hardware and software available, so tests were run on multiple computer configurations.
Up to date the factorization time running is reduced by forty to sixty per cent. In order to further enhance the application, it is planned to implement multi-GPU and optimize matrix multiplication algorithm.
Key words: GPU, parallel computing, systems of linear algebraic equations, Cho-lesky factorization, computer aided engineering.
References
1. Cullinan C., Wyant C., Frattesi T. Computing Performance Benchmarks among CPU, GPU, and FPGA. Available at: http://www.wpi.edu/. Date of access: 26.03.2013.
2. General-Purpose Computation on Graphics Hardware. Available at: http://www.gpgpu. org/. Date of access: 26.03.2013.
3. Yakushev V.L., Zhuk Yu.N., Simbirkin V.N., Filimonov A.V. Realizatsiya metodov rascheta dlya bol'sherazmernykh zadach stroitel'noy mekhaniki v programmnom komplekse STARK ES. [Implementation of Calculation Methods for Major Tasks in Structural Mechanics Using STARK ES Software]. Vestnik kibernetiki [The Bulletin of Cybernetics]. 2011, no. 10, pp. 109—116.
4. Yakushev V.L., Simbirkin V.N., Filimonov A.V. Reshenie bol'sherazmernykh zadach stroitel'noy mekhaniki metodom konechnykh elementov v programmnom komplekse STARK ES [Solution of Major Tasks in Structural Mechanics Using FE Method in STARK ES Software]. Teoriya i praktika rascheta zdaniy, sooruzheniy i elementov konstruktsiy. Analiticheskie i chislennye metody: Sbornik trudov mezhdunarodnoy nauchno-prakticheskoy konferentsii [Theory and Practice of Computations for Buildings, Structures and Structural Elements. Analytic and Numerical Methods: Proceedings of International Science-and-Practice Conference]. Moscow, MGSU Publ., 2010, pp. 516—526.
5. Hogg J.D., Reid J.K., Scott J.A. Design of a Multicore Sparse Cholesky Factorization Using DAGs. STFC Technical Report RAL-TR-2009-027. Science and Technology Facilities Council, 2009.
6. Sanders J., Kandrot E. CUDA by Example: an Introduction to General Purpose GPU Programming. Available at: http://developer.nvidia.com. Date of access: 26.03.2013.
7. CUBLAS Library User Guide. NVIDIA Corporation. Available at: http://developer.nvid-ia.com. Date of access: 26.03.2013.
8. Tan G., Li L., Triechle S., Phillips E., Bao Y., Sun N. Fast implementation of DGEMM on Fermi GPU. Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis. ACM New York, NY, USA , pp. 35:1—35:11.
9. CUDA C Programming Guide. Available at: http://docs.nvidia.com. Date of access: 26.03.2013.
10. CUDA C Best Practices Guide. Available at: http://docs.nvidia.com. Date of access: 26.03.2013.
About the authors: Yakushev Vladimir Lavrent'evich — Doctor of Physical and Mathematical Sciences, Professor, Chief Research Associate, Department of Informational Support, Mathematic Modelling and Management, Institute for Computer Aided Design of Russian Academy of Sciences (ICAD RAS), 19/18, 2-nd Brestskaya str., Moscow, Russian Federation; [email protected]; +7 (499) 250-08-92;
Filimonov Anton Valer'evich — Research Associate, Department of Informational Support, Mathematic Modelling and Management, Institute for Computer Aided Design of Russian Academy of Sciences (ICAD RAS), 19/18, 2-nd Brestskaya str., Moscow, Russian Federation; [email protected]; +7 (499) 250-58-60;
Soldatov Pavel Yur'evich — postgraduate student, Department of Informational Support, Mathematic Modelling and Managemen, Institute for Computer Aided Design of Russian Academy of Sciences (ICAD RAS), 19/18, 2-nd Brestskaya str., Moscow, Russian Federation; [email protected]; +7 (499) 250-58-60.
For citation: Yakushev V.L., Filimonov A.V., Soldatov P.Yu. Vozmozhnosti primeneniya vy-chisleniy na graficheskikh uskoritelyakh pri raschetakh sooruzheniy [Possibilities of Gpu Use in the Process of Construction Calculations]. Vestnik MGSU [Proceedings of Moscow State University of Civil Engineering]. 2013, no. 11, pp. 256—262.