Применение молекулярной динамики LAMMPS и NAMD, как тест процессоров и ПК: изучается зависимость теста от количества ядер процессора, частота процессора и частота памяти

Этой статьей мы начинаем небольшой цикл, посвященный различным реальным приложениям, которые могут быть использованы для тестирования процессоров, компьютеров, ноутбуков и рабочих станций. Все рассмотренные в этой серии статей, приложение будет основой нового тестового пакета iXBT Application Benchmark 2017 года. Потому что в этом новом тестовом пакете предполагается использовать более 20 различных испытаний, и для изучения всех их в одной статье довольно трудно, мы решили сделать отдельный цикл статей. В рамках этого цикла будут рассматриваться только те приложения, которые не используются нами ранее при тестировании процессоров и компьютеров.

Давайте начнем с рассмотрения двух специализированных программных пакетов, которые применяются для решения задач молекулярной динамики: LAMMPS и NAMD. Обратите внимание, что данные программные продукты являются частью специализированного тестового пакета SPECwpc 2.0, который предназначен для тестирования рабочих станций. Разрешение на применение LAMMPS и NAMD (и не только их) в тестовый пакет iXBT Application Benchmark 2017 году позволит нам в будущем отказаться от использования специализированных бенчмарков для рабочей станции.

Мы не ставим целью детальное изучение таких специализированных пакетов молекулярной динамики и формирования бухгалтерских задач «с нуля», потому что являются специалистами в данной области. Наш подход в данном случае заключается в следующем: расчетные задачи (workload) и команды для запуска программ с соответствующими параметрами мы позаимствовали из пакета SPECwpc 2.0 (которая включает в себя оба этих приложения, как уже было сказано выше). Более подробно об этом будет сказано далее.

LAMMPS

Одна из самых известных (в узких кругах), каналы для классической молекулярной динамики LAMMPS (Large-scale Atomic/Molecular Massively Parallel Simulator). Эта программа является бесплатной (с открытым исходным кодом, GPL) и используется для расчетов взаимодействий до десятков миллионов атомов. Конечно, что программа является очень простой, ее освоение требует много времени и специфических знаний в области молекулярной динамики. Есть и учебники, и даже курсы для освоения этой программы. Программа написана на языке C++, имеет графический интерфейс (только многопользовательский режим). Можно компиляция исходников под разные операционные системы (Linux, OS X, Windows). Кроме того, существует большое количество различных вариантов сборки, которые позволяют создать исполняемый файл с определенной архитектурой процессора и архитектуры графического процессора (Ферми, Кеплер). Описание всех доступных опций этой программы выходит за рамки нашей статьи, но если кому-то интересно, инструкцию с описанием всех функций этого пакета на сайте разработчиков.

На сайте загружены заранее скомпилированные версии программы для различных операционных систем. Для тестирования мы использовали самые последние 64-разрядной Windows-версии LAMMPS 64-bit 20160516 (версия от 16.05.2016). Эта версия программы может работать как в однопоточном режиме, так и в multi-threaded (в случае многоядерных процессоров и многопроцессорных систем), для этого служат различные команды. Очевидно, что при тестировании процессоров мы использовали для запуска в многопоточном режиме, но необходимо установить пакет MPI (Message Passing Interface), и это любой (версии Microsoft не подходит), и 64-разрядная версия MPICH2, которую Аргоннской лаборатории (mpich2-1.4.1p1-win-x86-64.msi).

После установки пакет MPICH2 (установлен по умолчанию в папку C:Program FilesMPICH2), еще нужно интегрировать в систему. Для этого (обязательно в режиме администратора!) необходимо выполнить команду smpd.exe -install. Файл smpd.exe находится в папке MPICH2bin.

Более подробно с особенностями использования Windows-версии пакета LAMMPS доступна здесь.

Далее инсталлируем пакет LAMMPS 64-bit 20160516 (в принципе, порядок установки этих двух пакетов, не важно). По умолчанию устанавливается в папку C:Program Файлы, создать там папку с названием LAMMPS 64-bit 20160516. На самом деле, установка в смысле Windows не происходит, файлы пакета просто копируются в папку, которую затем можно переименовать и переместить (например, создать папку C:LAMMPS).

В папке пакета LAMMPS создается подпапка с названием Benchmarks. Эта папка содержит файлы, задач, которые можно использовать для тестирования. Это еще одно преимущество этого пакета: не нужно отдельно создавать тестовые задания. Имена файлов формируются по следующим правилам: исполняемый файл начинается с in, и после точки указывается название задачи, например, in.жж, in.rhodo или in.rhodo.scaled (в последнем примере rhodo.scaled — это название задания). Кроме того, есть еще и файлы, чьи имена начинаются данных, и после точки еще раз указано название задачи — например, данные.парашют. Это файлы с данными, которые используются в соответствующих задачах.

Только в каталоге Benchmarks имеет пять различных задач, которые могут быть использованы для тестирования. Использовать для наших целей избыточно, так что пока мы выбрали четыре задачи (Polymer chain melt benchmark (chain), Детального шют-потока теста (парашют), protein Rhodopsin benchmark (rhodo) и Lennard-Jones liquid benchmark (жж)), но возможно, что в будущем, в пакете iXBT Application Benchmark 2017 году мы будем использовать только два теста из четырех, чтобы сократить время тестирования. Описание этих бенчмарков выходит за рамки данной статьи с учетом их специфики, но те, кто знаком с темой, могут прочитать описание на английском языке.

Запуск программы LAMMPS осуществляется через интерфейс MPI (команда mpiexec.exe), и для запуска LAMMPS в многопоточном режиме, используется команда lmp_mpi.exe:

mpiexec.exe -wdir -localonly %n% lmp_mpi.exe

В этом случае параметр -wdir определяет рабочую директорию, в исполняемый файл и выполните команду для запуска программы LAMMPS (lmp_mpi.exe). Настройки localonly определяет количество одновременно выполняемых процессов, его значение должно совпадать с количеством логических (с учетом Hyper-Threading) процессорных ядер.

Команду для запуска исполняемого файла имеет следующую структуру:

-log-in

В этом случае параметр -log определяет файл сообщение о выполнении задачи.

Параметры запуска исполняемого файла может варьироваться в рамках каждой конкретной задачи, описание параметров приводится в файле readme.txt в каталоге Benchmarks. Например, если пакет LAMMPS находится в папке C:LAMMPS пакет MPICH2 устанавливается по умолчанию, все файлы операционных задач, скопирован из папки C:LAMMPSBenchmarks в папку C:LAMMPSbin (это четыре исполняемого файла и три набора данных, потому что задача lj не требует файл: in.chain.scaled, in.парашют.scaled, in.rhodo.scaled, in.жж, data.chain, данные.парашют, данные.rhodo), то для запуска теста используется следующая последовательность команд:

cd C:Program FilesMPICH2bin ;перейдите в папку с исполняемым mpiexec.exe
mpiexec.exe -wdir C:LAMMPSbin -localonly %n% lmp_mpi.exe

В результате, в нашем случае четыре испытательные задачи запустить следующими командами:

mpiexec.exe -wdir C:LAMMPSbin -localonly %n% lmp_mpi.exe -журнал test_lj.из-var x 8 -var y 8 -вар из 8 -in in.жж
mpiexec.exe -wdir C:LAMMPSbin -localonly %n% lmp_mpi.exe -журнал test_rhodo.из-var x 4 -var y 3 -var от 3 -in in.rhodo.scaled
mpiexec.exe -wdir C:LAMMPSbin -localonly %n% lmp_mpi.exe -журнал test_chain.из-var x 8 -var y 8 -var 12 -in in.chain.scaled
mpiexec.exe -wdir C:LAMMPSbin -localonly %n% lmp_mpi.exe -журнал test_chute.из-var x 16 -var y 16 -in in.парашют.scaled

Для запуска желательно использовать bat-файл, чтобы автоматически запустить все тестовые задания в очереди. Запустить bat-файл, которые вам нужны права администратора (Run As Administrator), в противном случае MPI-интерфейс не будет работать. В нашем случае bat-файл запускается с параметром, в качестве которого вы можете установить количество ядер процессора, и потому, что у нас есть полностью автоматизированный тест, количество ядер процессора также определяется автоматически.

Естественно, возникает вопрос: почему мы используем именно эти параметры для каждого тестового задания? Здесь мы ничего не выдумывали, пакет LAMMPS (правда, старую версию, и в противном случае составлен) является частью тестового пакета SPECwpc 2.0, откуда мы и взяли варианты выполнения тестовых задач.

NAMD 2.11

Пакет NAMD (NAnoscale Molecular Dynamics), как LAMMPS, это бесплатная программа для выполнения расчетов молекулярной динамики. NAMD написана с использованием модели параллельного программирования Charm++ и используется для моделирования больших систем (миллионы атомов). Как гласит Википедия, программа была создана совместно с Группой теоретической и вычислительной биофизики (УТС) и Лабораторий для параллельного программирования (о госзакупках) из Иллинойсского университета. Программа поддерживает мультипроцессорность, а также возможность использовать для вычислений графических процессоров (технология CUDA).

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

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

На сайте автора есть предварительно скомпилированные версии программы для различных операционных систем. Для тестирования мы использовали 64-разрядные версии Windows NAMD 2.11 с поддержкой MPI (Win64 MPI). Загруженный zip-файл, содержит папку NAMD_2.11_Win64-MPI, который необходимо разархивировать.

Для запуска программы в многопоточном режиме, необходимо установить пакет MPI (Message Passing Interface), принимая пакет MPICH2 (который мы использовали для LAMMPS) не подходит. Мы установили версию Microsoft MPI (MS-MPI 7.1).

Сам пакет NAMD (как LAMMPS) не установлен. Просто создать папку C:NAMD в ней подпапки namd (можно, конечно, и по-другому, но тогда придется рассматривать другие пути к папкам при написании команд), из разархивированной папки NAMD_2.11_Win64-MPI передачи всех файлов в папке C:NAMDnamd а затем в папке namd создать папку data, которую нужно будет скопировать задачу на тесто.

На сайте разработчика в разделе NAMD Performance есть один доступны для скачивания тест — ApoA1. Скачав и разархивировав этого теста, скопировать в папку apoa1 в папку data. Из одного теста показалась нам достаточно, и поэтому мы добавили еще два, f1atpase и stmv, заимствованный из соответствующего каталога бенчмарка SPECwpc 2.0 (кстати, там же есть и тест apoa1). Так что в папку data скопировать папку тестов apoa1, f1atpase и stmv.

Далее в папке C:NAMD создается bat-файл для запуска тестовых задач (каждый отдельный тест можно запустить из командной строки). Запуск программы NAMD осуществляется с использованием интерфейса MPI (команда mpiexec.exe). Последовательность команд в командной строке следующее:

cd C:Program FilesMicrosoft MPIBin ;перейдите в папку с исполняемым mpiexec.exe
mpiexec.exe -wdir C:NAMDnamdnamd2.exe

В этом случае параметр -wdir определяет рабочую директорию, в исполняемый файл (с расширением .namd) и командой для запуска программы NAMD.

В результате, в нашем случае три тестовый задания, чтобы запустить следующими командами:

mpiexec.exe -wdir C:NAMDnamdnamd2.exe dataapoa1apoa1.namd
mpiexec.exe -wdir C:NAMDnamdnamd2.exe dataf1atpasef1atpase.namd
mpiexec.exe -wdir C:NAMDnamdnamd2.exe datastmvstmv.namd

Как мы уже упоминали, для автоматического выполнения всех тестовых заданий в очереди, удобно использовать bat-файл. Запустить bat-файл нужно с правами администратора (Run As Administrator), в противном случае MPI-интерфейс не будет работать. В случае пакета NAMD (при использовании MS-MPI 7.1) можно не указывать в параметрах количество ядер процессора, расчеты и так будут распараллеливаться на все доступные ядра.

Обратите внимание, что пакеты LAMMPS и NAMD загрузить все ядра процессора на 100%.

Тестовый стенд и методика тестирования

Для тестирования с использованием приложений LAMMPS и NAMD мы использовали стенд следующей конфигурации:

  • Процессор: Intel Core i7–6950X (Broadwell-E)
  • Системная плата: Asus Rampage V Edition 10 (Intel X99)
  • Память: 4×4 ГБ DDR4–2400 (Kingston HyperX Predator HX424C12PBK4/16)
  • Видеокарта: Nvidia Quadro 600;
  • Диск: SSD Seagate ST480FN0021 (480 ГБ)

В ходе тестирования замерялось время выполнения тестовых задач в пакетах, LAMMPS и NAMD. Рассматривалась зависимость результатов теста от количества используемых ядер процессора, частота ядра процессора и частота памяти.

Зависимость результатов от количества ядер процессора

Количество используемых в ходе тестирования ядер процессора Intel Core i7–6950X регулировалось через настройки UEFI BIOS платы Asus Rampage V Edition 10. Напомним, что процессор Intel Core i7–6950X 10-х ядерный, но поддерживает технологию Hyper-Threading, так что операционной системой и приложениями он видит, как в 20-ядерной (у него 20 логических ядер). Мы не отключали технологии Hyper-Threading и меняется только количество физических ядер процессора от 1 до 10. В дальнейшем мы будем говорить о логических ядрах процессора, число которых меняется от 2 до 20 с шагом 2. Частота работы всех ядер фиксировалась и составил 4,0 Ггц.

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

Как видно, зависимость результатов (скорости выполнения тестовых задач) количество ядер процессора не является линейной. При переходе от двух к четырем ядрам время выполнения теста уменьшается примерно в 1,9 раза, а в пакете LAMMPS, и в пакете NAMD. И это при переходе от 18 до 20 ядрам время выполнения тестовых задач в пакетах, LAMMPS и NAMD изменяются уже не так значительно (снижение на 2,8% в пакете LAMMPS и 9,8% в пакете NAMD). Тем не менее, сама скорость выполнения тестовых заданий зависит от количества ядер процессора почти линейно. Более наглядно это можно показать на графике зависимость нормированной скорости выполнения тестовых заданий от числа ядер cpu (стандартизированы по отношению к времени выполнения задач на двух логических ядрах процессора).

Скорость выполнения тестовых задач в пакете NAMD меняется почти линейно в зависимости от числа ядер процессора. Скорость выполнения тестовых задач в пакете LAMMPS меняется линейно до 8 логических ядер процессора, и при дальнейшем повышении ядер процессора (до 20), начинает наблюдаться тенденция к постепенному насыщению результатов.

В целом, увеличение числа процессорных ядер в десять раз (от 2 до 20) приводит к снижению времени выполнения теста 6,3 раза (падение на 84,1%) в пакете LAMMPS и 8,6 раза (падение на 88,4%) в пакете NAMD.

Зависимость результатов от частоты процессора

Частота ядер процессора Intel Core i7–6950X меняли в настройках UEFI BIOS платы Asus Rampage V Edition 10 путем изменения коэффициента умножения. Частота менялась от 3,0 Ггц до 4,2 Ггц с шагом 200 Мгц. Динамическое увеличение частоты (в режиме Turbo Boost) отключалось. Были использованы все ядра процессора (10 физической/20 логических ядер).

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

Как видно из результатов, в пакете LAMMPS выполнения тестовых заданий слабо зависит от частоты процессора. При увеличении частоты процессора 3 до 4,2 Ггц (рост на 40%) время выполнения тестовых задач уменьшается только на 12%. Пакет NAMD более чувствителен к тактовой частоте процессора: так, увеличение тактовой частоты на 40% (с 3 до 4,2 Ггц) приводит к снижению времени выполнения теста на 25%.

Если мы сравним полученные результаты тестирования с результатами по времени выполнения теста от количества ядер процессора, можно сделать следующий важный вывод: во время выполнения тестовых задач в пакете LAMMPS хуже масштабируется по частоте и количеству ядер процессора, по сравнению с требованиями на задачи в пакете NAMD. Тема не менее, и в пакете LAMMPS, и в пакете NAMD тестовой задачи отлично распараллеливаются на все доступные ядра процессора и нагрузки на каждое ядро на 100%.

Зависимость результатов от частоты оперативной памяти

Теперь давайте посмотрим на зависимость скорости выполнения тестовых задач от частоты работы оперативной памяти DDR4. Память работала в четырехканальном режиме (один модуль на канал), и его частота меняется в настройках UEFI BIOS в диапазоне от 1600 до 2800 Мгц с шагом 200 Мгц. Тайминги памяти фиксировались и не меняется при изменении частоты. Все ядра процессор работал на частоте 4,0 Ггц.

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

Как видно, скорость выполнения тестовых задач в пакете NAMD практически не зависит от частоты работы памяти. Точнее, в четырехканальном режиме пропускную способность памяти DDR4 вполне достаточно, чтобы даже на частоте 1600 Мгц, и дальнейшее увеличение частоты памяти не позволяет ускорить выполнение тестовых заданий.

А вот тестовых задач в пакете LAMMPS ситуация несколько иная. Здесь наблюдается почти линейная зависимость времени выполнения тестовых задач от частоты памяти, и находится в диапазоне от 1600 до 2800 Мгц (в четырехканальном режиме работы) увеличение частоты памяти до 200 Мгц позволяет сократить время выполнения тестовых задач примерно на 3-5%. Результат, конечно, довольно скромный, но, тем не менее, зависимость частоты памяти есть. Увеличение частоты памяти с 1600 до 2800 Мгц (на 75%) приводит к суммарному сокращению времени выполнения тестовых заданий на 19%.

Вывод

Итак, в первой статье нашего нового цикла мы рассмотрели два теста на основе специализированных приложений молекулярной динамики LAMMPS и NAMD. На примере 10-х ядерный процессор Intel Core i7–6950X было показано, что тестовые задания в этих пакетах хорошо распараллеливаются на все ядра процессора и поместить их на 100%. Именно этот факт позволяет рассматривать данные заявки, являются отличным выбором для тестирования многоядерных процессоров. Зависимость скорости выполнения тестовых задач от числа ядер cpu является практически линейной пакета NAMD (в пределах от 2 до 20 логических ядер). В приложении LAMMPS зависимость скорости выполнения тестовых задач от числа ядер cpu почти линейные, до 8 логических ядер, но при большем количестве ядер, скорость выполнения тестовых задач постепенно насыщается.

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

Наконец, было показано, что время выполнения тестовых задач в программе LAMMPS линейным образом зависит от частоты памяти DDR4 (в четырехканальном режиме и в диапазоне от 1600 до 2400 Мгц). И вот в приложении NAMD время выполнения тестовых заданий не на всех, зависит от скорости памяти (в тех же определенных режимах работы памяти).

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

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.