Кіріспе
Алгоритм Компьютерлік ғылымда банктік жоспарлау - паралельді жүйелер үшін жоспарлау алгоритмі, ол әр түрлі процессорларда бір мезгілде жұмыс істеу үшін байланысты желілерді немесе процестерді жоспарлайды. Әдетте бұл бір процеске жататын желілер болады, бірақ олар әртүрлі процестерден болуы мүмкін, онда процестердің өндіруші-тұтынушы қатынасы болуы мүмкін немесе бірдей MPI бағдарламасынан шығуы мүмкін. Топтық жоспарлау екі немесе одан да көп желілер немесе процестер бір-бірімен байланыс жасаса, олардың барлығы бір уақытта байланысуға дайын болатынына кепілдік беру үшін қолданылады. Егер олар топтық жоспарланбаса, онда біреу басқасына хабар жіберуді немесе қабылдауды күте алады, ал ол ұйықтап жатқан кезде, керісінше. Процессорлар артық жазылып, топтық жоспарлау бір-бірімен байланысатын процестер немесе желілер тобында қолданылмайтын жағдайда, әрбір байланыс оқиғасы контексттік ауыстырғыштың үстіне түседі. Банданың жоспарлануы Остерхоут матрицасы деп аталатын дерек құрылымына негізделген. Бұл матрицада әрбір жол уақыт кесіндісін, ал әрбір баған процессорды білдіреді. Әрбір жұмыстың желілері немесе процестері матрицаның бір жолына жинақталады. Орындау кезінде барлық тораптарда бір қатардағы процестерден келесі қатардағы процестерге ауысу үшін үйлестірілген контекстті ауыстыру орындалады. Банданың кестесі басқаларға қарағанда қатаң. Бұл бір процестің барлық желілерін бір мезгілде орындауға мәжбүрлейді, ал косплантация фрагменттерге мүмкіндік береді, олар топтамалардың жиынтығы, олар топтың қалған бөлігімен бір мезгілде орындалмайды. Грантты жоспарлау бірнеше қатарлы машиналарда, әсіресе CM 5 қосылым машинасында іске асырылды және өндіріс режимінде қолданылды.
In computer science, gang scheduling is a scheduling algorithm for parallel systems that schedules related threads or processes to run simultaneously on different processors. Usually these will be threads all belonging to the same process, but they may also be from different processes, where the processes could have a producer consumer relationship or come from the same MPI program. Gang scheduling is used to ensure that if two or more threads or processes communicate with each other, they will all be ready to communicate at the same time. If they were not gang scheduled, then one could wait to send or receive a message to another while it is sleeping, and vice versa. When processors are over subscribed and gang scheduling is not used within a group of processes or threads which communicate with each other, each communication event could suffer the overhead of a context switch. Gang scheduling is based on a data structure called the Ousterhout matrix. In this matrix each row represents a time slice, and each column a processor. The threads or processes of each job are packed into a single row of the matrix. During execution, coordinated context switching is performed across all nodes to switch from the processes in one row to those in the next row. Gang scheduling is stricter than coscheduling. It requires all threads of the same process to run concurrently, while coscheduling allows for fragments, which are sets of threads that do not run concurrently with the rest of the gang. Gang scheduling was implemented and used in production mode on several parallel machines, most notably the Connection Machine CM 5.
Банктер қапшығы (BoG)
Бандалық жоспарлауда, бір-бірден карталау болады, яғни әрбір тапсырма процессорға карталанады. Әдетте жұмыс орындары тәуелсіз топтар ретінде қарастырылады, бірақ топтардың жиынтығымен барлық топтар біріктіріліп, жүйеге бірге жіберілуі мүмкін. Жүйеде жұмыс орындалған кезде, бір BoG-ға жататын барлық топтар өз орындарын аяқтамайынша, орындау ешқашан аяқталмайды. Басым тапсырмалар келіп түскенде, жауап беру уақыты бұдан да төмендейді. Жүйеге басымдықты жұмыс келген сайын, ол жұмыс басқа жұмыстарға қарағанда, тіпті өңдеушілерде орындалып жатқан жұмыстарға қарағанда басымдыққа ие болады. Бұл жағдайда, басымдықты жұмыс келгенде, жүйеде орындалып жатқан суб-кешен тоқтатылады және барлық жетістіктер жоғалады және қайтадан жасалуы керек. Жұмыс тоқтатылуы Банктің жауап беру уақытын одан әрі кешіктіреді.
Ең үлкен бандит бірінші қызмет еткен (LGFS)
Жоғарыда көрсетілген орындау схемасында жұмыс көлемін ұлғайтуға сәйкес келетін тапсырмалар кезекке қойылады, ең үлкен топқа жататын тапсырмалар бірінші рет жоспарланады, бірақ орындаудың бұл әдісі кішігірім жұмыстардың ресурстарын аштыққа ұшыратады, сондықтан өңдеушілердің саны салыстырмалы түрде аз жүйелерде орындауға жарамсыз. Блоктау жағдайы: үзілген жұмыстарға тағайындалған процессорлар бұғатталады және зақымдалған процессорлардан жұмыстар тазаланмайынша өз кезегінде басқа жұмыстарды орындай алмайды.
Солдан оңға негізделген алгоритмдер
Бұл алгоритм - ең жақсы сәйкес алгоритмнің өзгертілген нұсқасы. Ең жақсы сәйкес келетін алгоритмде ПЭ-лер ретті түрде бөлінеді, бірақ бұл алгоритмде ПЭ-лерді әр түрлі жұмыстарға тағайындалған ПЭ-лердің әртүрлі топтарының арасындағы ауыспалылықты азайту үшін екі жақтан да енгізуге болады. 1. Жасырын Өлшемі бойынша сол жақтан оңға. Мұнда, ПЭ-ді жұмыстың көлеміне байланысты реттілікпен және кері реттілікпен енгізуге болады. Егер жұмыс көлемі кіші болса, ПЭ солдан оңға, ал егер жұмыс көлемі үлкен болса, ПЭ оңдан солға енгізіледі. 2. Қауіпсіздік. Сол жақтан оңға қарай. Алдыңғы алгоритмнен айырмашылығы, таңдауы жұмыстың көлеміне байланысты болған, бұл жерде таңдау слотқа байланысты. Енді, бос орындар толтырылып жатқаны, яғни сол жақтан немесе оң жақтан толтырылып жатқаны ретінде көрсетіледі. ЭБ-тер жұмысқа бірдей ретімен беріледі. Екі жақтағы тесік саны шамамен бірдей, сондықтан жаңа тесік ашылғанда, бағыт екі бағыттағы тесік санының негізінде көрсетіледі.
Жүкке негізделген алгоритмдер
Қуаттылық негізделген және солдан оңға негізделген алгоритмдер жеке ЖЭ-дегі жүктемені қамтымайды. Жүкке негізделген алгоритмдер әр түрлі жұмыстарға тағайындалған ПЭ жиынтықтарының бір-біріне ауыспалылығын қадағалап отыра отырып, жеке ПЭ-ге жүктемені ескереді. 1. Жасырын Ең төменгі максималды жүктеме. Бұл схемада ПЭ-лер әрбір жұмыс орындарына жүктелетін жүктемеге байланысты сұрыпталады. Слоттағы бос ПЭ-нің болуы слоттың сыйымдылығын анықтайды. Егер ПЭ желілері бар жұмыс орындарына бөлінсе, жүктеме тәртібіне (соңғысы) ПЭ кез келген ПЭ-нің болуы мүмкін ең жоғары жүктемені анықтайды. Кез келген ПЭ-ге ең төменгі ең жоғары жүктемесі бар тесік таңдалады және тесікке ең аз жүктемесі бар бірнеше еркін ПЭ қолданылады. 2. Қауіпсіздік. Минималды орташа жүктеме. Бұрынғы схемадан айырмашылығы, онда СО-ның ең төменгі ең жоғары жүктемесі негізінде слоттар таңдалды, бұл жерде СО-ның ең төменгі жүктемесі бойынша орташа жүктемесі таңдалады.
Бадди негізделген алгоритм
Бұл алгоритмде ПЭ жеке емес, кластерлерде тағайындалады. ПЭ-лер алдымен екіге көбейтілген топтарға бөлінеді. Топтың әрбір мүшесіне бақылаушы тағайындалады, ал n-тің көлеміне сәйкес келетін жұмыс келгенде, ол 2[lg 2] өлшеміне сәйкес келетін бақылаушыға тағайындалады (n-ден үлкен немесе оған тең 2 ең кіші күші). Басқарушы алдымен барлық пайдаланылған слоттарды сұрыптап, содан кейін 2[lg 2] жалғасқан еркін процессорлардың топтарын анықтайды. Егер бақылаушының кейбір слоттарда барлық ПЭ бос болса, онда тек жаңадан келген жұмыс осы бақылаушыға беріледі. Әйтпесе жаңа орын ашылады.
Көшіруге негізделген алгоритм
Жоғарыда аталған барлық алгоритмдерде бастапқы орналастыру саясаты белгіленеді және жұмыс орындары осыған байланысты ЖО-ға бөлінеді. Алайда, бұл схема жұмыс орындарын бір топ ПЭ-ден екінші топ ПЭ-ге көшіреді, бұл өз кезегінде жүйенің жұмыс істеу бөлігін жақсартады.