SLURM r srun` বনাম b sbatch` এবং তাদের পরামিতি


95

আমি বুঝতে চেষ্টা করছি SLURM srunএবং sbatchকমান্ডের মধ্যে পার্থক্য কী । আমি নিম্নলিখিত প্রশ্নের সুনির্দিষ্ট উত্তরের পরিবর্তে একটি সাধারণ ব্যাখ্যা দিয়ে খুশি হব, তবে এখানে বিভ্রান্তির কয়েকটি নির্দিষ্ট বিষয় রয়েছে যা একটি সূচনা পয়েন্ট হতে পারে এবং আমি কী সন্ধান করছি তার একটি ধারণা দিতে পারি।

ডকুমেন্টেশন অনুসারে , srunকাজ জমা দেওয়ার জন্য, এবং sbatchপরবর্তী মৃত্যুদন্ড কার্যকর করার জন্য কাজ জমা দেওয়ার জন্য, তবে ব্যবহারিক পার্থক্যটি আমার কাছে অস্পষ্ট এবং তাদের আচরণ একই বলে মনে হয়। উদাহরণস্বরূপ, আমার কাছে দুটি নোডের সাথে একটি ক্লাস্টার রয়েছে, যার প্রতিটি 2 সিপিইউ রয়েছে। যদি আমি srun testjob.sh &একটি সারিতে 5x চালিত করি তবে এটি কোনও সিপিইউ উপলব্ধ না হওয়া অবধি কার্যকরভাবে পঞ্চম কাজ সজ্জিত করবে sbatch testjob.sh

প্রশ্নটি আরও দৃ concrete় করার জন্য, আমি মনে করি যে শুরু করার ভাল জায়গা হতে পারে: এমন কিছু জিনিস যা আমি অন্যটির সাথে করতে পারি না এমন একটি জিনিস এবং কেন?

উভয় আদেশের অনেক আর্গুমেন্ট একই। বেশী যে সর্বাধিক প্রাসঙ্গিক বলে মনে হচ্ছে হয় --ntasks, --nodes, --cpus-per-task, --ntasks-per-nodeকীভাবে এই একে অপরের সাথে সম্পর্কিত, এবং তারা জন্য পার্থক্য কী srunবনাম sbatch?

একটি বিশেষ পার্থক্য যে srunযদি একটি ত্রুটি কারণ হবে testjob.shএক্সিকিউটেবল অনুমতি অর্থাত নেই chmod +x testjob.shযেহেতু sbatchসুখে এটা চালানো হবে। "হুডের নীচে" কী হচ্ছে যা এর কারণ হতে পারে?

ডকুমেন্টেশনে আরও উল্লেখ করা হয় যে srunসাধারণত sbatchস্ক্রিপ্টগুলির অভ্যন্তরে ব্যবহৃত হয় । এটি প্রশ্নের দিকে পরিচালিত করে: তারা কীভাবে একে অপরের সাথে যোগাযোগ করে এবং তাদের প্রত্যেকের জন্য "ক্যানোনিকাল" ইউজকেস কী? বিশেষত, আমি কি srunনিজেই ব্যবহার করব ?

উত্তর:


110

নথি বলছে

srun is used to submit a job for execution in real time

যখন

sbatch is used to submit a job script for later execution.

তারা উভয়ই প্যারামিটারগুলির প্রায় একই সেট গ্রহণ করে। মূল পার্থক্যটি হ'ল srunইন্টারেক্টিভ এবং ব্লক করা (আপনি আপনার টার্মিনালে ফলাফল পাবেন এবং এটি শেষ না হওয়া পর্যন্ত আপনি অন্যান্য কমান্ড লিখতে পারবেন না), যখন sbatchব্যাচের প্রক্রিয়াজাতকরণ এবং অ-ব্লক করা হচ্ছে (ফলাফলগুলি কোনও ফাইলে লেখা হয় এবং আপনি অন্যান্য আদেশগুলি জমা দিতে পারেন) এখনই)

আপনি যদি সাইন srunদিয়ে পটভূমিতে ব্যবহার করেন &, তবে আপনি এর 'ব্লকিং' বৈশিষ্ট্যটি সরিয়ে ফেলেন srun, যা ইন্টারেক্টিভ তবে অ-ব্লকিং হয়ে যায়। এটি এখনও ইন্টারেক্টিভ, এর অর্থ আউটপুটটি আপনার টার্মিনালটিকে বিশৃঙ্খলা করবে এবং srunপ্রক্রিয়াগুলি আপনার টার্মিনালের সাথে সংযুক্ত রয়েছে। যদি আপনি সংযোগ বিচ্ছিন্ন করেন তবে আপনি তাদের উপর নিয়ন্ত্রণ শিথিল করবেন, বা তাদের হত্যা করা যেতে পারে (তারা stdoutমূলত ব্যবহার করেন বা না তা নির্ভর করে )। আপনি যে কাজটি জমা দেওয়ার জন্য যে মেশিনটি সংযুক্ত করছেন তা যদি পুনরায় চালু করা হয় তবে তাদের হত্যা করা হবে।

আপনি যদি ব্যবহার করেন তবে আপনি sbatchআপনার কাজ জমা দিন এবং এটি স্লর্ম দ্বারা পরিচালিত হবে; আপনি কোনও পরিণতি ছাড়াই সংযোগ বিচ্ছিন্ন করতে পারেন, আপনার টার্মিনাল ইত্যাদি হত্যা করতে পারেন। আপনার কাজ আর চলমান প্রক্রিয়ার সাথে যুক্ত নয়।

এমন কিছু জিনিস যা আমি একটির সাথে করতে পারি যা আমি অন্যটির সাথে করতে পারি না এবং কেন?

একটি বৈশিষ্ট্য যা পাওয়া যায় sbatchনা এবং srunহয় কাজ arrrayssrunকোনও sbatchস্ক্রিপ্টের মধ্যে যেমন ব্যবহার করা যায় , এমন কিছুই নেই যা আপনি করতে পারবেন না sbatch

এগুলি কীভাবে একে অপরের সাথে সম্পর্কিত এবং শ্রান বনাম এসবাচের জন্য কীভাবে তারা আলাদা?

সব পরামিতি --ntasks, --nodes, --cpus-per-task, --ntasks-per-nodeউভয় কমান্ড একই অর্থ আছে। এটি উল্লেখযোগ্য ব্যতিক্রম ব্যতীত প্রায় সমস্ত পরামিতিগুলির ক্ষেত্রেই সত্য --exclusive

"হুডের নীচে" কী হচ্ছে যা এর কারণ হতে পারে?

srunরিমোট হোস্টের সাথে সাথেই স্ক্রিপ্টটি সম্পাদন করে, যখন sbatchকোনও অভ্যন্তরীণ স্টোরেজে স্ক্রিপ্ট অনুলিপি করে এবং তারপরে কাজ শুরু হওয়ার পরে এটি কম্পিউট নোডে আপলোড করে। আপনার জমা দেওয়ার স্ক্রিপ্ট জমা দেওয়ার পরে এটি পরিবর্তন করে আপনি এটি পরীক্ষা করতে পারেন; পরিবর্তনগুলি (দেখুন বিবেচনায় নেয়া হবে এই )।

তারা কীভাবে একে অপরের সাথে যোগাযোগ করে এবং তাদের প্রত্যেকের জন্য "প্রচলিত" ইউপকেস কী?

আপনি সাধারণত sbatchচাকরি জমা দেওয়ার জন্য এবং srunজমা স্ক্রিপ্টে স্লর্ম তাদের কল করার সাথে সাথে কাজের পদক্ষেপগুলি তৈরি করতে ব্যবহার করেন। srunপ্রক্রিয়া আরম্ভ করতে ব্যবহৃত হয়। আপনার প্রোগ্রামটি যদি সমান্তরাল এমপিআই প্রোগ্রাম হয় তবে srunসমস্ত এমপিআই প্রক্রিয়া তৈরির যত্ন নেয়। যদি তা না srunহয় তবে --ntasksবিকল্প হিসাবে নির্দিষ্ট হিসাবে আপনার প্রোগ্রামটি যতবার চালানো হবে । অনেক ব্যবহারের উপর নির্ভর করে আপনার প্রোগ্রাম বা অনুরূপ কিনা নয়, একটি দীর্ঘ চলমান সময় আছে বা অন্যথায় নির্দিষ্ট করা না, একটি একক এক্সিকিউটেবল বা না, ইত্যাদি গঠিত হয় ক্ষেত্রে, হয় srunডিফল্টরূপে উত্তরাধিকারী এর প্রাসঙ্গিক অপশন sbatchবা sallocযার ফলে এটি সঞ্চালিত হয় (থেকে অধীনে এখানে )।

বিশেষত, আমি কি কখনও নিজেই শ্রান ব্যবহার করব?

ছোট পরীক্ষা ছাড়া অন্য, না। একটি সাধারণ ব্যবহার হ'ল srun --pty bashএকটি গণনা কাজের উপর শেল পাওয়া।


4
উত্তরের জন্য আপনাকে ধন্যবাদ, আমি যা আশা করতে পারি তার চেয়ে এটি ভাল। একটি ফলোআপ, কারণ এটি আমার মূল বিভ্রান্তির অন্যতম বিষয়: কেন srunসাবমিশন স্ক্রিপ্টের ভিতরে ডাকতে বিরক্ত করবেন ? সম্ভবত আমি একটি "কাজের পদক্ষেপ" এর অর্থ সম্পর্কে বিভ্রান্ত। উদাহরণস্বরূপ, যদি আমার কাছে কোনও স্ক্রিপ্ট runjob.shরয়েছে যা এতে রয়েছে #!/bin/bash srun myjob.sh, (ক) sbatch runjob.shবনাম (খ) sbatch myjob.shবনাম (গ) srun myjob.shবনাম (ডি) কল করার মধ্যে কি কোনও ব্যবহারিক পার্থক্য রয়েছে srun runjob.sh? (স্পষ্টতই শেষটি নির্বোধ, তবে আমি কৌতূহলী)।
dkv

4
সম্ভবত আপনি একটি জমা স্ক্রিপ্টের মধ্যে স্রুন কীভাবে ব্যবহৃত হয় তার ধারণাগুলির জন্য আমি সম্প্রতি সরবরাহ করা একটি প্রশিক্ষণ সেশনের স্লাইডগুলি ব্রাউজ করতে পারলাম: cism.ucl.ac.be/Services/ formations
2016

4
দেখে মনে হচ্ছে স্লাইডগুলির সমস্ত উদাহরণ (পাশাপাশি সিইসিআই পৃষ্ঠায় টিউটোরিয়াল) জমা দেওয়ার স্ক্রিপ্টের srunঅভ্যন্তরে ব্যবহার করা হবে sbatch। তবে, আমি খুঁজে পেয়েছি যে srunজমা স্ক্রিপ্ট ছাড়াই কমান্ডগুলি একইভাবে চলবে। আমি উপরে উল্লিখিত চারটি অনুরোধের মধ্যে আসলেই কি পার্থক্য রয়েছে?
dkv

8
আপনার সমস্ত উদাহরণগুলি একইভাবে চলবে যদি (1) বরাদ্দটি কোনও সিপিইউর জন্য হয় এবং (2) প্রোগ্রামটি খাঁটি অনুক্রমিক হয়। পার্থক্যগুলি দেখতে, একাধিক কাজের জন্য অনুরোধ করুন। আর একটি পার্থক্য হ'ল আপনি যদি স্ক্যাচে স্রুন ব্যবহার না করেন তবে স্টাষ্টাট কমান্ড কোনও দরকারী তথ্য ফিরিয়ে দেবে না
দামিএনফ্রানকোইস

4
@ এই সংস্করণটি এই সংস্করণটি আরও বেশি উন্নত হতে পারে: github.com/damienfrancois/slurm-helper/blob/master/slurm.vim
Damienfrancois

5

এটি আসলে প্রশ্নের পুরোপুরি উত্তর দেয় না, তবে আমি আরও কিছু তথ্য এখানে পেয়েছি যা ভবিষ্যতে কারও পক্ষে সহায়ক হতে পারে:


A থেকে সংশ্লিষ্ট থ্রেড আমি দেখেছি একটি অনুরূপ প্রশ্নের সঙ্গে:

সংক্ষেপে, sbatch এবং salloc কাজের জন্য বরাদ্দ রাখে, যখন শ্রান সেই সমস্ত সংস্থানগুলিতে সমান্তরাল কাজ শুরু করে tasks যখন কোনও কাজের বরাদ্দের মধ্যে অনুরোধ করা হয়, তখন শ্রুন বরাদ্দকৃত কিছু সংস্থান বা সামগ্রীর মধ্যে সমান্তরাল কাজ শুরু করবে। সেক্ষেত্রে, sbatch বা salloc এর অধীন চলমান প্রাসঙ্গিক বিকল্পগুলির মধ্যে ডিফল্টরূপে শ্রেন উত্তরাধিকার সূত্রে প্রাপ্ত। তারপরে আপনি (সাধারণত) শ্রানকে বিভিন্ন বিকল্প সরবরাহ করতে পারেন যা এটি ডিফল্টরূপে প্রাপ্তিকে ওভাররাইড করে। একটি কাজের মধ্যে শ্রান এর প্রতিটি অনুরোধ একটি কাজের পদক্ষেপ হিসাবে পরিচিত।

কাজের বরাদ্দের বাইরেও শ্রানকে অনুরোধ করা যেতে পারে। সেক্ষেত্রে শ্রুন সংস্থানগুলির জন্য অনুরোধ করে এবং যখন সেই সংস্থানগুলি প্রদান করা হয় তখন একক কাজ এবং কাজের পদক্ষেপ হিসাবে সেই সংস্থানগুলি জুড়ে কাজ শুরু করে।

অপেক্ষাকৃত নতুন ওয়েব পৃষ্ঠা রয়েছে যা -বি এবং - এক্সক্লুসিভ বিকল্পগুলির বিষয়ে আরও বিশদে যায়।

ডক / এইচটিএমএল / সিপিইউ_ম্যানেজমেন্ট.শটিএমএল


SLURM FAQ পৃষ্ঠা থেকে অতিরিক্ত তথ্য ।

Srun কমান্ডের দুটি ভিন্ন ভিন্ন পদ্ধতি রয়েছে mod প্রথমত, যদি কোনও বিদ্যমান কাজের মধ্যে না চালানো হয় (যেমন সালোক বা স্ক্যাচ দ্বারা নির্মিত স্লর্ম জব বরাদ্দের মধ্যে নয়), তবে এটি একটি চাকরি বরাদ্দ তৈরি করবে এবং একটি অ্যাপ্লিকেশন তৈরি করবে। যদি কোনও বিদ্যমান বরাদ্দের মধ্যে চালানো হয় তবে srun কমান্ড কেবলমাত্র অ্যাপ্লিকেশনটি তৈরি করে। এই প্রশ্নের জন্য, আমরা কেবল অপারেশনের প্রথম মোডে সম্বোধন করব এবং sbatch এবং srun কমান্ড ব্যবহার করে একটি কাজের বরাদ্দ তৈরি করার তুলনা করব।

Srun কমান্ড ইন্টারেক্টিভ ব্যবহারের জন্য ডিজাইন করা হয়েছে যার সাথে কেউ আউটপুট পর্যবেক্ষণ করে। অ্যাপ্লিকেশনটির আউটপুটটি সাধারণত ব্যবহারকারীর টার্মিনালে শ্রান কমান্ডের আউটপুট হিসাবে দেখা যায়। Sbatch কমান্ডটি পরবর্তীতে কার্যকর করার জন্য একটি স্ক্রিপ্ট জমা দেওয়ার জন্য ডিজাইন করা হয়েছে এবং এর আউটপুট কোনও ফাইলে লেখা হয়। কাজের বরাদ্দে ব্যবহৃত কমান্ড বিকল্পগুলি প্রায় একই রকম। বিকল্পগুলির মধ্যে সর্বাধিক লক্ষণীয় পার্থক্য হ'ল sbatch কমান্ড চাকরির অ্যারেগুলির ধারণাকে সমর্থন করে, যখন শ্রান তা করে না। আরেকটি উল্লেখযোগ্য পার্থক্য হ'ল দোষ সহনশীলতা। স্ক্যাব কাজের সাথে জড়িত ব্যর্থতাগুলির ফলে সাধারণত কাজের প্রয়োজন হয় এবং আবার মৃত্যুদন্ড কার্যকর করা হয়, যখন শ্রানের সাথে জড়িত ব্যর্থতা সাধারণত একটি ত্রুটি বার্তা তৈরি করে যে প্রত্যাশার সাথে ব্যবহারকারী একটি উপযুক্ত ফ্যাশনে প্রতিক্রিয়া জানায়।


এখানে আরও একটি প্রাসঙ্গিক কথোপকথন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.