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

1. ভূমিকা

শেষ আপডেট: ২০২২-০৪-২৫

তুমি কী তৈরি করবে

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

তুমি কি শিখবে

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

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

2. সেটআপ

এই কোডল্যাবটি সম্পূর্ণ করার জন্য, আপনাকে কম্পিউট ইঞ্জিন এবং ক্লাউড বিল্ড API গুলি সক্ষম করতে হবে। কম্পিউট ইঞ্জিন এবং ক্লাউড বিল্ড API গুলি সক্ষম করতে, আপনার ক্লাউড শেলটি খুলুন এবং নিম্নলিখিত কমান্ডগুলি চালান। আপনার প্রোজেক্ট-আইডিটি প্রতিস্থাপন করতে ভুলবেন না নিচে।

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

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

৩. [ঐচ্ছিক] Gromacs দিয়ে একটি GCP VM ছবি তৈরি করুন

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

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

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

  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

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

৪. টেরাফর্মের সাহায্যে একটি অটো-স্কেলিং এইচপিসি ক্লাস্টার স্থাপন করুন

এই বিভাগে, আপনি Slurm জব শিডিউলার ইনস্টল করে একটি অটো-স্কেলিং HPC ক্লাস্টার স্থাপন করতে Terraform ব্যবহার করবেন। এই ক্লাস্টারটি কম্পিউট নোডের সাথে স্থাপন করা হবে যার প্রতিটিতে 8টি vCPU এবং 1টি 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. যদি আপনি এই কোডল্যাবের পূর্ববর্তী বিভাগে আপনার নিজস্ব 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. পূর্ববর্তী ধাপে তৈরি লগইন নোডে SSH। আপনি পূর্ববর্তী ধাপে (সম্ভবত gromacs-login0 নামে পরিচিত) এই নোডটি দেখতে পাবেন আপনি কনসোল মেনু আইটেম Compute Engine -> VM ইনস্ট্যান্সে VM ইনস্ট্যান্সের তালিকার পাশে থাকা 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

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

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

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

638fa1fba54c3874.png সম্পর্কে

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

Gromacs ইমেজ (আপনার তৈরি করা অথবা প্রদত্ত) তিনটি বেঞ্চমার্ক সহ আসে।

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

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

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

বেঞ্চএমইএম

বেঞ্চআরআইবি

বেঞ্চপিইপি

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

৮১,৭৪৩

২,১৩৬,৪১২

১২,৪৯৫,৫০৩

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

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

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

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

সময়ের ধাপ / fs

কাটঅফ রেডিআই / এনএম

১.২

পিএমই গ্রিড ব্যবধান / এনএম

০.১২

০.১৩৫

০.১৬

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

এই বিভাগের জন্য, আপনাকে ক্লাস্টারের লগইন নোডে SSH করতে হবে

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

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

watch squeue

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

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

৬. অভিনন্দন

এই কোডল্যাবে, আপনি একটি অটো-স্কেলিং, ক্লাউড-নেটিভ HPC ক্লাস্টার তৈরি করেছেন এবং Google Cloud-এ Gromacs-এর সাথে একটি GPU অ্যাক্সিলারেটেড মলিকুলার ডাইনামিক্স সিমুলেশন চালিয়েছেন!

পরিষ্কার করা

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

প্রস্তাবিত: Terraform দিয়ে HPC ক্লাস্টার মুছে ফেলুন

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

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

বিলিং দূর করার সবচেয়ে সহজ উপায় হল কোডল্যাবের জন্য আপনার তৈরি করা প্রকল্পটি মুছে ফেলা।

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

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

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

  1. ক্লাউড কনসোলে, "রিসোর্স পরিচালনা করুন" পৃষ্ঠায় যান। "রিসোর্স পরিচালনা করুন" পৃষ্ঠায় যান।
  2. প্রকল্পের তালিকায়, আপনি যে প্রকল্পটি মুছতে চান তা নির্বাচন করুন এবং তারপরে মুছুন ক্লিক করুন। c01e35138ac49503.png সম্পর্কে .
  3. ডায়ালগে, প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলতে Shut down এ ক্লিক করুন।