Сборочная технология реализации метода частиц для MIMD мультикомпьютеров тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат физико-математических наук Краева, Марина Анатольевна

  • Краева, Марина Анатольевна
  • кандидат физико-математических науккандидат физико-математических наук
  • 1999, Новосибирск
  • Специальность ВАК РФ05.13.11
  • Количество страниц 141
Краева, Марина Анатольевна. Сборочная технология реализации метода частиц для MIMD мультикомпьютеров: дис. кандидат физико-математических наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. Новосибирск. 1999. 141 с.

Оглавление диссертации кандидат физико-математических наук Краева, Марина Анатольевна

Введение

3.1 Линеаризация массовых алгоритмов и сборочная технология программирования

3.1.1 Линеаризация массовых алгоритмов

3.1.2 Отображение алгоритма на ресурсы мулътикомпъютера

3.1.3 Сборочная технология

3.2 Линеаризация PIC алгоритма

3.3 Выполнение линеаризованного PIC алгоритма на двумерной решетке процессоров

3.4 Выполнение линеаризованного PIC алгоритма на гиперкубе

3.5 Определение атомарного фрагмента вычислений

Заключение

ГЛАВА 4.ДИНАМИЧЕСКАЯ БАЛАНСИРОВКА ЗАГРУЗКИ ПРОЦЕССОРНЫХ ЭЛЕМЕНТОВ

Введение

4.1 Алгоритм начальной балансировки загрузки ПЭ при реализации метода частиц в ячейках на линейке ПЭ

4.2 Централизованный алгоритм динамической балансировки загрузки процессорных элементов при реализации метода частиц в ячейках на линейке ПЭ

4.3 Определение порога разрешенного дисбаланса BP

-44.4 Балансировка загрузки ПЭ при реализации метода частиц в ячейках

на решетке ПЭ

4.5 Использование виртуальных слоев ПМ

4.6 Децентрализованный алгоритм динамической балансировки загрузки ПЭ для задач с неизменяемым количеством частиц

4.7 Специализированный децентрализованный алгоритм

4.8 Диффузионные алгоритмы балансировки загрузки

4.8.1 Основной диффузионный алгоритм балансировки загрузки

4.8.2 Диффузионный алгоритм балансировки загрузки при реализации PIC метода на линейке процессоров

4.9 Сравнение работы различных алгоритмов динамической балансировки загрузки ПЭ

Заключение

ГЛАВА 5.СРЕДСТВА АВТОМАТИЧЕСКОГО КОНСТРУИРОВАНИЯ ПАРАЛЛЕЛЬНОЙ ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ PIC МЕТОД

Введение

5.1 Решение двух задач физики плазмы

5.1.1 Расширение облака плотной плазмы в замагниченном фоне

5.1.2 Задача о взаимодействии лазерного импульса с плазмой

5.2 Реализации PIC на ряде мультикомпьютеров в сборочном стиле

5.2.1 Реализация PIC для мулътикомпъютера Parsytec PowerXplorer

5.2.2 Реализация на мулътикомпъютере МВС-100

5.2.3 Реализация PIC на гиперкубе Intel iPSC/860

5.2.4 Использование библиотеки MPI для организации взаимодействия процессов (реализация для мулътикомпъютеров SiliconGraphics Power-Challenge, JBMSP2, Cray J90, Cray ТЗЕ)

5.2.5 Реализация динамической балансировки загрузки ПЭ

5.3 Иерархия классов при реализации PIC на языке С++

5.4 Генератор параллельных программ, реализующих метод частиц в ячейках

5.5 Интерактивная система визуализации процесса сборки параллельной программы

5.6 Интерактивная система визуализации процесса моделирования ..122 Заключение

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ А. ЗАГОЛОВОЧНЫЙ ФАЙЛ ДЛЯ ПРОГРАММЫ, МОДЕЛИРУЮЩЕЙ РАЗЛЕТ ОБЛАКА ПЛАЗМЫ В ЗАМАГНИЧЕННОМ ФОНЕ

Определение некоторых функций

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Сборочная технология реализации метода частиц для MIMD мультикомпьютеров»

ВВЕДЕНИЕ

Диссертационная работа посвящена решению задачи автоматизации создания параллельных программ, реализующих метод частиц в ячейках, для их выполнения на МЕУГО мультикомпьютерах. Предлагаемые алгоритмы распараллеливания метода частиц в ячейках основаны на использовании сборочной технологии программирования.

Актуальность. Во многих областях науки (таких как атомная энергетика, изучение поведения плазмы, изучение различных космических явлений, в частности, вспышек сверхновых звезд, моделирование полупроводниковых приборов) проведение или повторение условий экспериментов невозможно или очень дорого. Таким образом, возникает необходимость в численном моделировании природных явлений и сложнейших технических устройств.

Такие задачи обычно характеризуются большим объемом данных и вычислений, что требует использования именно параллельных суперкомпьютеров. Однако исследователю, занимающемуся физическим или вычислительным аспектом задачи, далеко не просто написать эффективную параллельную программу моделирования физического явления с использованием общепринятых ныне систем программирования. Более того, для многих задач, характеризующихся нерегулярной, динамически изменяющейся структурой данных, разработка эффективной параллельной программы моделирования того же физического явления, но с другими начальными данными, может занять много времени даже при использовании труда квалифицированного программиста. Поэтому задача создания системы конструирования и динамического реконструирования таких параллельных программ является актуальной.

Примером такой задачи является метод частиц в ячейках (Particles-In-Cell method- PIC), который имеет многочисленные приложения в тех областях, где решение проблемы конечно-разностными методами невозможно ввиду ее большой размерности. Несмотря на высокую степень внутреннего параллелизма, метод является сложным для эффективной параллельной реализации, так как отличается нерегулярной, динамически изменяющейся структурой данных. Параллельная программа, реализующая PIC, должна настраиваться на непредсказуемо изменяемое распределение частиц в пространстве в процессе моделирования.

Основная задача диссертационной работы состояла в адаптации технологии сборочного программирования для реализации метода частиц в ячейках и разработке поддерживающих реализацию метода частиц в ячейках языка и системы параллельного программирования (включая систему визуализации).

Основные результаты работы следующие:

1) разработаны методы распараллеливания PIC на основе сборочной технологии создания параллельных программ;

2) разработаны и реализованы линеаризованные алгоритмы параллельной реализации метода частиц в ячейках на мультикомпьютерах с коммутационной сетью типа линейка, решетка, тор и гиперкуб (универсальное распараллеливание метода);

3) разработаны и реализованы централизованные и децентрализованные алгоритмы динамической балансировки загрузки мультикомпьютера;

4) разработаны сборочный язык и средства параллельного программирования, автоматизирующие создание параллельных PIC программ;

-85) Разработана параллельная реализация метода частиц в ячейках в применении к решению задачи разлета облака плазмы для мультикомпьютеров Parsytec PowerXplorer, МВС-100, SiliconGraphics Power-Challenge, IBM SP2, Cray J90, Cray T3D, Intel iPSC/860 hypercube. С помощью разработанных программ проведены многочисленные численные эксперименты для изучения

• поведения облака плазмы в замагниченном фоне (при однородном и неоднородном магнитном поле);

• свойств электромагнитного пучка, используемого в лазере при моделировании взаимодействия лазерного импульса с плазмой.

Разработанные средства программирования позволяют широко использовать метод частиц в ячейках для численного моделирования различных физических экспериментов.

Основные результаты диссертационной работы опубликованы в [3-10, 33]. Результаты докладывались на: Международной конференции «Параллельные вычисления и математическое моделирование», РФЯЦ ВНИИЭФ, Саров, 1996; 11-й Всероссийской конференции «Теоретические основы и конструирование численных алгоритмов решения задач математической физики», Пущино, 1996; Международной конференции «High-Performance Computing and Networking», Вена, Австрия, 1997; 6-м Международном семинаре "Распределенная обработка информации" РОИ'98, Новосибирск, 1998; 3-м Сибирском конгрессе INPRIM'98, Новосибирск, 1998; XV Международной школе-семинаре «Информационные технологии в задачах математического моделирования», Новосибирск, 1998; на научных семинарах отдела МО ВВС Института Вычислительной Математики и Математической Геофизики (бывшего Вычислительного Центра) СО РАН.

Диссертационная работа состоит из введения, пяти глав, заключения и списка литературы из 60 названий.

В первой главе описывается метод частиц в ячейках, его математическая модель. Использование PIC метода позволяет свести изначально семимерную постановку задач физики плазмы к трехмерной постановке за счет вычисления траекторий движения большого количества модельных частиц в самосогласованном магнитном поле.

С одной стороны, задачи, решаемые методом частиц в ячейках, отличаются большим объемом данных и вычислений, что требует использования мощных суперкомпьютеров. С другой стороны, алгоритм метода частиц в ячейках обладает внутренним параллелизмом, так как частицы непосредственно друг с другом не взаимодействуют, а пересчет координат и скоростей частиц занимает до 90% всего счетного времени.

Однако наличие двух различных типов данных (частиц и вычислительной сетки для задания электромагнитных полей) усложняет создание эффективной параллельной программы. Любая частица в конкретный момент времени связана с близлежащими узлами вычислительной сетки. Закон распределения частиц в пространстве моделирования зависит от конкретной задачи и не описывается исходными уравнениями. Более того, частицы изменяют свое местоположение в процессе моделирования. Для того, чтобы создать эффективную параллельную программу, реализующую PIC, необходимо учитывать непредсказуемо изменяемое распределение частиц в пространстве в процессе моделирования.

Во второй главе описываются существующие методы параллельной реализации PIC. Основной вопрос, возникающий при решении задач на мультикомпьютерах с распределенной памятью - каким образом распределить данные между процессорными элементами (ПЭ). Существует две основных

стратегии распределения данных между процессорными элементами для метода частиц в ячейках - декомпозиция Лагранжа и декомпозиция Эйлера. В главе приводятся временные оценки вычислительных и коммуникационных затрат, а также оценки требований на память при использовании этих стратегий. Декомпозиция Эйлера обладает лучшими характеристиками, хотя ее использование приводит к необходимости проведения динамической балансировки загрузки процессорных элементов.

Также во второй главе приводится обзор параллельных реализаций PIC метода. Все рассмотренные параллельные реализации зависят либо от закона распределения частиц, либо от характеристик вычислительной системы. Для решения задач с другими начальными данными требуется создавать новые параллельные программы.

Третья глава посвящена анализу конструирования параллельной программы, реализующей метод частиц в ячейках. Для разработки алгоритма распараллеливания PIC, не зависящего от закона распределения частиц были использованы метод линеаризации массовых вычислений и сборочная технология программирования. В первом параграфе приводится основная идея этих методов. Далее рассматривается, каким образом эти методы применялись к распараллеливанию PIC.

Линеаризованный PIC алгоритм может быть эффективно реализован на мультикомпьютерах с любой топологией коммуникационной сети, включающей в себя линейные связи (линейка, кольцо, двумерная решетка, двумерный тор, гиперкуб).

При реализации линеаризованного PIC алгоритма на мультикомпьютерах возникает проблема балансировки загрузки процессорных элементов. Для решения этой проблемы используется сборочная технология. Параллельная программа собирается из минимальных фрагментов. Каждый фрагмент имеет

свой вес. В методе частиц в ячейках вес минимального фрагмента равен количеству частиц, находящихся в этом фрагменте. Суммарный вес фрагментов в процессорном элементе определяет загрузку процессорного элемента. Так как частицы в ходе вычислений могут перелетать из одного минимального фрагмента в другой, вес фрагментов и загрузка ПЭ изменяется. При проведении динамической балансировки загрузки минимальные фрагменты из более загруженных ПЭ передаются для обработки в соседние процессорные элементы.

Вид минимального фрагмента для PIC метода зависит от топологии вычислительной системы, для которой создается параллельная программа. Для того, чтобы сделать описание сборки вычислений более универсальным, введено понятие атомарного фрагмента вычислений (М-ячейка для PIC метода). Минимальные фрагменты вычислений состоят из одного или нескольких атомарных фрагментов. Процесс сборки вычисления распадается на два этапа - сначала определяется атомарный фрагмент вычислений, затем из атомарных фрагментов собирается минимальный фрагмент вычислений.

Четвертая глава посвящена исследованию различных алгоритмов балансировки загрузки ПЭ при реализации метода частиц в ячейках на мультикомпьютерах. Для обеспечения более равной загрузки ПЭ введено понятие виртуального фрагмента - когда один минимальный фрагмент дублируется более, чем в одном ПЭ, а вес фрагмента распределяется между этими ПЭ. Тесты показали эффективность такого подхода.

Для перераспределения минимальных фрагментов (в том числе и виртуальных минимальных фрагментов) между ПЭ могут использоваться как централизованные, так и децентрализованные алгоритмы динамической балансировки загрузки ПЭ. В главе производится сравнение различных

алгоритмов. Выбор алгоритма динамической балансировки при реализации PIC метода зависит от параметров вычислительной системы.

В первом параграфе пятой главы описываются реальные задачи физики плазмы, которые решались одновременно с разработкой средств автоматического конструирования параллельных программ. Для решения этих задач были разработан ряд параллельных программ в сборочном стиле.

При создании параллельных программ, реализующих метод частиц в ячейках, необходимо выполнить много рутинной работы по распределению данных и вычислений между ПЭ мультикомпьютера (в том числе динамическому перераспределению), организации взаимодействия между ПЭ при передаче дублируемых слоев массивов сеточных переменных, при перелете частиц, минимальных фрагментов из одного ПЭ в другой.

Используя идею сборки программы из атомарных фрагментов, работу по созданию параллельного (последовательного) PIC кода можно автоматизировать. С этой целью разработаны генератор PIC программ и система визуализации сборки параллельных программ VisA. На основе параллельных реализаций на языках С и С++ разработан язык (расширение языка С) для определения атомарного фрагмента и задания вычислений для PIC алгоритма. Описания атомарного фрагмента и способа сборки вычислений из таких фрагментов, характеристики мультикомпьютера, подаются на вход генератора параллельных программ. В зависимости от выбранной топологии мультикомпьютера в генераторе определяется минимальный фрагмент вычислений и генерируется последовательная либо параллельная программа.

Для контролирования процесса моделирования разработана система визуализации результатов численного эксперимента, описание которой приводится в последнем параграфе пятой главы.

Данные средства также могут быть использованы для автоматического конструирования параллельных программ, реализующих различные численные алгоритмы на равномерных прямоугольных сетках.

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Заключение диссертации по теме «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», Краева, Марина Анатольевна

ЗАКЛЮЧЕНИЕ

В рамках диссертационной работы проведен обзор существующих параллельных реализаций метода частиц в ячейках. Для универсальной реализации метода применена сборочная технология программирования.

Разработаны средства автоматического конструирования параллельных PIC программ. Можно выделить следующие основные результаты работы:

1. разработаны методы распараллеливания PIC на основе сборочной технологии создания параллельных программ;

2. разработаны и реализованы линеаризованные алгоритмы параллельной реализации метода частиц в ячейках на мультикомпьютерах с коммутационной сетью типа линейка, решетка, тор и гиперкуб (универсальное распараллеливание метода);

3. разработаны и реализованы централизованные и децентрализованные алгоритмы динамической балансировки загрузки мультикомпьютера;

4. разработаны сборочный язык и средства параллельного программирования, автоматизирующие создание параллельных PIC программ;

5. разработана параллельная реализация метода частиц в ячейках в применении к решению задачи разлета облака плазмы для Parsytec PowerXplorer, МВС-100, SiliconGraphics Power-Challenge, IBM SP2, Cray J90, Cray T3D, Intel iPSC/860 hypercube;

6. с помощью разработанных программ проведены многочисленные численные эксперименты для изучения поведения облака плазмы в замагниченном фоне (при однородном и неоднородном магнитном поле);

• свойств электромагнитного пучка, используемого в лазере при моделировании взаимодействия лазерного импульса с плазмой.

Разработанная система программирования позволяет широко использовать метод частиц в ячейках для численного моделирования различных физических экспериментов.

Список литературы диссертационного исследования кандидат физико-математических наук Краева, Марина Анатольевна, 1999 год

СПИСОК ЛИТЕРАТУРЫ

[1] Березин Ю.А., Вшивков В.А. Метод частиц в динамике разреженной плазмы//Новосибирск: Наука, 1980.

[2] Вальковский В.А., Малышкин В.Э. Синтез параллельных программ на основе вычислительных моделей// Наука, Новосибирск, 1988.

[3] Вшивков В.А., Дудникова Г.И., Краева М.А., Малышкин В.Э. Реализация метода частиц на мультипроцессорах// Тезисы докладов 11 Всероссийской конференции "Теоретические основы и конструирование численных алгоритмов решения задач математической физики", - Пущино, 5-9 октября 1996 г. - с. 22-23 (КВИ 5-201-14315-6).

[4] Вшивков В.А., Дудникова Г.И., Краева М.А., Малышкин В.Э. Реализация метода частиц на мультипроцессорах с распределенной памятью// Вопросы атомной науки и техники//, сер. Математическое моделирование физических процессов. - 1996. - вып. 4, с. 11-15.

[5] Вшивков В.А., Дудникова Г.И., Краева М.А., Малышкин В.Э. Реализация метода частиц на мультипроцессорах с распределенной памятью// Тезисы докладов Международной конференции "Параллельные вычисления и математическое моделирование", - РФЯЦ ВНИИЭФ. - Саров (Арзамас-16), 29 июля - 2 августа 1996 г. - с. 23.

[6] Вшивков В.А., Краева М.А., Малышкин В.Э. О реализации метода частиц на мультипроцессорах// Новосибирск, 1995. - 40 с. (Препринт/ РАН. Сиб. отд-ние. ВЦ; 1052).

[7] Вшивков В.А., Краева М.А., Малышкин В.Э. Параллельные реализации метода частиц// Программирование, 1997, N 2, С. 39-51.

[8] Краева М.А. Децентрализованные алгоритмы динамической балансировки загрузки при реализации метода частиц на линейке процессоров мультикомпьютера// Шестой международный семинар "Распределенная обработка информации" (РОИ'98) С.82-86.

[9] Краева М.А. Динамическая балансировка загрузки процессорных элементов при реализации метода частиц на мультикомпьютерах// Тезисы докладов Третьего Сибирского Конгресса по прикладной и индустриальной математике (ИНПРИМ-98), изд. Института Математики СО РАН, 1998, Часть V, С. 83 (ISBN 5-86134-050-1).

[10] Краева М.А., Малышкин В.Э. Реализация метода частиц на МИМД мультикомпьютерах в сборочной технологии// Информационные технологии и вычислительные системы. - 1997, N 2, С. 61-71.

[11] Малышкин В.Э. Линеаризация массовых вычислений// Системная информатика, т. 1,1991, с. 229-259.

[12] Малышкин В.Э. Организация параллельных вычислений на крупноблочных иерархических МВС// Программирование, N.4, Москва, 1991.

[13] David V. Anderson, Dan Е. Shumaker. Hybrid Ordered Particle Simulation (HOPS) Code for Plasma Modelling on Vector-Serial, Vector-Parallel, and Massively Parallel Computers// Computer Physics Communications, Vol. 87, N1-2, 1995, pp 16-34.

[14] V.A. Anisimov, V.E.Malyshkin. Assemble Parallel Programming System INYA// Proceedings of Parallel Computing Technologies International Conference (1991) Novosibirsk, pp. 339-353.

[15] Campbell P.M., Carmona E.A., Walker D.W. Hierarchical domain decomposition with unitary load balancing for electromagnetic particle-in-cell codes// IEEE Computer Society. - 1990. - pp.941-950.

[16] B.I. Cohen, D.C. Barnes, J.M. Dawson, G.W. Hammet, W.W. Lee, G.D. Kerbel, J.-N. Leboeuf, P.C. Liewer, T. Tajima, R.E. Waltz. The Numerical Tokamak Project: Simulation of turbulent Transport// Computer Physics Communications, Vol. 87, N1-2, 1995, pp 1-15.

[17] A. Corradi, L. Leonardi, F. Zambonelli Diffusive Algorithm for Dynamic Load Balancing in Massively Parallel Architectures// DEIS Technical Report N DEIS-LIA-96-001, University of Bologna, April 1996.

[18] Antonio Corradi, Letizia Leonardi, Franco Zambonelli Performance Comparison of Load Balancing Policies based on a Diffusion Scheme// Proc. of the Euro-Par'97 LNCS Vol. 1300.

[19] Thomas Decker, Markus Fischer, Reinhard Luling, Stefan Tschoke. A Distributed Load Balancing Algorithm for Heterogeneous Parallel Computing Systems// Proc. of the 1998 Int. Conf. on Parallel and Distributed Processing Techniques and Applications (PDPTA'98).

[20] Victor K. Decyk. Sceleton PIC Codes for Parallel Computers// Computer Physics Communications, Vol. 87, N1-2, 1995, pp 87-94.

[21] Viktor K. Decyk, Charles D. Norton, Boleslaw K. Szymanski. Experiences with Object Oriented Parallel Plasma PIC Simulations// JPL Technical Report 951349, Rio de Janeiro, Brazil, September 1995.

[22] Ralf Diekmann, Burkhard Monien, Robert Preis. Load Balancing Strategies for Distributed Memory Machines// Multi-Scale Phenomena and Their Simulation, F. Karsch, B. Monien, H. Satz, World Scientific, 1997, pp. 255-266.

[23] Ralf Diekmann, Burkhard Monien, Robert Preis. Load Balancing Strategies for Distributed Memory Machines// Technical Report, tr-rsfb-97-050, CS-Dept., University ofPaderborn, 1997.

[24] Ralf Diekmann, S. Muthukrishnan, Madhu V. Nayakkankuppam. Engineering Diffusive Load Balancing Algorithms Using Experiments// Solving Irregulary Structured Problems in Parallel (IRREGULAR'97), Springer, Lecture Notes in Computer Science, 1253, 1997, pp. 111-122.

[25] Dudnikova G.I., Orishich A.M. et al. Laboratory and computer simulations on wave generations processes in nonstationary astrophysical phenomena// Proc. Workshop "Astrophys." - 1990. - ESA SP-311. - P. 191-194.

[26] J.W. Eastwood, W. Arter, N.J. Brealey, R.W. Hockney. Body-Fitted Electromagnetic PIC Software for Use on Parallel Computers// Computer Physics Communications, Vol. 87, N1-2, 1995, pp 155-178.

[27] Robert D. Ferraro, Paulett C. Liewer, Viktor K. Decyk. Dynamic Load Balancing for a 2D Concurrent Plasma PIC Code// J. Of Comp. Physics, Vol. 109, N 2, December 1993, pp 329-340.

[28] I. Foster, D. Walker Paradigms and Strategies for Scientific Computing on Distributed Memory Concurrent Computers// The Proceedings of the High Performance Computing 1994 Conference, La Jolla, CA, April 11-15, 1994. Society for Computer Simulation, San Diego, CA.

[29] Alan Heirich. A Scalable Diffusion Algorithm for Dynamic Mapping and Load Balancing on Networks of Arbitrary Topology// Int. J. of Foundations of Computer Science, (Special Issue on Interconnection Networks), Vol. 7, no. 3, p. 329, September 1997.

[30] Hockney R.W., Eastwood J.W. Computer Simulation Using Particles. McGraw-Hill Inc. 1981.

[31] T. Hoshino, R. Hiromoto, S. Sekiguchi, S. Majama Mapping schemes of the Particle-In-Cell Method Implemented on the PAX Computer// Parallel Computing, 1988/89, N 9. pp. 53-75.

[32] iPSC/860 System Commands Reference Manual. March 1992, Order Number 312232-001.

[33] M.A.Kraeva, V.E.Malyshkin Implementation of PIC Method on MIMD Multicomputers with Assembly Technology// The proceedings of the International Conference on High Performance Computing and Networking -HPCN Europe 1997, LNCS, Vol. 1225, p. 541-549.

[34] Ted G. Lewis and Hesham El-Rewini. Introduction to Parallel Computing// 1992 Prentice-Hall, Inc. pp 78.

[35] P.C.Liewer. Implementation and Characterization of Three-Dimensional Particle-in-Cell Codes on MIMD Massively Parallel Supercomputers// Computer in Physics, Vol. 9, N 4, Jul/Aug 1995, pp 420-432.

[36] Paulett C. Liewer, Viktor K. Decyk. A General Concurrent Algorithm for Plasma Particle-in-Cell Simulation Codes// J. Of Comp. Physics, Vol. 85, N 2, December 1989, pp 302-322.

[37] O. Lubeck, V. Faber Modeling the Performance of Hypercubes: A Case Study Using the Particle-In-Cell Application// Parallel Computing, 1988/89, N 9. pp. 37-52.

[38] Reinhard Luling, Burkhard Monien. A Dynamic Distributed Load Balancing Algorithm with Provable Good Performance// Proc. of the 5th ACM Symposium on Parallel Algorithms and Architectures (SPAA'93), 1993, pp. 164-173.

[39] Malyshkin V. Assembly Environment for Development of Application Parallel Programing// Proceedings of International conference on High-Performance Computing and Networking, LNCS. - Munich, 1994, N 797.

[40] V.Malyshkin. Functionality in ASSY System and Language of Functional Programming// In Proceedings of the First International Symposium on Parallel Algorithms/Architectures Synthesis. 1995, Aizu, Japan. IEEE Comp. Soc. Press, Los Alamitos, California, pp. 92-97.

[41] V.E.Malyshkin. Linearized mass computation// The Proceedings of Parallel Computing Technologies International Conference (1991), Novosibirsk, World Scientific, Singapore, pp.339-353.

[42] MPI. 1993. Document for a Standart Message-Passing Interface// Technical Report CS-93-214, Department of Computer Science, University of Tennessee, Knoxville, TN.

[43] Charles D. Norton, Boleslaw K. Szymanski, Viktor K. Decyk. Object Oriented Parallel Computation for Plasma Simulation// Communications of the ACM, Vol. 38, N 10, October 1995, pp 88-100.

[44] PARIX. Version 1.3.1-PPC. Reference Manual. June 1995// Parsytec Eastern Europe GmbH.

[45] PGCC Users's Guide. The Portland Group. 9150 SW Pioneer Court, Suite H. Wilsonville, Oregon 97070.

[46] John V.W. Reynders, David W. Forslund, Paul J. Hinker, Marydell Tholburn, David G. Kilman, William F. Humphrey. OOPS: an Object-Oriented Particle Simulation Class Library for Distributed Architectures// Computer Physics Communications, Vol. 87, N1-2, 1995, pp 212-224.

[47] Thomas Romke, Markus Rottger, Ulf-Peter Schroeder, Jens Simon. Efficient Mapping Library for PARIX// Proceedings ZEUS'95 Workshop on Parallel Programming and Computation, IOS Press, 1995, pp. 275-284.

[48] Markus Rottger, Ulf-Peter Schroeder, Jens Simon. Virtual Topology Library for PARIX// Technical Report, No. 148 (PC/TR-005-93), University of Paderborn, 1993.

[49] Sturtevant J.E., Campbell P.M., Maccabe A.B. Performance of a particle-in-cell plasma simulation code on the BBN TC2000// Concurrency: Practice and Experience. 1992, Vol.4(l), pp.1-18.

[50] Walker D.W. Characterising the parallel performance of a large-scale, particle-in-cell plasma simulation code// Concurrency: Practice and Experience. 1990, Vol.2(4), pp.257-288.

[51] Walker D.W. The hierarchical spatial decomposition of three-dimensional particle-in-cell plasma simulations on MIMD distributed memory multiprocessors// Report ORNL/TM-12071, U.S. Department of energy, Engineering Physics and Mathematical Division, Mathematical Sc. Section.

[52] D. Walker The Implementation of a Three-Dimensional PIC Code on a Hypercube Concurrent Processor// The Proceedings of the Fourth Conference on Hypercubes, Concurrent Computers and Applications, Ed. By J.Gustafson, March 6-8, 1989, Monterey, CA. pp. 1255-1261.

[53] D. Walker Particle-In-Cell Plasma Simulation Codes on the Connection Machine// Computer System in Engineering, 1991, Vol. 2, N 2/3, pp. 307-319.

[54] J. Wang, P. Liewer, V. Decyk. 3D Electromagnetic Plasma Particle Simulations on a MIMD Parallel Computer// Computer Physics Communications, Vol. 87, N1-2, 1995, pp 35-53.

[55] J. Wang, P.C. Liewer, E. Huang. 3D Electromagnetic Monte Carlo Particle-in-Cell Simulations on MIMD Parallel Computers// JPL Technical Report AIAA

95-0593, 33rd Aerospace Sciences Meeting and Excibit, Reno, NV, January 9-12, 1995.

[56] Michael S. Warren, John K. Salmon. A Portable Parallel Particle Program// Computer Physics Communications, Vol. 87, N1-2, 1995, pp 266-290.

[57] A.Zabrodin, V.Levin, V.Korneev. The Massively Parallel Computer System MBC-100// The Proceedings of PaCT-95 (Parallel Computing Technologies) Int. conference, St.-Petersburg, Russia, 1995. LNCS, Vol. 964, Springer Verlag, pp.341-355.

[58] C.-Z. Xu, F.C.M. Lau, Ralf Diekmann. Decentralized Remapping of Data Parallel Applications in Distributed Memory Multiprocessor// Concurrency: Practice and Experience, Vol. 9(12), Dec. 1997, pp. 1351-1376.

[59] C.-Z. Xu, Burkhard Monien, Reinhard Luling, F.C.M. Lau. Nearest Neighbor Algorithms for Load Balancing in Parallel Computers// Technical Report, tr-rsfb-

96-020, University of Paderborn, 1996.

[60] Power Challenge. The Advent of Powercomputing// Technical Report. Silicon Graphics, Inc., 1994.

ПРИЛОЖЕНИЕ А. ЗАГОЛОВОЧНЫЙ ФАЙЛ ДЛЯ ПРОГРАММЫ, МОДЕЛИРУЮЩЕЙ РАЗЛЕТ ОБЛАКА ПЛАЗМЫ В ЗАМАГНИЧЕННОМ ФОНЕ.

#include <iostream.h>

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define one 0

#define line 1

#define grid 2

#define Com Structure 0 // it can be 'one', 'line' or 'grid'

#define Parsytec 0

#define MPI 1

#define iPSC 2

#define MP System 1 // it can be 'Parsytec', 'MPI' or

'iPSC'

#define type_of_Gv double #define type_of_Part float

#define Init_Way 0 // 0 - from file; 1 - from the screen

#define InitP_Way 1 // 0 - from file; 1 - particle generation

class Grid_var { long int size_f; int size_x; int size_y; int size_z; #if Com_Structure==one

type_of_Gv *beg; #else

#if Com_Structure==line

type_of_Gv **beg; #else

type_of_Gv ***beg; #endif #endif

public:

int init_to_zero() ;

virtual int init(int n_x, int n_y, int n_z); int save(FILE *);

type_of_Gv get(int i,int l,int k) ; type_of_Gv sum_sqr(int n_x,int n_y,int n_z);

class Magnetic_field : public Grid_var { public:

virtual int fide()=0;

} ;

class Magnetic_field_x : public Magnetic_field { public:

int fide();

} ;

class Magnetic_field__y : public Magnetic_field { public:

int fide();

} ;

class Magnetic_field_z : public Magnetic_field { public:

int fide();

} ;

class Electric_field : public Grid_var { public:

virtual int fielde ()=0 ;

};

class Electric_field_x : public Electric_field { public:

int fielde();

};

class Electric_field_y : public Electric_field { public:

int fielde();

} ;

class Electric_field_z : public Electric_field { public:

int fielde();

} ;

class Current_density : public Grid_var { public:

virtual int block()=0;

} ;

class Current_density_x : public Current_density { public:

int block();

} ;

class Current_density_y : public Current_density { public:

int block();

} ;

class Current_density_z : public Current_density { public:

int block();

class Charge_density : public Grid_var {

public: };

class Charge_density_x : public Charge_density {

public: };

class Charge_density_y : public Charge_density { public: };

class Charge_density_z : public Charge_density { public: instruct attr_part { type_of_Part x; type_of_Part y; type_of_Part z; type_of_Part u; type_of_Part v; type_of_Part w;

} ;

class Particles { long int N_of_part; type_of_Part a; attr_part *ap;

} ;

class Min_fragment { #if Com_Structure==line

int fn_x; #endif

#if Com_Structure—grid int fn_x; int fn_y; #endif

Particles Bground; Particles Cloud; Magnetic_field_x fHx; Magnetic_field_y fHy; Magnetic_field_z fHz; Electric_field_x fEx; Electric_field_y fEy; Electric_field_z fEz; Current_density_x fUx; Current_density_y fUy; Current_density_z fUz; Charge_density_x fPx; Charge_density_y fPy; Charge_density_z fPz; public: move();

class Plasma {

#if Com_Structure==one

Min_fragment *Mf; #endif

#if Com_Structure==line int N_o f__mf_x; Min_fragment *Mf; #endif

#if Com_Structure==grid int N_o f__mf_x; int N__of_mf_y; Min_fragment **Mf; #endif

int gv_size_x; int gv_size_y; int gv_size_z;

Magnetic_field_x Hx; Magnetic__field_y Ну; Magnetic_field_z Hz; Electric_field_x Ex; Electric_field_y Ey; Electric_field_z Ez; Current_density_x Ux; Current_density_y Uy; Current_density_z Uz; Charge_density_x Px; Charge_density_y Py; Charge_density_z Pz; public:

Plasma(int n_x, int n_y, int n_z); int Plasma_fide(); int Plasma_fielde(); int Plasma_block(); int Plasma_balance();

} ;

Определение некоторых функций

//================================

// functions for class Plasma:

Plasma::Plasma(int n_x, int n_y, int n_z) { gv_s i z e_x=n_x; gv_s i z e_y=n_y; gv_size_z=n_z; #if Com_Structure==one .

Mf=(Min_fragment *)malloc(sizeof(Min_fragment)); #endif

#if Com_Structure==line N_o f_mf_x=n_x;

Mf=(Min_fragment *)malloc(N_of_mf_x*sizeof(Min_fragment)); #endif

#if Com_Structure—grid N_of_mf_x=n_x; N_o f_mf_y=n_y;

Mf=(Min_fragment **)malloc(N_of_mf_x*sizeof(Min_fragment*)); for(int i=0; i<N_of_mf_x; i++)

Mf [i] = (Min_fragment- *) malloc (N__of_mf_y*sizeof (Min_fragment) ) ; #endif

Hx.init(gv_size_x+2,gv_size_y+l,gv_size_z+l); Hy.init(gv_size_x+l,gv_size_y+2,gv_size_z+l); Hz.init(gv_size_x+l,gv_size_y+l,gv_size_z+2); Ex.init(gv_size_x+l,gv_size_y+2,gv_size_z+2); Ey.init(gv_size_x+2,gv_size_y+l,gv_size_z+2); Ez . init (gv_size_x+2, gv__size_y+2, gv_size_z + l) ; Ux.init(gv_size_x+l,gv_size_y+2,gv_size_z+2); Uy.init(gv_size_x+2,gv_size_y+l,gv_size_z+2); Uz.init(gv_size_x+2,gv_size_y+2,gv_size_z+l); Px.init(gv_size_x+l,gv_size_y+2,gv_size_z+2); Py.init(gv_size_x+2,gv_size_y+l,gv_size_z+2); Pz.init(gv_size_x+2,gv_size_y+2,gv_size_z+l);

}

int Plasma::Plasma_fide() { Hx.fide(); Hy.fide(); Hz.fide(); return 0;

}

int Plasma::Plasma_fielde() { Ex.fielde(); Ey.fielde(); Ez.fielde(); return 0;

}

int Plasma::Plasma_block() { Ux.block () ; Uy.block(); Uz. block () ; return 0;

}

// functions for class Grid_var: //==============================

int Grid_var::init_to_zero() {

#if Com_Structure==one

for(int i=0; i<size_f; i++) beg[i]=0; #endif

#if Com_Structure==line

for(int j=0; j<size_x; j++) for(int i=0; i<size_f; i++) beg[i][j]=0;

#endif

#if Com_Structure==grid

for(int k=0; k<size_x; k++) for(int j=0; j<size_y; j++) for(int i=0; i<size_z; i++) beg[i][j][k]=0;

#endif

return 0;

int Grid_var::init(int n_x, int n_y, int n_z) {

size_x=n_x; size_y=n_y; size_z=n_z; #if Com_Structure==one

size_f=size_x*size_y*size_z;

beg=(type_of_Gv *)malloc(size_f*sizeof(type_of_Gv)); for(int i=0; i<size_f; i++) beg[i]=0; #else

#if Com_Structure==line size_f=size_y*size_z;

beg=(type_of_Gv **)malloc(size_x*sizeof(type_of_Gv *)); for(int i=0; i<size_x; i++) {

beg[i]=(type_of_Gv *)malloc(size_f*sizeof(type_of_Gv)); for(int j=0; j<size_f; j++) beg[i][j]=0;

}

#else

size_f=size_z;

beg=(type_of_Gv ***)malloc(size_x*sizeof(type_of_Gv **)); for(int i=0; i<size_x; i++) {

beg[i]=(type_of_Gv **)malloc(size_y*sizeof(type_of_Gv *));■ for(int j=0; j<size_y; j++) {

beg[i][j]=(type_of_Gv *)malloc(size_f*sizeof(type_of_Gv)); for (int k=0; k<size_z; k++) beg[i][j][k]=0;

}

}

#endif #endif

return 0;

Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.