УДК 658.51
Л. А. Зинченко, В. А. Шахнов
ОСОБЕННОСТИ ПРИМЕНЕНИЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ В САПР НАНОИНЖЕНЕРИИ
Обсуждены проблемы использования современных классических вычислительных систем при проектировании в наноинженерии. Показана возможность применения трех подходов к современным классическим вычислительным системам в наноинженерии. Рассмотрены достоинства и недостатки указанных подходов.
E-mail: [email protected]; [email protected]
Ключевые слова: наноинженерия, параллельные вычислительные системы, суперкомпьютеры, моделирование.
Развитие вычислительной техники привело к широкому использованию высокопроизводительных вычислительных систем в инженерной деятельности, а в настоящее время и в наноинженерии. Наноинженерия [1] — инженерная деятельность человека, связанная с нано-размерными объектами и с объектами, характеризуемыми размерными рядами в десятки или единицы нанометров, создаваемыми методами нанотехнологий.
В наноинженерии в общем случае используются модели всех уровней иерархии [1]: классические и полуклассические, основанные на квантово-механических подходах. Последняя группа базируется на использовании квантово-механических моделей для описания отдельных электронов и групп электронов [2], позволяющих корректно предсказывать свойства наноматериалов и наносистем без проведения дорогостоящих экспериментальных исследований. В частности, модели молекулярной динамики на первых порах нашли широкое применение в различных областях научных исследований, включая, например, физику твердого тела, химию, биологию и нанотехнологии [2]. Однако в связи с высокими вычислительными затратами такие модели на практике, например в наноинженерии, применяются только для объектов, содержащих не более нескольких сотен атомов. Возрастающие потребности в исследованиях объектов больших размеров приводят к необходимости использования высокопроизводительных вычислительных систем в наноинженерной деятельности.
В настоящее время в наноинженерии применяются компьютеры с многоядерными процессорами, кластеры и графические процессоры GPU. Быстрый рост их вычислительных возможностей позволяет решать сложные задачи проектирования наноматериалов и наносистем с меньшими временными затратами.
Необходимо отметить, что высокопроизводительные вычислительные системы [3, 4] пригодны далеко не для всяких задач наноинже-нерии.
Программы, планируемые для применения на параллельных вычислительных системах, зачастую нужно компилировать для архитектуры конкретной вычислительной системы. Использование библиотек MPI, pThreads, OpenMP, Thread-Building Blocks [3-7] значительно упрощает разработку параллельных приложений. Однако заставить получающийся код быстро работать довольно трудно, для этого приходится серьезно модифицировать сам алгоритм.
Аналогично тому как формулы Крамера (традиционно применяемые при решении систем линейных алгебраических уравнений), несмотря на то что они являются математически правильными, оказываются неэффективными при использовании для решения на ЭВМ, алгоритмы, ориентированные на использование однопроцессорных вычислительных систем, неэффективны при их применении в высокопроизводительных вычислительных системах. В частности, для многих эффективных прямых методов решения систем алгебраических уравнений [8] не найдены эффективные параллельные аналоги. Вместе с тем для этих целей успешно реализуются легко распараллеливаемые итерационные алгоритмы, уступающие прямым методам, если речь идет о решении на одном процессоре, но выигрывающие у последних благодаря большей степени внутреннего параллелизма на параллельных системах.
Известно, что один и тот же численный метод может быть реализован множеством алгоритмов, являющихся математически эквивалентными, но отличающихся вычислительными свойствами [3, 4]. В вычислительных системах параллельной архитектуры эффективная реализация алгоритма достигается при параллельном выполнении отдельных операций. Однако одновременно могут выполняться только независимые операции. Это приводит к тому, что пользователю высокопроизводительной вычислительной системы становятся недоступными многие методы моделирования, традиционно применяемые в наноинженерии, ориентированные на однопроцессорные вычислительные системы. Применение других методов зачастую требует модификации текущих методик применения вычислительных систем в наноинженерии.
В настоящее время можно выделить три подхода к применению высокопроизводительных вычислительных систем в наноинженерии. Первый ориентирован на реализацию алгоритмов, допускающих использование в параллельных вычислительных структурах. Отличительным свойством применяемых в этом случае алгоритмов является малая доля последовательных вычислений.
Второй подход состоит в разработке новых алгоритмов для решения задач наноинженерии. При этом алгоритмы характеризуются полиномиальной вычислительной сложностью (менее 3). Это позволяет уменьшить вычислительные затраты при решении различных задач наноинженерии.
Третий подход состоит в распараллеливании существующего последовательного программного обеспечения для наноинженерного приложения при использовании в параллельных вычислительных системах. Однако использование алгоритмов, первоначально ориентированных на последовательные вычисления, приводит к малоэффективному использованию имеющихся вычислительных ресурсов.
Проведем сравнительный анализ указанных подходов, позволяющих использовать современные вычислительные системы в наноинже-нерии, и на конкретных примерах проиллюстрируем их достоинства и недостатки.
1. Программное обеспечение, ориентированное на использование в высокопроизводительных вычислительных системах.
В подходе, определенном как создание наноинженерного программного обеспечения для высокопроизводительных вычислительных систем, реализующего известные параллельные алгоритмы для решения задач наноинженерии, можно выделить два основных направления. Первое связано с разработкой программного обеспечения для конкретной вычислительной системы. В связи с этим то или иное решение по архитектуре разработанного программного обеспечения принималось в целях достижения максимальной производительности конкретной вычислительной системы. Примером такого программного обеспечения является комплекс QBox [9].
Программный комплекс (ПК) Qbox, разработанный в Ливермор-ской национальной лаборатории, предназначен для исследования различных систем на основе моделей молекулярной динамики на базовых принципах. В текущую версию включены алгоритмы, реализующие модели, основанные на молекулярной динамике Борна-Оппенгеймера и молекулярной динамике Кар-Паринелло.
Отличительными особенностями ПК Qbox являются:
• использование языка C++ и библиотеки MPI в качестве лингвистического обеспечения;
• разработка с 2003 г. в течение трех лет специально для последующего применения на суперкомпьютере IBM Blue Gene/L, содержащем 131 072 процессора;
• поддержка текущей версией 1.50.2 масштабируемости свыше 10 000 вычислительных устройств.
При разработке были использованы следующие библиотеки:
— Parallel Basic Algebra Communication Subsystem (PBLAS), включающая в себя параллельные версии базовых процедур линейной алгебры [10];
— Scalable Linear Algebra Package (ScaLAPACK), включающая в себя решение систем линейных уравнений, обращение матриц, поиск собственных значений и т.д. [10];
— Fastest Fourier Transform in the West (FFTW) [11].
К особенностям этого программного обеспечения также следует отнести использование специального языка Extensible MarkUp Language (XML) [12] для организации операций ввода-вывода. Выбор этого языка объясняется тем, что в качестве стандарта представления данных, полученных на основе моделей молекулярной динамики на базовых принципах, организацией Quantum Simulation Organization [12] был выбран именно этот язык.
Для обеспечения высокой масштабируемости все компоненты были разделены на три категории [13], при этом архитектура была выбрана таким образом, чтобы все категории были минимально связаны. К первой категории были отнесены интерпретатор команд и пользовательский интерфейс. Во вторую категорию были включены компоненты, описывающую моделируемую физическую систему, в третью категорию — компоненты, реализующие алгоритмы моделирования.
При реализации кода была учтена архитектура суперкомпьютера IBM Blue Gene/L, отличительной чертой которого является относительно небольшой объем памяти на каждом узле. В связи с этим не все данные распределялись по всем процессорам. Была выбрана иерархическая структура организации распределения данных в целях обеспечения максимальной производительности.
Предложенные подходы позволили получить производительность в установившемся режиме на уровне 207,3 терафлопс при исполнении ПК Qbox [9]. Однако дальнейшее развитие ПК Qbox сдерживает кубическая вычислительная сложность алгоритмов, используемых при разработке этого программного комплекса.
Другое направление в рассматриваемом подходе связано с программной реализацией известных параллельных алгоритмов таким образом, чтобы разработанное программное обеспечение могло быть использовано в различных вычислительных системах. Примером такого программного обеспечения является пакет NWChem [14].
Пакет NWChem, разработанный в Северо-западной тихоокеанской национальной лаборатории министерства энергетики США, позволяет выполнить моделирование на квантово-механическом уровне, а также использовать классическую молекулярную динамику. Этот ПК поддерживает также возможность многомасштабного моделирования с использованием классических и квантово-механических моделей.
В текущей версии 5.1 ПК NWChem позволяет решать уравнения Хартри-Фока [2], уравнения функционала плотности DFT [2], а также выполнять многомасштабное моделирование на основе гибридных подходов [2].
Следует отметить, что ПК NWChem позволяет моделировать характеристики наносистем, используя вычислительные системы как с последовательной, так и с параллельной архитектурой. Для расчетов на параллельных вычислительных системах кластерного типа в ПК NWChem предусмотрено использование библиотек TCGMSG и MPI [3,4]. Поддерживаются также вычисления на суперкомпьютерах IBM, Cray, а также на компьютерах, использующих операционную систему Windows.
Особенностями ПК NWChem является также то, что в качестве лингвистического обеспечения используются языки C++ и FORTRAN, а при его разработке были использованы следующие библиотеки:
— BLACS, BLAS и ее параллельная версия PBLAS [10], включающие в себя базовые процедуры линейной алгебры;
— Global Arrays [15] для нахождения собственных значений;
— LAPACK и ее параллельная версия ScaLAPACK, включающие в себя решение систем линейных уравнений, обращение матриц, поиск собственных значений и т.д. [10].
Однако требование обеспечения независимости архитектуры привело к тому, что масштабируемость этого ПК сильно зависит от выбранной архитектуры вычислительной системы. На рис. 1 приведены результаты тестов производительности ПК NWChem, выполненные на различных архитектурах [14]. Из анализа данных, приведенных на рис. 1, можно сделать вывод, что, например, для архитектуры IBM PWR4 имеется эффект низкой масштабируемости для вычислительной системы, содержащей свыше 32 процессоров.
2. Программное обеспечение, реализующее алгоритмы с малой вычислительной сложностью в высокопроизводительных вычислительных системах. Разработка и реализация новых алгоритмов, ориентированных на использование вычислительных структур с большим числом вычислительных устройств, является одной из наиболее важных проблем в задачах параллельных вычислений [3, 4]. Однако проблемы больших вычислительных затрат в наноинженерии можно решить и путем разработки новых алгоритмов, отличающихся малой вычислительной сложностью и в то же время малой долей последовательных вычислений. Примером такого подхода является разработка специального ПК MGmol [16], отличающегося линейной вычислительной сложностью выбранного алгоритма.
Рис. 1 (начало). Графики, характеризующие производительность комплекса NWChem в вычислительных системах разных архитектур для тестов SIOSI3 (а), SIOSI6 (б) и MP2 (в) [14]
Пакет MGmol (разработчик Ливерморская национальная лаборатория США) позволяет выполнить моделирование исследуемой электронной структуры наноматериалов и наносистем на базовых принципах на основе максимально локализованных функций Ванье [2], что позволяет существенно снизить вычислительные затраты на каждой итерации. На рис. 2 приведены графики, характеризующие вычислительную сложность алгоритмов, использованных в ПК Qbox и
Рис. 1 (окончание)
MGmol [16] (t — вычислительные затраты на одну итерацию, N — число молекул воды).
Отличительными особенностями ПК MGmol являются то, что в качестве лингвистического обеспечения использован язык C++, библиотека MPI и упомянутая ранее библиотека линейной алгебры ScaLAPACK. Текущая версия поддерживает масштабируемость свыше 1000 вычислительных устройств. Однако алгоритм, реализованный в ПК MGmol, оказывается эффективным для систем, содержащих более 500 атомов. Таким образом, введение ограничений привело к сужению области применения пакета в области наноинженерии.
Обобщая вышеизложенное, отметим, что требуется дальнейшее проведение фундаментальных исследований в наноинженерии в целях разработки алгоритмов, отличающих малой долей последовательных вычислений и линейной вычислительной сложностью.
3. Распараллеливание программного обеспечения в наноинженерии. За годы существования рынка программных продуктов для решения задач наноинженерии разработано большое число ПК, содержащих миллионы строк кода, реализующего сложные алгоритмы и
МО4, с
64 128 256 512 N
Рис.2. Графики, характеризующие вычислительную сложность алгоритмов, использованных в программном обеспечении Qbox (1) и MGmol (2) [16]
структуры данных. Основная часть кода создавалась в целях использования на последовательных вычислительных комплексах. Более того, значительная доля хорошо зарекомендовавших себя в наноинженерной практике алгоритмов не имеет эффективных параллельных аналогов.
Известно [3,4], что не всегда параллельный алгоритм является наилучшим выбором для последовательной системы. Аналогично сложно распараллелить последовательный алгоритм для использования на параллельных системах. Такой подход приводит к тому, что существующие комплексы программ, широко использующиеся в наноинженерии, должны быть реализованы практически заново, так как зачастую при выборе алгоритма оценки производительности выполнялись для однопроцессорных систем и для программной реализации выбирались последовательные алгоритмы.
Примером распараллеливания существующего последовательного программного обеспечения является одна из последних версий программных продуктов фирмы Cadence Design Systems, предназначенных для использования на высокопроизводительных вычислительных системах [17]. Фирма Cadence Design Systems является одним из ведущих лидеров рынка программных продуктов в области наноэлек-троники. За десятилетия существования рынка САПР электронных устройств фирмой было разработано много программных продуктов, содержащих миллионы строк кода. При переходе к использованию в параллельных вычислительных устройствах изменение всего этого множества строк кода является невозможным из-за очень большой стоимости распараллеливания.
В связи с этим для решения задачи распараллеливания были выделены фрагменты кода, которые могут быть распараллелены при отсутствии необходимости изменять весь код программного продукта [17]. Однако это приводит к тому, что остаются фрагменты с последовательным кодом, что, в свою очередь, снижает общую производительность распараллеленного программного продукта согласно закону Амдала [3, 4]. Текущие тесты повышения производительности распараллеленных программных продуктов [17] показывают, что такая стратегия позволяет получить ускорение в 2-4 раза. Это сдерживает применение распараллеленных программных продуктов на высокопроизводительных вычислительных системах.
Одним из возможных подходов к решению проблем распараллеливания последовательных приложений является применение различных методов автоматического разделения данных [18, 19]. В случае необходимости значительной переработки кода при распараллеливании программного обеспечения целесообразна разработка нового программного кода или даже разработка нового алгоритма для решения требуемой задачи.
Заключение. Использование высокопроизводительных вычислительных систем позволяет моделировать свойства наноматериалов и наносистем без проведения дорогостоящих экспериментальных исследований. В некоторых случаях свойства наноматериалов и наносистем могут быть исследованы в условиях, которые нельзя создать экспериментально. В настоящей работе рассмотрены различные подходы к использованию современных вычислительных систем в наноинженерии. Показано, что использование высокопроизводительных вычислительных систем в наноинженерии возможно на основе различных подходов, включающих в себя разработку программного обеспечения для конкретного суперкомпьютера и различных архитектур вычислительных систем, а также разработку новых параллельных алгоритмов для решения задач наноинженерии. В последнем случае требуется последующая трудоемкая реализация разработанных алгоритмов в новых программных продуктах, предназначенных для использования в высокопроизводительных вычислительных системах.
Распараллеливание существующего последовательного программного обеспечения в наноинженерии зачастую не позволяет значительно повысить производительность за счет использования компромиссных стратегий. Это приводит к необходимости дальнейшей модификации программного кода или разработке новых программных продуктов, ориентированных на использование в высокопроизводительных вычислительных системах.
Работа выполнена при финансовой поддержке РФФИ (грант 10-07-00171) и Федеральной целевой программы "Научные и научно-педагогические кадры инновационной России" на 2009-2013 годы (ГК № П2292).
СПИСОК ЛИТЕРАТУРЫ
1. Библиотека наноинженерии / Под ред. ШахноваВ.А. - М., 2008.
2. Handbook of theoretical and computational nanotechnology. - 2006. - 8000 p.
3. Воеводин В. В. Вычислительная математика и структура алгоритмов. - М.: Изд-во МГУ им. М.В. Ломоносова, 2006. - 112 с.
4. Воеводин В. В., ВоеводинВл. В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002. - 608 с.
5. http://www.intel.com
6. Информационная технология — интерфейс мобильной операционной системы (POSIX). - Издание НИИСИ РАН. - 1998, 1999.
7. http://www.openmp.org
8. Кормен Т., ЛейзерсонЧ., РивестР. Алгоритмы: построение и анализ. - М.: МЦНМО, 2000. - 960 с.
9. https://computation.llnl.gov/casc/Qbox
10. http://www.netlib.org
11. http://www.complang.tuwien.ac.at
12. http://www.quantum-simulation.org
13. G y g i F. Architecture of Qbox: a scalable first-principles molecular dynamic code / IBM J. Res. Dev., 2008. - Vol. 52. No. 1-2.
14. http://www.emsl.pnl.gov/capabilities/computing/nwchem
15. N i e p l o c h a J., P a l m e r B., T i p p a r a j u V. et al. Advances, applications and Performance of the Global Arrays Shared Memory Programming Toolkit // International Journal of High Performance Computing Applications. - 2006. - Vol. 20. -No. 2. - P. 203-231.
16. Fattebert J. -L., G y g i F. Linear scaling first-principles molecular dynamics with plane-waves accuracy // Phys. Rev. B. - 2006. - Vol. 73. - P. 115-124.
17. http://www.cadence.com
18. Kureichik V. M., Zinchenko L. A., Kureichik V. V. Graph partitioning approach for reconfigurable hardware based on fractal genetic algorithm // Proc. of V Conf. on evolutionary methods for design, optimization and control with applications to industrial problems, ed. M. Schoenauer, J. Periaux. - CIMNE, Spain, 2003.
19. Muhlenbein H., Kureichik V. M., Zinchenko L. A. Application of multi-alternative evolutionary algorithms for automatic data partitioning in high performance CAD systems // Труды конф. "ИСАПР 2006" ICAD 2006. - М.: Физматлит, 2006. - C. 48-52.
Статья поступила в редакцию 6.05.2010