تشغيل عمليات محاكاة الديناميكيات الجزيئية من Gromacs باستخدام أرقام سائلة Slurm-GCP

1. مقدمة

تاريخ آخر تعديل: 25/04/2022

ما ستقوم بإنشائه

في هذا الدرس التطبيقي حول الترميز، ستنشر مجموعة حوسبة عالية الأداء (HPC) يتم تغيير حجمها تلقائيًا على Google Cloud.يؤدي نشر Terraform إلى إنشاء هذه المجموعة مع تثبيت أجهزة Gromacs عبر Spack. ستتم إدارة المجموعة باستخدام أداة جدولة المهام في Syrm. عند إنشاء المجموعة، ستنفِّذ مقاييس أداء BenchMEM أو benchPEP أو BnchRIB.

المعلومات التي ستتعلّمها

  • كيفية نشر مجموعة HPC تدعم أداة جدولة مهام Syrm
  • كيفية تشغيل عمليات محاكاة الديناميكيات الجزيئية المسرّعة من خلال وحدة معالجة الرسومات باستخدام Gromacs على Google Cloud باستخدام مهمة Slashm المجمّعة

المتطلبات

2. ضبط إعدادات الجهاز

لإكمال هذا الدرس التطبيقي حول الترميز، يجب تفعيل واجهتَي برمجة تطبيقات Compute Engine وCloud Build. لتفعيل واجهات برمجة تطبيقات Compute Engine وCloud Build، افتح Cloud Shell وشغِّل الأوامر التالية. احرِص على استبدال رقم تعريف المشروع بـ أدناه.

gcloud config set project <PROJECT_ID>
gcloud services enable compute.googleapis.com
gcloud services enable cloudbuild.googleapis.com

تنبيه: إذا كنت تخطّط لاستخدام بروتوكول النقل الآمن (SSH) التابع لجهة خارجية (مثل OpenSSH) للاتصال بمجموعتك، تأكَّد من إرفاق مفتاح ssh بالملف الشخصي للهوية في السحابة الإلكترونية باستخدام "تسجيل الدخول إلى نظام التشغيل". مزيد من المعلومات حول إضافة مفاتيح SSH إلى ملفك الشخصي في Cloud Identity

3- [اختياري] إنشاء صورة جهاز افتراضي على Google Cloud Platform باستخدام أجهزة Gromac

وفّرنا لك في هذا الدرس التطبيقي صورة معدّة مسبقًا، لأنّ عملية تثبيت Gromacs وجميع ملحقاتها قد تستغرق مدة تصل إلى ساعتين. إذا كنت ترغب في استخدام هذه الصورة المنشأة مسبقًا لتوفير بعض الوقت، يمكنك التخطي إلى القسم التالي.

عند تشغيل تطبيقات البحث على Google Cloud، هناك العديد من الخيارات لتثبيت التطبيق ونشره. في هذا القسم من الدرس التطبيقي حول الترميز، ستنشئ صورة جهاز افتراضي تستند إلى صورة الجهاز الافتراضي (VM) slurm-gcp (CentOS7). أثناء عملية الإنشاء، يقوم المحول البرمجي، والتبعيات، فسيتم تثبيت Gromacs.

يضم مسار Gromacs Cloud Build في مستودع تطبيقات RCC التعليمات اللازمة لتثبيت أجهزة Gromacs. وتستخدم عملية التثبيت أداة Packer لنشر جهاز افتراضي يثبِّت Spack، والذي بدوره يثبِّت المحول البرمجي GCC@9.2.0 وGromacs@2021.2 مع تفعيل تسريع وحدة معالجة الرسومات.

  1. افتح Cloud Shell على Google Cloud Platform.
  2. استنساخ مستودع FluidNumerics/rcc-apps
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. أنشئ الصورة باستخدام Google Cloud Build.
cd rcc-apps
gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async

يمكنك التحقُّق من حالة عملية التصميم في لوحة بيانات إصدار Google Cloud.

قد تستغرق عملية التصميم ما يصل إلى ساعتين. لتسريع هذا الإجراء، يمكنك تعديل مخطّط ملف إعداد الإصدار لتغيير نوع الجهاز لتحسين أداء الإصدار. ويمكن تنفيذ ذلك باستخدام متغير الإصدار _MACHINE_TYPE. على سبيل المثال:

gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async --substitutions=_MACHINE_TYPE=n2-standard-64

بعد اكتمال الإصدار، ستتوفّر لديك صورة جهاز افتراضي (VM) في مشروعك على Google Cloud يمكنك استخدامها لنشر مجموعتك.

4. نشر مجموعة HPC قابلة لتغيير الحجم تلقائيًا باستخدام Terraform

في هذا القسم، ستستخدم Terraform لنشر مجموعة HPC ذات تغيير تلقائي، مع تثبيت أداة جدولة مهام Syrm. سيتم نشر هذه المجموعة مع عُقد حوسبة يحتوي كل منها على 8 وحدات معالجة مركزية افتراضية ووحدة معالجة رسومات واحدة من Nvidia® Tesla V100.

  1. افتح Cloud Shell على Google Cloud Platform.
  2. استنساخ مستودع FluidNumerics/rcc-apps
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. التغيير إلى دليل gromacs terraform:
cd ~/rcc-apps/gromacs/tf/slurm
  1. إنشاء ومراجعة خطة التضاريس. اضبط متغيّرات البيئة GMX_NAME وGMX_PROJECT وGMX_ZONE لتحديد اسم مجموعتك ومشروعك على Google Cloud Platform والمنطقة التي تريد النشر فيها. يُرجى مراجعة الملاحظة أدناه إذا لم تكن متأكدًا
export GMX_PROJECT=<PROJECT_ID>
export GMX_ZONE=<ZONE> 
export GMX_NAME="gromacs" 
  1. إذا أنشأتَ صورة جهاز افتراضي (VM) في القسم السابق من هذا الدرس التطبيقي، عليك أيضًا ضبط متغيّر البيئة GMX_IMAGE.

تصدير GMX_IMAGE="projects/${GMX_PROJECT}/global/images/gromacs-gcp-foss-latest"

  1. أنشِئ الخطة باستخدام الأمر make الذي سيشغِّل terraform init && terraform plan.
make plan
  1. انشر المجموعة. لا تستغرق عملية الإعداد سوى بضع دقائق منذ أن يتم تثبيت أجهزة Gromacs وتبعياتها مسبقًا على المجموعة.
make apply
  1. بروتوكول النقل الآمن إلى عقدة تسجيل الدخول التي تم إنشاؤها في الخطوة السابقة. ويمكنك الاطّلاع على هذه العقدة في الخطوة السابقة (ربما تُعرف باسم gromacs-login0). يمكنك القيام بذلك عن طريق النقر على الزر SSH بجانب قائمة مثيلات الأجهزة الافتراضية في عنصر قائمة وحدة التحكم Compute Engine -> مثيل الجهاز الافتراضي (VM)

الخيار: سيحدّد هذا الزوج من أوامر gcloud اسم عقدة تسجيل الدخول وبروتوكول SSH بداخلها:

export CLUSTER_LOGIN_NODE=$(gcloud compute instances list --zones ${GMX_ZONE} --filter="name ~ .*login" --format="value(name)" | head -n1)
gcloud compute ssh ${CLUSTER_LOGIN_NODE} --zone ${GMX_ZONE}
  1. بعد الاتصال بعقدة تسجيل الدخول، للتحقق من إعداد المجموعة، تحقق من تثبيت Gromacs.
$ spack find gromacs
==> In environment /apps/spack-pkg-env
==> Root specs
gromacs@2021.2 +cuda~mpi

==> 1 installed package
-- linux-centos7-x86_64 / gcc@9.2.0 -----------------------------
gromacs@2021.2
  1. تأكَّد من أنّ /opt/share/gromacs يتضمّن المحتوى المدرَج أدناه.
$ ls /opt/share/gromacs/
benchMEM.tpr benchPEP-h.tpr benchPEP.tpr benchRIB.tpr

5- تشغيل مقياس RIB للمقاعد

Gromacs هو برنامج بحثي يُستخدم لمحاكاة الديناميكيات الجزيئية وحساب الهياكل الجزيئية في إطار قيود خفض الطاقة. تركّز مقاييس الأداء المتوفّرة في صورة الجهاز الافتراضي (VM) في هذا الدرس التطبيقي حول الترميز على الديناميكيات الجزيئية وتطوُّر أنظمة الذرّات.

في الديناميكيات الجزيئية، تتم محاكاة مواضع الذرّات وسرعاتها وسرعاتها باستخدام قوانين نيوتن للحركة :

638fa1fba54c3874.png

حيث يكون متّجه الموضع هو موضع الذرّة i، وt هو الوقت، و72a717ea69626d54.png هي كتلة الذرّة i وb5e52e17becb80ec.png هي القوة غير المرتبطة بالذرّة i بسبب الذرّة j و538199b3881cd305.png هما القوى الناتجة عن التفاعلات المرتبطة. بناءً على درجة الحرارة والضغط ومواضع الذرة وسرعات الذرة، يتم حساب القوى ويتم دمج النظام رقميًا للحصول على سرعات ذرات ومواضع جديدة. وتتكرر هذه العملية لمحاكاة الديناميكيات الجزيئية لفترة زمنية معينة.

تأتي صورة Gromacs (سواء التي أنشأتها أو الصورة المقدَّمة) مزوّدة بثلاثة مقاييس أداء.

  1. benchMEM
  2. benchRIB
  3. benchPEP

هذه مقاييس الأداء من د. مجموعة معايير Free Gromacs التي أنشأها "كوتزنر" ، وهي مجموعة عادية من عمليات محاكاة الديناميكيات الجزيئية المؤقتة. يختلف كل مقياس أداء في عدد الذرّات ومدة المحاكاة. يتم عرض الإعدادات ذات الصلة لكل محاكاة في الجدول أدناه.

المقياس / مقياس الأداء

benchMEM

benchRIB

benchPEP

عدد ذرات

81,743

2,136,412

12,495,503

حجم النظام / نانومتر

10.8 × 10.2 × 9.6

31.2 × 31.2 × 31.2

50.0 × 50.0 × 50.0

الخطوة الزمنية / fs

2

4

2

شعاع القطر / نانومتر

1

1

1.2

تباعد شبكة PME / نانومتر

0.12

0.135

0.16

لإجراء مقياس الأداء، عليك إرسال مهمة مجمّعة من Sclaimm. بشكل تلقائي، يشغِّل النص البرمجي للدفع الذي تم توفيره قياس أداء RIB. إنّ منصات الإدخال التي تحدِّد إعدادات مقاييس الأداء المُقدَّمة يتم تضمينها في صورة Gromacs VM ضِمن /opt/share/gromacs. بالإضافة إلى ذلك، يتوفّر مثال على نص bash لتشغيل Gromacs ضمن /opt/share.

في هذا القسم، يجب استخدام بروتوكول النقل الآمن (SSH) إلى عقدة تسجيل الدخول في المجموعة.

  1. إرسال مهمة مجمّعة باستخدام الأمر sbatch
$ sbatch --ntasks=1 --cpus-per-task=8 --gres=gpu:1 --out=gromacs.out /opt/share/gromacs_bench.sh

سيؤدي هذا إلى وضع المهمة في قائمة انتظار التنفيذ وسيوفر Sclearm عقدة حوسبة لك. عند تشغيل sinfo، ستلاحظ أنّ عقدة حوسبة في الحالة alloc#، ما يعني أنّ عقدة الحوسبة مخصّصة لمهمتك، ولكنّها قيد الإدارة. بعد تشغيل المهمة، سيتم ضبط العقدة على الحالة alloc.

$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
gromacs*     up   infinite      1 alloc# gromacs-compute-0-0
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 2   gromacs gromacs_      joe  R       0:02      1 gromacs-compute-0-0
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
gromacs*     up   infinite      1  alloc gromacs-compute-0-0

انتظر حتى تكتمل المهمة. يحاكي مقياس الأداء التلقائي (benchRIB) حوالي 8 مليون ذرة، ويتم إعداده لتنفيذ 5,000 خطوة زمنية (مع 4 خطوات زمنية/fs) ويستغرق إكمالها حوالي 6 دقائق. يمكنك مراقبة حالة مهمتك باستخدام الأمر التالي:

watch squeue

عند إزالة مهمتك من قائمة الانتظار، يمكنك الخروج باستخدام ctrl-C.

  1. عند اكتمال المهمة، من المفترض أن يظهر لك دليل باسم run/ يحتوي على ناتج المحاكاة (ضمن run/MEM) وملف سجلّ في الدليل الحالي باسم gromacs.out. يحتوي دليل run/MEM على ملفين ener.edr وmd.log. يخزِّن ملف ener.edr طاقات النظام ودرجة الحرارة والضغط وحجم الصندوق والكثافة والفيروسات بتنسيق ثنائي محمول. كما تشير الإضافة، يحتوي الملف md.log على سجلات لمحاكاة Gromacs، كما يتضمّن معلومات عن أداء المحاكاة، بالإضافة إلى معلومات التسجيل من أدوات حل الجسيمات والجسيمات (PME). يجب أن يبدو محتوى gromacs.out على نتائج عادية من gmx mdrun مشابهًا لما هو موضّح أدناه.
$ tail -n9 gromacs.out
step 5000, remaining wall clock time:     0 s          
               Core t (s)   Wall t (s)        (%)
       Time:     3085.342      385.683      800.0
                 (ns/day)    (hour/ns)
Performance:        4.481        5.356

GROMACS reminds you: "I never thought of stopping, and I just hated sleeping. I can't imagine having a better life." (Barbara McClintock)

OK

6- تهانينا

في هذا الدرس التطبيقي حول الترميز، أنشأت مجموعة من أجهزة HPC مع التدرّج التلقائي ومستنِدة إلى السحابة الإلكترونية وشغّلت محاكاة ديناميكيات جزيئية مسرَّعة لوحدة معالجة الرسومات باستخدام Gromacs على Google Cloud.

التنظيف

لتجنُّب تحمُّل الرسوم من حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا الدرس التطبيقي حول الترميز:

إجراء مقترَح: حذف مجموعة HPC باستخدام Terraform

  1. افتح Cloud Shell وانتقِل إلى الدليل "gromacs/tf/slurm" كمثال.
cd ~/rcc-apps/gromacs/tf/slurm
  1. قم بتشغيل الإتلاف لحذف جميع الموارد.
make destroy

أو، حذف المشروع (الأكثر فعالية وتلفًا)

أسهل طريقة لإزالة الفوترة هي حذف المشروع الذي أنشأته للدرس التطبيقي حول الترميز.

تنبيه: يؤدي حذف المشروع إلى التأثيرات التالية:

  • تم حذف كل محتوى المشروع. إذا استخدمت مشروعًا حاليًا لهذا الدرس التطبيقي حول الترميز، سيتم أيضًا حذف أي عمل آخر أنجزته ضمن هذا المشروع.
  • يتم فقدان أرقام تعريف المشاريع المخصّصة. عندما أنشأت هذا المشروع، ربما تكون قد أنشأت رقم تعريف مشروع مخصّصًا تريد استخدامه في المستقبل. للاحتفاظ بعناوين URL التي تستخدم رقم تعريف المشروع، مثل عنوان URL لـ appspot.com، احذف الموارد المحدّدة داخل المشروع بدلاً من حذف المشروع بالكامل.

إذا كنت تخطط لاستكشاف العديد من الدروس التطبيقية حول الترميز وبدايات سريعة، يمكن أن تساعدك إعادة استخدام المشاريع في تجنُّب تجاوز حدود حصة المشروع.

  1. في Cloud Console، انتقِل إلى صفحة إدارة الموارد. الانتقال إلى صفحة "إدارة الموارد"
  2. في قائمة المشاريع، اختَر المشروع الذي تريد حذفه، ثم انقر على رمز حذف c01e35138ac49503.png.
  3. في مربّع الحوار، اكتب رقم تعريف المشروع ثم انقر على إيقاف التشغيل لحذف المشروع.