ফ্লুইড নিউমেরিকস সহ Gromacs মলিকুলার ডাইনামিক্স সিমুলেশন চালান' স্লার্ম-জিসিপি

১. ভূমিকা

সর্বশেষ হালনাগাদ: ২০২২-০৪-২৫

আপনি যা তৈরি করবেন

এই কোডল্যাবে, আপনি গুগল ক্লাউডে একটি অটো-স্কেলিং হাই পারফরম্যান্স কম্পিউটিং (HPC) ক্লাস্টার ডেপ্লয় করবেন। একটি টেরাফর্ম ডেপ্লয়মেন্টের মাধ্যমে স্প্যাক (Spack ) ব্যবহার করে গ্রোম্যাক্স (Gromacs) ইনস্টল করে এই ক্লাস্টারটি তৈরি করা হয়। ক্লাস্টারটি স্লার্ম (Slurm) জব শিডিউলার দিয়ে পরিচালিত হবে। ক্লাস্টারটি তৈরি হয়ে গেলে, আপনি বেঞ্চমেম (benchMEM), বেঞ্চপেপ (benchPEP), অথবা বেঞ্চরিব (benchRIB) বেঞ্চমার্কগুলো চালাবেন।

আপনি যা শিখবেন

  • স্লার্ম জব শিডিউলার সমর্থনকারী একটি এইচপিসি ক্লাস্টার কীভাবে স্থাপন করবেন
  • স্লার্ম ব্যাচ জব ব্যবহার করে গুগল ক্লাউডে গ্রোম্যাক্স-এর সাহায্যে কীভাবে জিপিইউ অ্যাক্সিলারেটেড মলিকিউলার ডাইনামিক্স সিমুলেশন চালানো যায়

আপনার যা যা প্রয়োজন হবে

২. সেটআপ

এই কোডল্যাবটি সম্পন্ন করতে, আপনাকে Compute Engine এবং Cloud Build API-গুলো সক্রিয় করতে হবে। Compute Engine এবং Cloud Build API-গুলো সক্রিয় করতে, আপনার Cloud Shell খুলুন এবং নিম্নলিখিত কমান্ডগুলো চালান। মনে রাখবেন, আপনার প্রজেক্ট-আইডি -র জায়গায় অন্য একটি আইডি বসাতে হবে। নিচে।

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

সতর্কতা: আপনি যদি আপনার ক্লাস্টারে সংযোগ করার জন্য তৃতীয় পক্ষের SSH (যেমন OpenSSH) ব্যবহার করার পরিকল্পনা করেন, তাহলে OS Login ব্যবহার করে আপনার ক্লাউড আইডেন্টিটি প্রোফাইলে একটি ssh কী সংযুক্ত করতে ভুলবেন না। আপনার ক্লাউড আইডেন্টিটি প্রোফাইলে SSH কী যোগ করার বিষয়ে আরও জানুন

৩. [ঐচ্ছিক] গ্রোম্যাক্স দিয়ে একটি GCP VM ইমেজ তৈরি করুন

এই কোডল্যাবের জন্য আমরা আপনার সুবিধার্থে একটি প্রি-বিল্ট ইমেজ দিয়েছি, কারণ গ্রোম্যাক্স এবং এর সমস্ত ডিপেন্ডেন্সি ইনস্টল করতে বিল্ড প্রক্রিয়ায় ২ ঘণ্টা পর্যন্ত সময় লাগতে পারে। আপনি যদি কিছু সময় বাঁচাতে এই প্রি-বিল্ট ইমেজটি ব্যবহার করতে চান, তবে সরাসরি পরবর্তী বিভাগে চলে যেতে পারেন।

গুগল ক্লাউডে গবেষণা অ্যাপ্লিকেশন চালানোর সময়, আপনার অ্যাপ্লিকেশনটি ইনস্টল এবং ডেপ্লয় করার জন্য অনেকগুলো বিকল্প রয়েছে। কোডল্যাবের এই অংশে, আপনি slurm-gcp (CentOS7) VM ইমেজের উপর ভিত্তি করে একটি ভার্চুয়াল মেশিন ইমেজ তৈরি করবেন। তৈরির প্রক্রিয়া চলাকালীন, কম্পাইলার, Gromacs-এর সমস্ত ডিপেন্ডেন্সি এবং Gromacs ইনস্টল করা হবে।

RCC Apps রিপোজিটরিতে থাকা Gromacs ক্লাউড বিল্ড পাইপলাইনটি Gromacs ইনস্টল করার জন্য প্রয়োজনীয় নির্দেশাবলী ধারণ করে। এই ইনস্টলেশন প্রক্রিয়ায় Packer ব্যবহার করে একটি VM স্থাপন করা হয়, যা Spack ইনস্টল করে। Spack আবার GCC@9.2.0 কম্পাইলার এবং GPU অ্যাক্সিলারেশন সক্রিয় অবস্থায় Gromacs@2021.2 ইনস্টল করে।

  1. GCP-তে আপনার ক্লাউড শেল খুলুন।
  2. FluidNumerics/rcc-apps রিপোজিটরিটি ক্লোন করুন
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. গুগল ক্লাউড বিল্ড ব্যবহার করে ইমেজটি তৈরি করুন।
cd rcc-apps
gcloud builds submit . --config=gromacs/cloudbuild.yaml --project=<PROJECT_ID> --async

আপনি গুগল ক্লাউড বিল্ড ড্যাশবোর্ডে আপনার বিল্ড প্রক্রিয়ার অবস্থা দেখতে পারেন।

বিল্ড প্রক্রিয়াটিতে দুই ঘন্টা পর্যন্ত সময় লাগতে পারে। এই প্রক্রিয়াকে ত্বরান্বিত করতে, আপনি বিল্ড পারফরম্যান্স উন্নত করার জন্য আপনার বিল্ড কনফিগারেশন ফাইলের স্কিমা পরিবর্তন করে মেশিনের ধরন পরিবর্তন করার কথা বিবেচনা করতে পারেন। এটি _MACHINE_TYPE বিল্ড ভেরিয়েবল ব্যবহার করে করা যেতে পারে। উদাহরণস্বরূপ:

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

আপনার বিল্ড সম্পন্ন হলে, আপনার গুগল ক্লাউড প্রজেক্টে একটি ভিএম ইমেজ পাওয়া যাবে, যা ব্যবহার করে আপনি আপনার ক্লাস্টার স্থাপন করতে পারবেন।

৪. Terraform ব্যবহার করে একটি অটো-স্কেলিং HPC ক্লাস্টার স্থাপন করুন

এই অংশে, আপনি Slurm জব শিডিউলার ইনস্টল করা সহ একটি অটো-স্কেলিং HPC ক্লাস্টার স্থাপন করতে Terraform ব্যবহার করবেন। এই ক্লাস্টারটি এমন কম্পিউট নোড দিয়ে স্থাপন করা হবে, যেগুলোর প্রতিটিতে ৮টি vCPU এবং ১টি Nvidia® Tesla V100 GPU থাকবে।

  1. GCP-তে আপনার ক্লাউড শেল খুলুন।
  2. FluidNumerics/rcc-apps রিপোজিটরিটি ক্লোন করুন
cd ~
git clone https://github.com/FluidNumerics/rcc-apps.git
  1. গ্রোম্যাক্স টেরাফর্ম ডিরেক্টরিতে যান:
cd ~/rcc-apps/gromacs/tf/slurm
  1. একটি টেরাফর্ম প্ল্যান তৈরি করুন এবং পর্যালোচনা করুন। আপনার ক্লাস্টারের নাম, আপনার GCP প্রজেক্ট এবং যে জোনে আপনি ডেপ্লয় করতে চান তা নির্দিষ্ট করার জন্য GMX_NAME , GMX_PROJECT এবং GMX_ZONE এনভায়রনমেন্ট ভেরিয়েবলগুলো সেট করুন। আপনি নিশ্চিত না হলে অনুগ্রহ করে নিচের নোটটি পর্যালোচনা করুন।
export GMX_PROJECT=<PROJECT_ID>
export GMX_ZONE=<ZONE>
export GMX_NAME="gromacs"
  1. আপনি যদি এই কোডল্যাবের পূর্ববর্তী অংশে আপনার নিজস্ব ভিএম ইমেজ তৈরি করে থাকেন, তাহলে আপনাকে GMX_IMAGE এনভায়রনমেন্ট ভেরিয়েবলটিও সেট করতে হবে।

export GMX_IMAGE="projects/${GMX_PROJECT}/global/images/gromacs-gcp-foss-latest"

  1. make কমান্ড ব্যবহার করে প্ল্যানটি তৈরি করুন, যা terraform init && terraform plan চালাবে।
make plan
  1. ক্লাস্টারটি স্থাপন করুন। সেটআপ প্রক্রিয়াটিতে মাত্র কয়েক মিনিট সময় লাগে, কারণ গ্রোম্যাক্স এবং এর নির্ভরশীল উপাদানগুলো আপনার ক্লাস্টারে আগে থেকেই ইনস্টল করা থাকে।
make apply
  1. পূর্ববর্তী ধাপে তৈরি করা লগইন নোডটিতে SSH করুন। আপনি এই নোডটি পূর্ববর্তী ধাপে দেখতে পাবেন (সম্ভবত এর নাম gromacs-login0 ) কনসোল মেনু আইটেম Compute Engine -> VM instance- এ VM Instance-এর তালিকার পাশে থাকা SSH বোতামে ক্লিক করে আপনি এটি করতে পারেন।

বিকল্প: এই জোড়া 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

৫. বেঞ্চআরআইবি বেঞ্চমার্কটি চালান।

গ্রোম্যাক্স হলো একটি গবেষণা সফটওয়্যার যা আণবিক গতিবিদ্যা অনুকরণ করতে এবং শক্তি ন্যূনতমকরণের সীমাবদ্ধতার অধীনে আণবিক কাঠামো গণনা করতে ব্যবহৃত হয়। এই কোডল্যাবের জন্য ভিএম ইমেজে প্রদত্ত বেঞ্চমার্কগুলি আণবিক গতিবিদ্যা, অর্থাৎ পরমাণু সিস্টেমের বিবর্তনের উপর আলোকপাত করে।

আণবিক গতিবিদ্যায়, নিউটনের গতির সূত্র ব্যবহার করে পরমাণুর অবস্থান, বেগ এবং ত্বরণ অনুকরণ করা হয়।

638fa1fba54c3874.png

যেখানে, অবস্থান ভেক্টর i পরমাণুর অবস্থান হলো , t হলো সময়, 72a717ea69626d54.png পরমাণু i- এর ভর এবং b5e52e17becb80ec.png পরমাণু j এর কারণে পরমাণু i এর উপর অ-বন্ধন বল এবং 538199b3881cd305.png এগুলো হলো বন্ধনমূলক আন্তঃক্রিয়ার কারণে সৃষ্ট বল। তাপমাত্রা, চাপ, পরমাণুর অবস্থান এবং বেগ জানা থাকলে, বলগুলো গণনা করা হয় এবং নতুন পরমাণুর বেগ ও অবস্থান পাওয়ার জন্য সিস্টেমটিকে সাংখ্যিকভাবে ইন্টিগ্রেট করা হয়। একটি নির্দিষ্ট সময় ধরে আণবিক গতিবিদ্যা অনুকরণ করার জন্য এই প্রক্রিয়াটির পুনরাবৃত্তি করা হয়।

গ্রোম্যাক্স ইমেজটিতে (আপনার তৈরি করা অথবা সরবরাহকৃত) তিনটি বেঞ্চমার্ক রয়েছে।

  1. বেঞ্চএমইএম
  2. বেঞ্চআরআইবি
  3. বেঞ্চপিইপি

এই বেঞ্চমার্কগুলো ডঃ কুটজনারের ‘ফ্রি গ্রোম্যাক্স বেঞ্চমার্কস’ সেট থেকে নেওয়া এবং এগুলো হলো ক্ষণস্থায়ী আণবিক গতিবিদ্যা সিমুলেশনের একটি আদর্শ সেট। প্রতিটি বেঞ্চমার্ক পরমাণুর সংখ্যা এবং সিমুলেশনের সময়কালের দিক থেকে ভিন্ন। প্রতিটি সিমুলেশনের জন্য প্রাসঙ্গিক কনফিগারেশনগুলো নিচের সারণিতে দেওয়া হলো।

মেট্রিক / বেঞ্চমার্ক

বেঞ্চএমইএম

বেঞ্চআরআইবি

বেঞ্চপিইপি

পরমাণুর সংখ্যা

৮১,৭৪৩

২,১৩৬,৪১২

১২,৪৯৫,৫০৩

সিস্টেমের আকার / nm

১০.৮ x ১০.২ x ৯.৬

৩১.২ x ৩১.২ x ৩১.২

৫০.০ x ৫০.০ x ৫০.০

সময় ধাপ / fs

কাটঅফ ব্যাসার্ধ / nm

১.২

পিএমই গ্রিড স্পেসিং / এনএম

০.১২

০.১৩৫

০.১৬

বেঞ্চমার্কটি চালানোর জন্য, আপনাকে একটি স্লার্ম (Slurm) ব্যাচ জব সাবমিট করতে হবে। ডিফল্টরূপে, প্রদত্ত ব্যাচ স্ক্রিপ্টটি বেঞ্চআরআইবি (benchRIB) বেঞ্চমার্কটি চালায়। প্রদত্ত বেঞ্চমার্কগুলোর কনফিগারেশন নির্ধারণকারী ইনপুট ডেকগুলো /opt/share/gromacs এর অধীনে গ্রোম্যাক্স (Gromacs) ভিএম (VM) ইমেজে অন্তর্ভুক্ত রয়েছে। এছাড়াও, গ্রোম্যাক্স চালানোর জন্য একটি উদাহরণ ব্যাশ (bash) স্ক্রিপ্ট /opt/share অধীনে পাওয়া যায়।

এই অংশের জন্য, আপনাকে ক্লাস্টারের লগইন নোডে SSH করতে হবে।

  1. sbatch কমান্ড ব্যবহার করে একটি ব্যাচ জব জমা দিন।
$ sbatch --ntasks=1 --cpus-per-task=8 --gres=gpu:1 --out=gromacs.out /opt/share/gromacs_bench.sh

এটি কাজটি সম্পাদনের জন্য সারিতে যুক্ত করবে এবং স্লার্ম আপনার জন্য একটি কম্পিউট নোড প্রস্তুত করবে। আপনি যখন 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) প্রায় ৮০ লক্ষ পরমাণু সিমুলেট করে এবং এটি প্রতি ধাপে ৫০০০ টাইমস্টেপ (প্রতি fs-এ ৪ টাইমস্টেপ) চালানোর জন্য কনফিগার করা হয়েছে, যা সম্পূর্ণ হতে প্রায় ৬ মিনিট সময় নেয়। আপনি এই কমান্ডটি দিয়ে আপনার কাজের অবস্থা পর্যবেক্ষণ করতে পারেন:

watch squeue

আপনার কাজটি কিউ থেকে চলে গেলে, আপনি ctrl-C চেপে বেরিয়ে যেতে পারেন।

  1. কাজটি সম্পন্ন হলে, আপনি run/ নামে একটি ডিরেক্টরি দেখতে পাবেন, যেখানে সিমুলেশনের আউটপুট ( run/MEM অধীনে) থাকবে এবং আপনার বর্তমান ডিরেক্টরিতে gromacs.out নামে একটি লগ ফাইল থাকবে। run/MEM ডিরেক্টরিতে ener.edr এবং md.log নামে দুটি ফাইল থাকে। ener.edr ফাইলটি সিস্টেমের শক্তি, তাপমাত্রা, চাপ, বক্সের আকার, ঘনত্ব এবং ভিরিয়ালগুলোকে একটি পোর্টেবল বাইনারি ফরম্যাটে সংরক্ষণ করে। এক্সটেনশনটি যেমনটা নির্দেশ করে, md.log ফাইলটিতে গ্রোম্যাক্স সিমুলেশনের লগ থাকে এবং এটি পার্টিকেল-পার্টিকেল ও পিএমই সলভারের লগিং তথ্যের পাশাপাশি সিমুলেশনের পারফরম্যান্স সম্পর্কিত তথ্যও অন্তর্ভুক্ত করে। 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

৬. অভিনন্দন

এই কোডল্যাবে, আপনি একটি অটো-স্কেলিং, ক্লাউড-নেটিভ এইচপিসি ক্লাস্টার তৈরি করেছেন এবং গুগল ক্লাউডে গ্রোম্যাক্স ব্যবহার করে একটি জিপিইউ অ্যাক্সিলারেটেড মলিকিউলার ডাইনামিক্স সিমুলেশন চালিয়েছেন!

পরিষ্কার করা

এই কোডল্যাবে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে:

সুপারিশকৃত: Terraform ব্যবহার করে HPC ক্লাস্টারটি মুছে ফেলুন।

  1. আপনার ক্লাউড শেল খুলুন এবং gromacs/tf/slurm example ডিরেক্টরিতে যান।
cd ~/rcc-apps/gromacs/tf/slurm
  1. সমস্ত রিসোর্স মুছে ফেলার জন্য `make destroy` কমান্ডটি চালান।
make destroy

অথবা , প্রজেক্টটি মুছে ফেলুন (সবচেয়ে কার্যকর এবং ধ্বংসাত্মক)।

বিলিং বন্ধ করার সবচেয়ে সহজ উপায় হলো কোডল্যাবের জন্য তৈরি করা প্রজেক্টটি ডিলিট করে দেওয়া।

সতর্কতা : একটি প্রজেক্ট মুছে ফেলার নিম্নলিখিত প্রভাব রয়েছে:

  • প্রজেক্টের সবকিছু মুছে ফেলা হবে। আপনি যদি এই কোডল্যাবের জন্য কোনো বিদ্যমান প্রজেক্ট ব্যবহার করে থাকেন, তবে সেটি মুছে ফেলার সময় প্রজেক্টটিতে করা আপনার অন্য সব কাজও মুছে যাবে।
  • কাস্টম প্রজেক্ট আইডি হারিয়ে গেছে। এই প্রজেক্টটি তৈরি করার সময়, আপনি হয়তো একটি কাস্টম প্রজেক্ট আইডি তৈরি করেছিলেন যা আপনি ভবিষ্যতে ব্যবহার করতে চান। প্রজেক্ট আইডি ব্যবহার করে এমন URL-গুলো, যেমন appspot.com URL, সংরক্ষণ করতে, পুরো প্রজেক্টটি মুছে ফেলার পরিবর্তে প্রজেক্টের ভেতর থেকে নির্বাচিত রিসোর্সগুলো মুছে ফেলুন।

আপনি যদি একাধিক কোডল্যাব ও কুইকস্টার্ট অন্বেষণ করার পরিকল্পনা করেন, তবে প্রজেক্ট পুনঃব্যবহার আপনাকে প্রজেক্ট কোটার সীমা অতিক্রম করা এড়াতে সাহায্য করতে পারে।

  1. ক্লাউড কনসোলে, ম্যানেজ রিসোর্সেস পেজে যান। ম্যানেজ রিসোর্সেস পেজে যান
  2. প্রজেক্ট তালিকা থেকে, আপনি যে প্রজেক্টটি মুছতে চান সেটি নির্বাচন করুন এবং তারপর ডিলিট-এ ক্লিক করুন। c01e35138ac49503.png .
  3. ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।