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

1. ভূমিকা

শেষ আপডেট: 2022-04-25

যা আপনি নির্মাণ করবেন

এই কোডল্যাবে, আপনি Google ক্লাউডে একটি স্বয়ংক্রিয়-স্কেলিং হাই পারফরমেন্স কম্পিউটিং (HPC) ক্লাস্টার স্থাপন করবেন৷ একটি টেরাফর্ম স্থাপনা স্প্যাকের মাধ্যমে ইনস্টল করা Gromacs সহ এই ক্লাস্টার তৈরি করে৷ ক্লাস্টারটি স্লার্ম কাজের সময়সূচী দিয়ে পরিচালিত হবে। যখন ক্লাস্টার তৈরি করা হয়, আপনি বেঞ্চএমইএম, বেঞ্চপিইপি, বা বেঞ্চআরআইবি বেঞ্চমার্কগুলি চালাবেন।

যা শিখবেন

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

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

2. সেটআপ

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

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

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

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

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

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

RCC অ্যাপস রিপোজিটরিতে Gromacs ক্লাউড বিল্ড পাইপলাইন Gromacs ইনস্টল করার জন্য প্রয়োজনীয় নির্দেশাবলী অন্তর্ভুক্ত করে। ইনস্টলেশন প্রক্রিয়া প্যাকার ব্যবহার করে একটি 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

আপনি Google ক্লাউড বিল্ড ড্যাশবোর্ডে আপনার বিল্ড প্রক্রিয়ার স্থিতি পরীক্ষা করতে পারেন

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

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

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

4. Terraform এর সাথে একটি স্বয়ংক্রিয়-স্কেলিং HPC ক্লাস্টার স্থাপন করুন

এই বিভাগে, আপনি 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. gromacs terraform ডিরেক্টরিতে পরিবর্তন করুন:
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. মেক কমান্ড দিয়ে প্ল্যান তৈরি করুন, যা 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

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

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

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

638fa1fba54c3874.png

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

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

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

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

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

বেঞ্চএমইএম

বেঞ্চআরআইবি

বেঞ্চপিইপি

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

৮১,৭৪৩

2,136,412

12,495,503

সিস্টেমের আকার / এনএম

10.8 x 10.2 x 9.6

31.2 x 31.2 x 31.2

50.0 x 50.0 x 50.0

সময় ধাপ / fs

2

4

2

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

1

1

1.2

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

0.12

0.135

0.16

বেঞ্চমার্ক চালানোর জন্য, আপনি একটি স্লার্ম ব্যাচের কাজ জমা দেবেন। ডিফল্টরূপে, প্রদত্ত ব্যাচ স্ক্রিপ্ট বেঞ্চআরআইবি বেঞ্চমার্ক চালায়। ইনপুট ডেকগুলি যেগুলি প্রদত্ত বেঞ্চমার্কগুলির জন্য কনফিগারেশনগুলিকে সংজ্ঞায়িত করে /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

এটি কার্য সম্পাদনের জন্য সারিবদ্ধ হবে এবং স্লার্ম আপনার জন্য একটি গণনা নোডের ব্যবস্থা করবে। আপনি যখন 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

কাজ শেষ হওয়ার জন্য অপেক্ষা করুন। ডিফল্ট বেঞ্চমার্ক (বেঞ্চআরআইবি) প্রায় 8 মিলিয়ন পরমাণু অনুকরণ করে এবং 5000 টাইমস্টেপ (4 টাইমস্টেপ/এফএস সহ) ধাপে চালানোর জন্য কনফিগার করা হয়েছে এবং এটি সম্পূর্ণ হতে প্রায় 6 মিনিট সময় নেয়। আপনি এই কমান্ডের মাধ্যমে আপনার কাজের স্থিতি নিরীক্ষণ করতে পারেন:

watch squeue

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

  1. কাজটি শেষ হলে, আপনি run/ নামে একটি ডিরেক্টরি দেখতে পাবেন যাতে সিমুলেশন আউটপুট (আন্ডার run/MEM ) এবং একটি লগ ফাইল রয়েছে যার নাম gromacs.outrun/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 ক্লাস্টার তৈরি করেছেন এবং Google ক্লাউডে Gromacs-এর সাথে GPU ত্বরিত আণবিক গতিবিদ্যা সিমুলেশন চালান!

পরিষ্কার করা হচ্ছে

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

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

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

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

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

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

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

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

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