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