ВЕстниК
МГСУ
информационные системы и логистика в строительстве
УДК 519.6 + 004.43
А.В. Сидоров
ФГБОУ ВПО «МГСУ»
GPU-ТЕХНОЛОГИИ В ПАРАЛЛЕЛЬНЫХ РЕШАТЕЛЯХ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
Рассмотрены и проанализированы существующие свободно распространяемые решатели, использующие для вычислений графическое устройство компьютера. Цель этого анализа — исследование возможностей и ограничений подобных параллельных решателей прикладных задач, сводящихся к решению больших систем линейных алгебраических уравнений. Такие задачи, в основном из области теории сооружений, решаются в Научно-образовательном центре компьютерного моделирования уникальных зданий, сооружений и комплексов (НОЦ КМ) ФГБОУ ВПО «Московский государственный строительный университет» и в Научно-исследовательском центре СтаДиО. Изучены новые возможности по использованию GPU в пакете программ PETSc, а также проведены сравнительные тесты с использованием и без использования GPU. Исследована библиотека программ CUSP, которая специально создавалась для решения задач линейной алгебры при помощи графического устройства компьютера. Рассмотрен новый проект MAGMA, который является аналогом LAPACK для использования на GPU. Исследования проводились в НОЦ КМ МГСУ и на кафедре прикладной математики Рурского технического университета в Бохуме (Германия).
Ключевые слова: задачи линейной алгебры, GPGPU (General-purpose computing on graphics processing units), CUDA, параллельные решатели, библиотеки: PETSc, CUSP, MAGMA.
цель проведенного исследования — обзор существующих современных свободно распространяемых решателей, использующих для вычисления ресурсы графического устройства, определение, насколько быстро они могут решать задачи, возникающие при использовании конечно-элементного программного комплекса СтаДиО [i], и что необходимо для организации собственного простого решения, основанного на платформе графического устройства компьютера.
nVidia CUDA. CUDA [2] позволяют получить разработчикам доступ к памяти и набору виртуальных инструкций параллельных вычислительных элементов графического устройства, поддерживающего произвольные расчеты на видеокартах. При использовании CUDA новейшие графические устройства NVIDIA становятся доступными для вычислений подобно тем, которые выполняются на центральном процессоре компьютера. но в отличие от центрального процессора у графического устройства параллельная обработка информации основана на медленном выполнении большого количества одновременных потоков обработки информации, а не на выполнении каждого отдельного потока с высокой скоростью. такой подход вычисления обычных задач на графическом устройстве называется GPGPU (GPU общего назначения) [3].
PETSc. PETSc [4] — набор программ и структур данных для масштабируемых параллельных расчетов, предназначенных к использованию в научных приложениях, основанных на решении дифференциальных уравнений в частных производных. Этот набор программ поддерживает стандарт параллелизации MPI [5], POSIX-реализацию потоков для компьютеров с общей памятью, и графические устройства NVIDIA, а также комбинацию POSIX-реализации потоков для компьютеров с MPI-распределенной
ВЕСТНИК 5/2012
памятью и MPI-GPU параллелизацией. Пакет PETSc предоставляет свои собственные (непосредственно реализованные в нем) итерационные методы, «свои» предобуслов-ливатели, а также позволяет использовать «сторонние» прямые методы.
Итерационные методы, реализованные в PETSc. В пакете PETSc реализованы итерационные методы Ричардсона, Чебышева, метод сопряженных градиентов (Conjugate Gradients), метод минимальных остатков (Minimum Residual) и обобщенный метод минимальных остатков (Generalized Minimal Residual method), устойчивая версия метода квадратичных двусопряженных градиентов (Stabilized version of BiConjugate Gradient Squared), метод квазиминимальных остатков с транспонированием (a transpose free Quasi Minimal Residual), метод сопряженных остатков (Conjugate Residuals) и обобщенный метод сопряженных остатков (Generalized Conjugate Residual), метод квадратичных сопряженных градиентов (Conjugate Gradient Squared), метод двусопряженных градиентов (Biconjugate gradient method), гибкий обобщенный метод минимальных остатков (Flexible Generalized Minimal Residual), метод для решения разреженных систем линейных уравнений (Sparse Linear Equations) и для решения разреженных систем линейных уравнений с симметричной матрицей коэффициентов при неизвестных (Sparse Symmetric Equations), метод наименьших квадратов (Least Squares), с сведением к ошибке предыдущих итераций (GMRES with approximations to the error from previous restart cycles), неявный метод сопряженных градиентов (Conjugate Gradient without explicitly forming).
Предобусловливатели, реализованные в PETSc: метод Якоби (Jacobi), метод последовательной верхней релаксации (Successive over Relaxation), блочный Якоби (Block Jacobi, Point block Jacobi и Point block SOR), «весовая» модификация Шварца (additive Schwarz), неполной факторизации (Incomplete factorizations), неполной факторизации Холецкого (Incomplete Cholesky factorization), многосеточный метод с пре-добусловливанием (Multigrid preconditioning), с выравниванием (Balancing Neumann-Neumann).
Прямые решатели, реализованные в PETSc: LU, метод Холецкого (Cholesky), а также модификации LU, QR, XXt and XYt.
Решатели PETSc на GPU. В настоящее время имеется возможность работы с алгебраическими решателями PETSc на графических устройствах nVIDIA. Иной раз это обеспечивает альтернативную технологию высокопроизводительного низкостоящего решения.
При работе с GPU PETSc берет за основу шаблонные nVIDIA, библиотеки CUSP и THRUST [6]:
NVIDIA THRUST — C++ шаблонные заголовки, схожие с частью STL;
NVIDIA CUSP — C++ шаблонные заголовки численных методов линейной алгебры.
Обработка разреженных матриц на GPU:
матрицы генерируются на CPU;
данные записываются по требованию (либо никогда не переписываются).
На GPU работают все итерационные методы, кроме улучшенной стабилизованной версии метода квадратичных двусопряженных градиентов (Improved Stabilized version of BiConjugate Gradient Squared). На GPU запускаются предобуславливатели, реализующие алгоритмы Якоби, сглаженного накапливания (smoothed agglomeration), SACUSP-POLY и разреженной приближенной инверсии (sparse approximate inverse).
Тестирование PETSc. В качестве тестовой расчетной модели выбрана расчетная схема воздушного бака для АЭС (см. рис. 1). У матрицы коэффициентов при неизвестных разрешающей системы линейных алгебраических уравнений (матрицы жесткости расчетной схемы воздушного бака) 120708 строк, 120708 столбцов и 5614198 (11 228396 в случае несимметричного представления) ненулевых элементов.
ВЕСТНИК
МГСУ
в этом тесте относительный допуск (погрешность) сходимости был взят 1e-07. Задача решалась на CPU и на связке CPU + GPU, в последовательном режиме, а также в параллельном на 2 и 4 ядрах. Были использованы две тестовые системы:
Ноутбук: Intel® Core™ i5-2410M CPU @ 2.3GHz (2 реальных ядра + 2 виртуальных), 4Gb RAM, nVidia® 540M 1 Gb (96 CUDA Cores).
Узел кластера: 2 x Intel® Xeon® X5670 @ 3.0GHZ (12 ядер), 24Gb DDR3-1333, nVidia® Tesla S2050 3 Gb GDDR5 384-bit (448 CUDA Cores).
для решения системы уравнений использовался метод сопряженных невязок с предобусловливателем (preconditioned conjugate residuals method) [7], с привлечением предобусловливателей:
предобусловливание Якоби (предобусловливание с диагональной градуировкой (diagonal scaling preconditioning));
предобусловливание SOR (алгоритм Гаусса-Зейделя с последовательной релаксацией (successive over relaxation, Gauss-Seidel)). Этот алгоритм не является действительной параллельной версией метода SOR, а реализуется как блочный метод Якоби с использованием SOR в каждом блоке.
Рис. 2. Гистограмма по времени решения тестовой задачи
Максимальный прирост, созданный графическим ускорителем ноутбука, составил 2,4-кратную прибавку в скорости, а максимальный прирост, созданный картой nVidia Tesla S2050, — 5,45-кратную прибавку.
ВЕСТНИК
5/2012
Cusp. Cusp [8] — библиотека алгоритмов и программ для решения задач линейной алгебры, учитывающих разреженность матриц, а также для вычислений графов на CUDA. Cusp обеспечивает гибкий, высокоуровневый интерфейс для работы с разреженными матрицами и для решения систем линейных алгебраических уравнений с разреженными матрицами коэффициентов.
Cusp предоставляет поддержку чтения, хранения и записи матриц в формате MatrixMarket: дает возможность использования различных итерационных методов для решения систем линейных алгебраических уравнений с разреженными матрицами. При этом поддерживаются такие итерационные методы, как: метод сопряженных градиентов CG; метод двусопряженных градиентов BiCG; устойчивый метод двусопряженных градиентов BiCGstab; обобщенный метод минимальных остатков GMRES; метод сопряженных градиентов «с мультимассами» CG-M; устойчивый метод двусопряженных градиентов «с мультимассами» BiCGstab-M. Использование предобусловливателей — это путь повышения скорости сходимости итерационных решателей. Хороший предобусловливатель ускоряет вычисление и в некотором смысле аппроксимирует обратную матрицу. Библиотека Cusp поддерживает такие предобусловливатели:
как алгебраический многосеточный предобусловливатель AMG, основанный на сглаженном агрегировании;
предобусловливатель с обратным приближением AINV; диагональный предобусловливатель.
Тестирование библиотеки CUSP. Выбранная тестовая модель Tab — это расчет достаточно простого объекта, похожего на табуретку. Размер матрицы жесткости сформированной расчетной схемы: 678 строк и 678 столбцов, в матрице 2331 (4662 в случае несимметричной версии) ненулевых элементов. относительная погрешность для выполнения условия сходимости взята равной 10-7, максимальное количество итераций назначено равным 5000. Конфигурация системы: Intel® Core™ i5-2410M CPU @ 2.3GHz, 4 Gb RAM, nVidia 540M 1 Gb (96 CUDA Cores).
Результаты, прокомментированные в табл. 1, демонстрируют, что некоторые решатели и все предобусловливатели, которые предоставляет библиотека CUSP, плохо сориентированы (плохо совместимы) на операции с матрицами коэффициентов при неизвестных (матрицами жесткости), получаемыми при помощи метода конечных элементов. Но сама библиотека заслуживает дальнейшего изучения.
Табл. 1. Результаты тестирования библиотеки CUSP
Preconditioners
Methods No Preconditioner Smoothed Aggregationalgebraic multigrid preconditioner Diagonal preconditioner
Conjugate Gradient method Successfully converged after 1760 iterations Failed to converge after 5000 iterations Failed to converge after 5000 iterations
Biconjugate Gradient method Successfully converged after 1765 iterations Failed to converge after 5000 iterations Failed to converge after 5000 iterations
Biconjugate Gradient Stabilized method Failed to converge after 5000 iterations Failed to converge after 5000 iterations Failed to converge after 5000 iterations
Generalized Minimum Residual method Failed to converge after 5000 iterations nan nan
ВЕстниК МГСУ
Библиотека MAGMA. Проект создания и развития библиотеки MAGMA (Матричная алгебра на GPU и многоядерные архитектуры) [9] ставит своей целью разработку компактной библиотеки решения задач линейной алгебры, схожей с библиотекой LAPACK, но предназначенной для разнородных/гибридных компьютерных архитектур, начиная с современных «Многоядерных+GPU» систем.
Исследования библиотеки MAGMA основываются на идее, что для решения сложных проблем, возникающих при использовании гибридной среды, оптимальные программные решения должны идти сами к гибридизации, сочетая в рамках единой структуры преимущества различных алгоритмов.
MAGMA 1.0 предполагает для использования один NVIDIA GPU, поддерживающий CUDA. Эта возможность расширяется версией 0.2 с добавлением поддержки графических устройств Fermi.
В библиотеку входят программы, реализующие следующие алгоритмы: алгоритмы LU, QR, а также алгоритм факторизации Холецкого, с арифметическими действиями как над действительными, так и над комплексными числами;
алгоритм Эссенберга (Hessenberg), двух- и трехдиагональное исключения, реализующие арифметические действия как над действительными, так и над комплексными числами;
линейные решатели на основе алгоритмов LU, QR и алгоритма факторизации Холецкого с арифметическими действиями как над действительными, так и над комплексными числами;
решатели для задач о собственных и сингулярных значениях с арифметическими действиями как над действительными, так и над комплексными числами;
решатели для обобщенной задачи о собственных значениях, определенной по Эрмиту;
решатели на основе алгоритмов LU, QR и алгоритма факторизации Холецкого со смешанной оценкой сходимости, с арифметическими действиями как над действительными, так и над комплексными числами;
алгоритмы MAGMA BLAS с арифметическими действиями над действительными числами с одинарной и двойной точностью, в том числе алгоритмы gemm, gemv, symv, and trsm.
Тестирование библиотеки MAGMA. Для тестирования взята задача DGESV (эталонный тест LAPACK). В этой тестовой задаче с двойной точностью решаются системы уравнений A * X = B, где A — это матрица размером M*N, а X и B — матрицы размером N^NRHS.
1*10-6 ■ (2 MFLOPS =-
* N + 2 * N
3
(CPU seconds)
GPU Результаты на системе Intel® Core™ i5-2410M CPU @ 2.3GHz, 4 Gb RAM, nVidia 540M 1 Gb (96 CUDA Cores):
Табл. 2. Результаты MAGMA теста DGESV на тестовой системе
N NRHS GFlop/s II b-Ax II / IIAII
1024 100 8.86 2.819232e-15
2048 100 13.69 2.918877e-15
3072 100 16.48 3.332595e-15
4032 100 17.37 3.070450e-14
5184 100 18.01 1.191584e-14
6016 100 18.36 1.037878e-14
7040 100 18.61 2.298301e-14
8064 100 18.94 7.340451e-15
9088 100 19.08 2.057905e-15
10112 100 19.20 3.002565e-15
ВЕСТНИК
5/2012
Результаты, показанные на рис. 3, получены на одном процессоре одного из вычислительных узлов кластера Но:йтап2 (код является однопоточным и статично связанным).
Double Precision General Matrix Solve -- DGESV
-Г
T-
T
T
T
AMD ACML -GotoBLAS 4- netlib LAPAGK -ATLAS ■ Intel MKL netlib BLAS + netlib LAPAGK ■
П 10ОО 2000 3000 4000 5000 6000 7000 8000 9000 1 0000
N
Рис. 3. Диаграмма теста DGESV на одном процессоре одного из вычислительных узлов кластера Нойшап2
Этот тест показывает, что GPU-параллелизация является хорошим направлением в ускорении решения системы линейных алгебраических уравнений.
Библиографический список
1. Научно-исследовательский центр СтаДиО. Режим доступа: www.stadyo.ru/ Дата обращения: 16.04.12.
2. CUDA Zone. Режим доступа: www.nvidia.ru/object/cuda_home_new_ru.html. Дата обращения: 16.04.12.
3. GPGPU. Режим доступа: ru.wikipedia.org/wiki/GPGPU. Дата обращения: 16.04.12.
4. PETSc: Home Page. Режим доступа: www.mcs.anl.gov/petsc/ Дата обращения: 16.04.12.
5. Message Passing Interface. Режим доступа: ru.wikipedia.org/wiki/Message_Passing_ Interface. Дата обращения: 16.04.12.
6. thrust — Code at the speed of light. Режим доступа: code.google.com/p/thrust/. Дата обращения: 16.04.12.
7. Methods of Conjugate Gradients for Solving Linear Systems, Magnus R. Hestenes and Eduard Stiefel, Journal of Research of the National Bureau of Standards, vol. 49, no. 6, December 1952, Research Paper 2379, pp. 409—436.
8. cusp-library — Generic Parallel Algorithms for Sparse Matrix and Graph Computations. Режим доступа: code.google.com/p/cusp-library/. Дата обращения: 16.04.12.
9. MAGMA. Режим доступа: icl.cs.utk.edu/magma Дата обращения: 16.04.12.
10. Belostotsky A.M., Vasilyev S.L., Sidorov A.V. Solving of large algebraic problems by parallel algorithms. Leading program packages features and own investigation. International Journal for Computational Civil and Structural Engineering, 2010, vol. 6, 1&2, pp. 65—66.
Поступила в редакцию в апреле 2012 г.
Об авторах: Сидоров Александр Владимирович — аспирант, младший научный сотрудник Научно-образовательного центра компьютерного моделирования уникальных зданий, со-
ВЕСТНИК
МГСУ
оружений и комплексов (НОЦ КМ), ФГБОУ ВПО «Московский государственный строительный университет» (ФГБОУ ВПО «МГСУ»), Россия, 129337, г Москва, Ярославское шоссе, д. 26, [email protected], [email protected].
Для цитирования: СидоровА.В. Gpu-технологии в параллельных решателях систем линейных алгебраических уравнений // Вестник МГСУ 2012. № 5. С. 187—193.
A.V. Sidorov
GPU TECHNOLOGIES EMBODIED IN PARALLEL SOLVERS OF LINEAR ALGEBRAIC EQUATION SYSTEMS
The author reviews existing shareware solvers that are operated by graphical computer devices. The purpose of this review is to explore the opportunities and limitations of the above parallel solvers applicable for resolution of linear algebraic problems that arise at Research and Educational Centre of Computer Modeling at MSUCE, and Research and Engineering Centre STADYO. The author has explored new applications of the GPU in the PETSc suite and compared them with the results generated absent of the GPU. The research is performed within the CUSP library developed to resolve the problems of linear algebra through the application of GPU. The author has also reviewed the new MAGMA project which is analogous to LAPACK for the GPU.
Key words: linear algebra problems, GPGPU (General-purpose computing on graphics processing units), CUDA, parallel solvers, libraries: PETSc, CUSP, and MAGMA.
References
1. StaDyO Scientific and Research Centre, website available at: http://www.stadyo.ru. Date of access: 16.04.12.
2. CUDA Zone. Website available at: http://www.nvidia.ru/object/cuda_home_new_ru.html. Date of access: 16.04.12.
3. GPGPU. Website available at: http://ru.wikipedia.org/wiki/GPGPU. Date of access: 16.04.12.
4. PETSc. Website available at: http://www.mcs.anl.gov/petsc. Date of access: 16.04.12.
5. Message Passing Interface. Website available at: http://ru.wikipedia.org/wiki/Message_Passing_ Interface. Date of access: 16.04.12.
6. Thrust Code at the Speed of Light. Website available at: http://code.google.com/p/thrust. Date of access: 16.04.12.
7. Magnus R. Hestenes and Eduard Stiefel. Methods of Conjugate Gradients for Solving Linear Systems. Journal of Research of the National Bureau of Standards, no. 6, vol. 49, December 1952. Research Paper 2379, pp. 409—436.
8. cusp-library — Generic Parallel Algorithms for Sparse Matrix and Graph Computations. Website available at: http://code.google.com/p/cusp-library. Date of access: 16.04.12.
9. MAGMA. Website available at: http://icl.cs.utk.edu/magma. Date of access: 16.04.12.
10. Belostotsky A.M., Vasilyev S.L., Sidorov A.V. Solving of Large Algebraic Problems by Parallel Algorithms. Leading Program Packages Features and Own Investigation. International Journal for Computational Civil and Structural Engineering, no.1 & 2, vol. 6, 2010, pp. 65—66.
About the author: Sidorov Alexander Vladimirovich — postgraduate student, Junior Researcher, Research and Educational Centre of Computer Modeling, Moscow State University of Civil Engineering (MSUCE), 26 Yaroslavskoe shosse, Moscow, 129337, Russian Federation, [email protected].
For citation: Sidorov A.V. Gpu-tekhnologii v parallel'nykh reshatelyakh sistem lineynykh algebraicheskikh uravneniy [GPU Technologies Embodied in Parallel Solvers of Linear Algebraic Equation Systems]. Vestnik MGSU [Proceedings of Moscow State University of Civil Engineering]. 2012, no. 5, pp. 187—193.