Редактирование: LAMMPS

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 13: Строка 13:
 
Существуют различные способы реализации параллельных вычислений. В программе LAMMPS осуществляется взаимодействие c помощью передачи сообщений: на каждом процессоре многопроцессорной системы запускается одно-поточный процесс, который обменивается данными с другими процессами, работающими на других процессорах, с помощью сообщений.  
 
Существуют различные способы реализации параллельных вычислений. В программе LAMMPS осуществляется взаимодействие c помощью передачи сообщений: на каждом процессоре многопроцессорной системы запускается одно-поточный процесс, который обменивается данными с другими процессами, работающими на других процессорах, с помощью сообщений.  
 
Распараллеливание является пространственным, то есть каждый поток отвечает за свою часть пространства, каждому потоку соответствует свое ядро, которое интегрирует движение подмножества частиц. В пакете реализована квазимногозадачность на уровне одного исполняемого процесса, то есть все потоки выполняются в адресном пространстве процесса. Так же выполняющийся процесс имеет как минимум один (главный) поток.
 
Распараллеливание является пространственным, то есть каждый поток отвечает за свою часть пространства, каждому потоку соответствует свое ядро, которое интегрирует движение подмножества частиц. В пакете реализована квазимногозадачность на уровне одного исполняемого процесса, то есть все потоки выполняются в адресном пространстве процесса. Так же выполняющийся процесс имеет как минимум один (главный) поток.
 
 
[[Файл:Mpi.png|400px]]
 
 
 
Так как в пакете используется много-поточность, то есть процесс состоит из нескольких потоков, которые запускаются параллельно, при этом без определенного порядка по времени. Данное свойство помогает обеспечить более эффективное использование ресурсов вычислительной машины.
 
Так как в пакете используется много-поточность, то есть процесс состоит из нескольких потоков, которые запускаются параллельно, при этом без определенного порядка по времени. Данное свойство помогает обеспечить более эффективное использование ресурсов вычислительной машины.
 
Использование OpenMPI процессов. MPI-схема представляет собой, распределенную работу, при которой определенный поток обрабатывает некоторый пространственный домен. В LAMMPS используется открытый стандарт для  распараллеливания, который позволяет описать совокупность подключенных директив препроцессора, библиотек и переменных.  Базовым механизмом связи между MPI процессами является передача и приём сообщений. Сообщение несёт в себе передаваемые данные и информацию, позволяющую принимающей стороне осуществлять их выборочный приём:
 
Использование OpenMPI процессов. MPI-схема представляет собой, распределенную работу, при которой определенный поток обрабатывает некоторый пространственный домен. В LAMMPS используется открытый стандарт для  распараллеливания, который позволяет описать совокупность подключенных директив препроцессора, библиотек и переменных.  Базовым механизмом связи между MPI процессами является передача и приём сообщений. Сообщение несёт в себе передаваемые данные и информацию, позволяющую принимающей стороне осуществлять их выборочный приём:
Строка 28: Строка 24:
 
Другим способом связи является удалённый доступ к памяти (RMA), позволяющий читать и изменять область памяти удалённого процесса. Локальный процесс может переносить область памяти удалённого процесса (внутри указанного процессами окна) в свою память и обратно, а также комбинировать данные, передаваемые в удалённый процесс с имеющимися в его памяти данными (например, путём суммирования). Все операции удалённого доступа к памяти не блокирующиеся, однако, до и после их выполнения необходимо вызывать блокирующиеся функции синхронизации.
 
Другим способом связи является удалённый доступ к памяти (RMA), позволяющий читать и изменять область памяти удалённого процесса. Локальный процесс может переносить область памяти удалённого процесса (внутри указанного процессами окна) в свою память и обратно, а также комбинировать данные, передаваемые в удалённый процесс с имеющимися в его памяти данными (например, путём суммирования). Все операции удалённого доступа к памяти не блокирующиеся, однако, до и после их выполнения необходимо вызывать блокирующиеся функции синхронизации.
  
== Запуск программы ==
+
== Процесс ==
В открытом для пользователя, так называемом Open Source коде, написанном на языке C++ представлены  различные классы, отвечающие за много-поточность выполняемых задач.
+
В скомпилированном открытом для пользователя, так называемом Open Source коде, написанном на языке C++ представлены  различные классы, отвечающие за много-поточность выполняемых задач.  
 
 
Рассмотрим главную "main" программу, в ней создается класс LAMMPS, инициализируется header mpi.h и в конечном итоге синхронизируются все потоки.
 
Рассмотрим главную "main" программу, в ней создается класс LAMMPS, инициализируется header mpi.h и в конечном итоге синхронизируются все потоки.
Вначале подгружается mpi.h, затем подключается input и далее класс''LAMMPS'' действует по следующей схеме :  
+
Вначале подгружается mpi.h хедер(header)- средство позволяющее обобщить информацию между различными модулями, в нем содержится информация об используемых функциях.Затем подключается input и далее ''Класс'' LAMMPS  действует по следующей схеме :  
 
   
 
   
 
  LAMMPS->input->file  
 
  LAMMPS->input->file  
  
 
input.h  считывает входной script  и содержит методы, которые соответствуют командам класса LAMMPS.
 
input.h  считывает входной script  и содержит методы, которые соответствуют командам класса LAMMPS.
В то время как input сопоставляет каждой определенной команде свой метод и вызывается file(методы).Сообщение из input посылается на процессы.
+
 
 +
в то время как input.cpp сопоставляет каждой определенной команде свой метод и вызывается file(методы).Сообщение из input посылается на процессы.
  
 
* Таким образом можно обозначит что, класс LAMMPS  загружает mpi и input, где прописаны простейшие функции, функции top-level(а) описаны в самом классе LAMMPS.
 
* Таким образом можно обозначит что, класс LAMMPS  загружает mpi и input, где прописаны простейшие функции, функции top-level(а) описаны в самом классе LAMMPS.
Строка 43: Строка 39:
 
* Началом распараллеливания можно считать  класс ''create_box'', в котором вызывается класс '' domain '', include подключает заголовочные файлы, чтобы компилятор видел, где искать нужные функции, в каждом классе изначально подгружается нужная директивы препроцессора, первоначальным можно считать взаимодействие классов ''domain'', ''comm.cpp'', ''atom_vec''.
 
* Началом распараллеливания можно считать  класс ''create_box'', в котором вызывается класс '' domain '', include подключает заголовочные файлы, чтобы компилятор видел, где искать нужные функции, в каждом классе изначально подгружается нужная директивы препроцессора, первоначальным можно считать взаимодействие классов ''domain'', ''comm.cpp'', ''atom_vec''.
  
* Подключив comm.h в ''domain'' -делится пространство, описывается параметрический расчет области, как локально в одном потоке, так и во всем общем процессе(''set local_box;set global_box''), так же описываются периодические граничные условия.
+
* Подключив comm.h в ''domain.cpp'' описывается параметрический расчет области, как локально в одном потоке, так и во всем общем процессе(set local_box;set global_box) так же описываются периодические граничные условия.
*В классе neighbor_list хранится информация о соседних и мнимых атомах.
+
 
*  Подключаем atom_vec.h  в ''comm''и все основные функции MPI. В comm.cpp-реализован процесс обмен между процессами.
+
*  Подключаем atom_vec.h  в ''comm.cpp''и все основные функции MPI.
 
Получаем размер коммуникатора world, (общее число процессов в рамках задачи); номер текущего процесса в рамка коммуникатора world, происходит рассылка количества интервалов всем процессам (в том числе и себе).
 
Получаем размер коммуникатора world, (общее число процессов в рамках задачи); номер текущего процесса в рамка коммуникатора world, происходит рассылка количества интервалов всем процессам (в том числе и себе).
 
Далее происходит заполнение массива, где хранятся методы для взаимодействия частиц.Создается ID-карта для 3d сетки процессоров, основанная на количестве процессов, размере области и образа форм. Задаются размеры  по-атомно при  переднем/заднем/граничном значения увеличения скорости и фиксируется количество частиц.
 
Далее происходит заполнение массива, где хранятся методы для взаимодействия частиц.Создается ID-карта для 3d сетки процессоров, основанная на количестве процессов, размере области и образа форм. Задаются размеры  по-атомно при  переднем/заднем/граничном значения увеличения скорости и фиксируется количество частиц.
Строка 51: Строка 47:
 
* ''atom_vec''подключает класс ''domain'' и создает копии аргументов для перезапуска и повторений. Копируются данные по переназначению скорости из domain. Собирают и записываются значения скоростей, граничные данные, если данные негативные, то происходит откат к позитивным.
 
* ''atom_vec''подключает класс ''domain'' и создает копии аргументов для перезапуска и повторений. Копируются данные по переназначению скорости из domain. Собирают и записываются значения скоростей, граничные данные, если данные негативные, то происходит откат к позитивным.
 
Записываются  угловые взаимодействия,информация о внутренних угловых значениях. Все необходимые значения упаковываются и импортируются в файл с данными.
 
Записываются  угловые взаимодействия,информация о внутренних угловых значениях. Все необходимые значения упаковываются и импортируются в файл с данными.
  Обобщение
+
 
Таким образом если обобщить все выше описанное можно описать некую модель взаимодействия и расчета области разбитой по потокам.
+
  Таким образом если обобщить все выше описанное можно описать некую модель взаимодействия и расчета области разбитой по потокам.
 
Существует некое количество процессоров, к каждому процессору относятся свои и соседние атомы, для описания расчета сил используется класс force.cpp  и pair_xxx.cpp для частиц.  И чтобы просчитать все взаимодействия на процессоре необходимы данные с предыдущего. Такой способ подсчета является эффективным и в большинстве задач более выгодным для реализации.
 
Существует некое количество процессоров, к каждому процессору относятся свои и соседние атомы, для описания расчета сил используется класс force.cpp  и pair_xxx.cpp для частиц.  И чтобы просчитать все взаимодействия на процессоре необходимы данные с предыдущего. Такой способ подсчета является эффективным и в большинстве задач более выгодным для реализации.
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)
Источник — «http://tm.spbstu.ru/LAMMPS»