Upload
aronvirginas
View
66
Download
3
Embed Size (px)
DESCRIPTION
Proiect de laborator Autor: Áron Virginás‐Tar Master în Inteligență Artificială și Calcul Distribuit, anul 2Facultatea de Matematică și InformaticăUniversitatea de Vest din Timișoara
Citation preview
1
Planificarea task-‐urilor în sisteme distribuite prin Particle Swarm Optimization
Proiect de laborator Student: Virginás-‐Tar Áron Inteligență artificială și calcul distribuit, anul II
Rezumat Planificarea task-‐urilor în sistemele distribuite este o problemă NP-‐completă, astfel pentru găsirea unei repartiții optime se recurge deseori la metode euristice. În această lucrare se va prezenta un algoritm de planificare a task-‐urilor în sistemele distribuite eterogene (HC). Algoritmul propus se bazează pe metoda stocastică particle swarm optimization (PSO), care se completează cu o funcție euristică. Pe lângă descrierea algoritmului în formă textuală și pseudocod, lucrarea de față prezintă și o implementare a acestuia în limbajul MATLAB, împreună cu rezultatele obținute pentru diferite date de test.
1. Introducere Planificare unei mulțimi de task-‐uri independente sau dependente într-‐un sistem distribuit este o problemă computațională dificilă intens studiată [1]. În funcție de tipul task-‐urilor, problema de planificare se poate împărți în două mari categorii: planificare de metatask-‐uri și planificare bazată pe graful aciclic orientat al task-‐urilor de comunicare (DAG). În problema de planificare a metatask-‐urilor nu se consideră costuri de comunicare, fiind astfel o problemă cu o complexitate mai redusă decât planificarea bazată pe DAG. [4] În acest proiect se abordează doar această primă categrie de probleme. Din punctul de vedere al omogenității resurselor, sistemele distribuite pot fi de două tipuri: omogene (în cazul în care unitățile de calcul sunt identice) și eterogene (în cazul în care nodurile computaționale diferă în privința puterii de calcul sau a capacității de memorare). În lucrarea de față se va referi doar la categoria din urmă. Datorită complexității problemei de planificare, acesta se abordează deseori prin metode de optimizare stocastică și algoritmi metaeuristici. Dintre soluțiile propuse amintim: simulated annealing (SA), rețele neuronale, algorithmi genetici (GA), tabu search (TS), ant colony optimization (ACO) și – nu în ultimul rând – particle swarm optimization. [4] În mulțimea diferiților algoritmi propuși pentru soluționarea problemelor de planificare, PSO se consideră o abordare metaeuristică promițătoare. Există mai multe criterii care se pot considera în evaluarea eficienței unui algoritm de planificare, însă cea mai importantă metrică este timpul scurs de la începera primului task până la finalizarea ultimului (în literatura de limbă engleză este referit sub numele de makespan). Se va considera optimă o repartiție care minimizează această durată de execuție. 2. Lucrări conexe În literatura de specialitate s-‐au propus mai mulți algoritmi derivați din PSO pentru planificarea task-‐urilor atât în sisteme distribuite omogene [2], cât și în sisteme eterogene (HC) [1][5]. O categorie specială a celor din urmă o reprezintă grid-‐urile
2
computaționale, în cazul cărora distanțele geografice dintre unitățile de calcul conduc la costuri semnificative de comunicare. [2][6][7][9] Unele studii recente investighează aplicabilitatea soluțiilor metaeuristice pentru planificarea resurselor în cloud computing, un concept relativ tânăr în calculul distribuit. De exemplu, în [3] autorii prezintă o metodă de planificare dinamică, bazată pe reprezentarea de tip graf și PSO, aplicată în mediul cloud computing. Algoritmul propus mapează sarcinile unui flux de lucru științific peste resursele din cloud, ținând cont atât de costurile computaționale, cât și de cele de comunicare specifice mediului. În speranța obținerii unor rezultate îmbunătățite, s-‐au dezvoltat numeroase variante hibride, în care PSO se aplică împreună cu alte metode euristice, cum ar fi simulated annealing (SA) [1][5], algoritmii genetici (GA) [5] sau variable neighborhood search (VNS) [8]. În ceea ce privește reprezentarea soluției, există, de asemenea, mai multe abordări. În [2][5] și [6] autorii propun modalități de codificare discrete, în care elementele vectorilor de poziție și viteză sunt valori binare. De exemplu, în lucrarea [2] vectorul de poziție este de forma 𝑋! = 𝑋!!!,… ,𝑋!!" , unde M și N exprimă dimensiunile spațiului de căutare, iar h este indicele particulei. 𝑋!!" ∈ 0,1 sunt bistabili care arată dacă taskul i este sau nu asignat procesorului j pentru particula h. În [7] se utilizează o reprezentare bazată pe vectori reali, iar autorii introduc pe lângă cei doi vectori clasici, 𝑋!" și 𝑉!" , încă doi: vectorul de permutare 𝑆!" și vectorul de operație 𝑅!" . Autorii articolului [9] propun o codificare și mai complexă, în care poziția și viteza particulelor este reprezentată prin matrici fuzzy. 3. Formularea problemei Un sistem HC este compus din unități computaționale care diferă unul de celălalt în ceea ce privește puterea de calcul (și posibil alte caracteristici). Fie 𝑇 = 𝑇!,𝑇!,… ,𝑇! mulțimea task-‐urilor pe care sistemul distribuit trebuie să le execute într-‐un anumit moment. Task-‐urile se consideră complet independente unul față de calălalt. Notăm cu 𝑀 = 𝑀!,𝑀!,… ,𝑀! mulțimea resurselor computaționale din sistem. Se consideră că fiecare calculator poate estima timpul necesar pentru a executa orice task. Din rezultele acestor estimări se construiește matricea 𝑛 × 𝑚 a timpilor de execuție preconizate (ETC), unde n reprezintă numărul task-‐urilor, iar m este numărul calculatoarelor. Dacă notăm această matrice cu C, valoarea 𝐶!" va fi estimata timpului necesar pentru efectuarea task-‐ului 𝑇! de către resursa de calcul 𝑀! . Considerând timpul de execuție 𝐶!" și volumul precedent de încărcare 𝑊! al procesorului 𝑀! , atunci timpul necesar pentru a executa toate task-‐urile asignate acestuia se poate obține astfel: 𝐶!" +𝑊!
!∈!! (1)
unde 𝑇! este mulțimea task-‐urilor asignate la calculatorul 𝑀! . Timpul de execuție necesar pentru întregul sistem (makespan) este maximul acestor valori:
𝑚𝑎𝑘𝑒𝑠𝑝𝑎𝑛 = max 𝐶!" +𝑊!!∈!!
(2)
În această lucrare scopul algoritmului de planificare este găsirea unei repartiții care minimizează (2). Pentru simplitate se consideră că fiecare resursă de calcul execută task-‐urile primite după modelul primul-‐venit-‐primul-‐servit (FCFS). [4]
3
4. Soluția propusă În cele ce urmează voi prezenta o posibilă soluție la problema enunțată în secțiunea anterioară, pornind de la metaeuristica PSO. În primă instanță voi trece în revistă noțiunile fundamentale în legătură cu această metodă, apoi voi prezenta modul în care acesta se poate adapta la cerințele problemei. 4.1. Noțiuni introductive PSO este o tehnică de optimizare stocastică inspirată din comportamentul de grup al diferitelor entități biologice. Algoritmul se bazează pe un roi de particule care se deplasează în spațiul de căutare. O particulă este caracterizată de poziția și viteza acestuia, iar poziția fiecărei particule reprezintă o potențială soluție a problemei abordate. În fiecare iterație se actualizează vitezele și pozițiile particulelor, ținând cont atât de experiența personală a acestora, cât și de experiența întregului grup. Particulel converg astfel către poziția optimă. De asemenea, în fiecare iterație se determină calitatea tuturor pozițiilor pe baza funcției de fitness și se actualizează cele mai bune poziții personale și cea mai bună poziție globală. Particulele se actualizează pe baza următoarelor formule: 𝑉! = 𝑉! + 𝑐!𝑟! 𝑝𝑏𝑒𝑠𝑡! − 𝑋! + 𝑐!𝑟! 𝑔𝑏𝑒𝑠𝑡 − 𝑋! , 𝑘 = 1,𝑃 (3) 𝑋! = 𝑋! + 𝑉! (4)
unde 𝑉! și 𝑋! reprezintă viteza și poziția particulei k, 𝑝𝑏𝑒𝑠𝑡! este cea mai bună poziție personală a particulei, iar gbest este cea mai bună poziție globală a roiului. 𝑐!și 𝑐! sunt coeficienții de accelerație, care controlează influența celor mai bune poziții asupra căutării. P reprezintă numărul particulelor, iar 𝑟! și 𝑟! sunt valori aleatoare din domeniul 0,1 . În unele versiuni de PSO se consideră diferite topologii de vecinătate pentru particule, și se determină cele mai bune poziții ale vecinătăților (lbest). 4.2. PSO pentru planificarea task-‐urilor În această secțiune voi prezenta o versiune a metodei PSO pentru planificarea task-‐urilor într-‐un sistem distribuit eterogen. Metoda propusă este cea descrisă în [4], cu mici ajustări în ceea ce privește vecinătățile alese pentru particule. În această lucrare se consideră topologia stea, ținând cont de o singură poziție optimală pentru întregul roi (varianta gbest). Algoritmul, care urmează a fi prezentat, combină PSO cu o funcție euristică 𝜂, care estimează eficacitatea asignării unui task la un anumit procesor. 4.2.1. Codificarea particulelor Reprezentarea și semnificația particulelor este unul dintre aspectele cheie în dezvoltarea unei soluții PSO de succes. Pozițiile particulelor trebuie gândite astfel încât să codifice repartizarea task-‐urilor. Vitezele trebuie de asemenea definite astfel încât să faciliteze descoperirea unor repartiții îmbunătățite. [4] În această lucrare poziția unei particule 𝑘 ≤ 𝑃 este reprezentată într-‐un spațiu de căutare discret n-‐dimensional, sub forma unui vector 𝑋! = 𝑋!!,𝑋!!,… ,𝑋!" . Fiecare element 𝑋!" are ca valoare un număr natural din domeniul 1,𝑚 și reprezintă indicele unității de calcul căruia i se alocă task-‐ul 𝑇! . Variabilele 𝑝𝑏𝑒𝑠𝑡! și gbest, care păstrează
4
cea mai bună poziție personală a unei particule, respectiv cea mai bună poziție din întregul roi, se vor codifica în mod identic. Viteza 𝑉! a unei particule se reprezintă sub forma unei matrici 𝑚 × 𝑛, a cărei elemente sunt valori reale din domeniul 1,𝑉!"# . 4.2.2. Actualizarea vitezelor În pasul de actualizare a vitezelor se va ține cont de bidimensionalitatea acestora. Figura 1. prezintă secvența de pseudocod responsabilă pentru calcularea noilor viteze. În cazul în care o valoare obținută se află în afara intervalului 1,𝑉!"# , ea se va reinițializa în mod aleator în interiorul domeniului.
4.2.3. Actualizarea pozițiilor În metoda prezentată, pentru actualizarea poziției unei particule, se calculează în prealabil pentru fiecare task probabilitățile asignării acestuia la diferitele unități de calcul. Se obțin astfel:
𝑝!"# =𝑉!"#𝜂!"#
!
𝑉!"#𝜂!"#!!
!!!
(5)
unde 𝑝!"# este probabilitatea asignării task-‐ului 𝑇! la unitatea de calcul 𝑀! pentru particula k. 𝜂!"# reprezintă eficacitatea mapării 𝑇! → 𝑀! pentru particula k și este invers proporțional cu timpul de finalizare al task-‐ului pe unitatea respectivă. Se calculează cu ajutorul următoarei formule: 𝜂!"# =
1𝐶!" +𝑊!"
(6)
pentru fiecare task 𝑗 = 1,𝑛!!!!! dacă 𝑋!" ≠ 𝑝𝑏𝑒𝑠𝑡!" 𝑉!(!!!)! ← 𝑉!(!!")! − 𝑐!𝑟! 𝑉!(!"#$%!")! ← 𝑉!(!"#$%!")! + 𝑐!𝑟! ieșire
dacă 𝑋!" ≠ 𝑔𝑏𝑒𝑠𝑡! 𝑉!(!!")! ← 𝑉!(!!")! − 𝑐!𝑟! 𝑉!(!"#$%!)! ← 𝑉!(!"#$%!)! + 𝑐!𝑟! ieșire ieșire
Figura 1. – Pseudocod pentru actualizaea
vitezelor
5
unde 𝐶!" denotă timpul de execuție al task-‐ului 𝑇! pe procesorul 𝑀! , iar 𝑊!" reprezintă încărcarea curentă a procesorului 𝑀! în cazul particulei k. 𝛽 este un parametru de intrare care controloează ponderea factorului euristic în calculul probabilităților. Odată calculate probabilitățile 𝑝!"# , putem selecta pentru fiecare task 𝑇! o unitate de calcul 𝑀! , după cum urmează:
𝑀! ←arg max
!𝑝!"# 𝑟 < 𝑟!
𝑚𝑒𝑡𝑜𝑑𝑎 𝑟𝑢𝑙𝑒𝑡𝑒𝑖 𝑟 ≥ 𝑟! (7)
În această funcție 𝑟! ∈ 0,1 este un parametru specificat de utilizator, iar r este o variabilă aleatoare cu repartiție uniformă din același interval.
inițializează roiul cu 𝑃 particule: 𝑋,𝑉,𝑊, 𝑝𝑏𝑒𝑠𝑡, 𝑔𝑏𝑒𝑠𝑡,𝑓𝑏𝑒𝑠𝑡 repetă
pentru fiecare particulă 𝑘 = 1,𝑃!!!!! pentru fiecare task 𝑗 = 1,𝑛!!!!! dacă 𝑋!" ≠ 𝑝𝑏𝑒𝑠𝑡!" 𝑉!(!!")! ← 𝑉!(!!")! − 𝑐!𝑟! 𝑉!(!"#$%!")! ← 𝑉!(!"#$%!")! + 𝑐!𝑟! ieșire dacă 𝑋!" ≠ 𝑔𝑏𝑒𝑠𝑡! 𝑉!(!!")! ← 𝑉!(!!")! − 𝑐!𝑟! 𝑉!(!"#$%!)! ← 𝑉!(!"#$%!)! + 𝑐!𝑟! ieșire ieșire anulează vectorul de încărcare 𝑊!
pentru fiecare task 𝑗 = 1,𝑛!!!!! pentru fiecare calculator 𝑖 = 1,𝑚!!!!!! calculează 𝑝!"# prin formula (5) ieșire selectează un calculator pentru task-ul 𝑇! folosind (7) actualizează volumul de încărcare 𝑤 pentru calculatorul selectat ieșire ieșire
pentru fiecare particulă 𝑘 = 1,𝑃!!!!! dacă 𝑓(𝑋!) > 𝑓(𝑝𝑏𝑒𝑠𝑡!) 𝑝𝑏𝑒𝑠𝑡! ← 𝑋! ieșire dacă 𝑓(𝑝𝑏𝑒𝑠𝑡!) > 𝑓𝑏𝑒𝑠𝑡 𝑔𝑏𝑒𝑠𝑡 ← 𝑝𝑏𝑒𝑠𝑡! 𝑓𝑏𝑒𝑠𝑡 ← (𝑓𝑝𝑏𝑒𝑠𝑡!) ieșire ieșire până când condiția de oprire este adevărată
Figura 2. – Pseudocodul algoritmului de planificare
6
4.2.4. Evaluarea fitness-‐ului Deoarece se dorește minimizarea timpului necesar pentru finalizarea tuturor task-‐urilor, funcția de fitness pentru o soluție candidată se definește astfel: 𝑓 𝑘 =
1𝑚𝑎𝑘𝑒𝑠𝑝𝑎𝑛
(8)
unde makespan se calculează prin formula (2). Figura 2. prezintă pseudocodul pentru întregul algoritm. În varianta implementată pentru acest proiect condiția de oprire este atingerea numărului maxim de iterații. 5. Aplicație și rezultate În cadrul acestui proiect am implementat algoritmul prezentat anterior în MATLAB, și l-‐am testat pentru diferite scenarii cu ajutorul fișierelor de test descărcate de pe pagina de web al proiectului. În cele ce urmează voi descrie pe scurt funcțiile aplicației, apoi voi prezenta scenariile de test și rezultatele obținute. 5.1. Structura aplicației function [gbest, fbest, msbest] = pso_tasks(n, m, p, nrit, vmax, c1, c2, r0, beta, fisier_estimari)
Descriere: Funcția principală și totodată punctul de intrare al aplicației. Parametri de intrare: n
numărul task-‐urilor m
numărul unităților de procesare p
numărul de particule nrit
numărul de iterații vmax
viteza maximă admisă c1, c2
coeficienți de accelerare r0
parametrul subunitar care decide metoda de selecție utilizată când se asignează un task la un procesor pe baza probabilităților de asignare
beta parametrul care controlează ponderea factorului euristic în calculul probabilităților de asignare
fisier_estimari fișierul care conține estimările pentru timpile de execuție (cel puțin de dimensiunea 𝑛 × 𝑚)
Parametri de ieșire: gbest
poziția celei mai bune particule (cea mai bună repartizare a task-‐urilor)
7
fbest fitnessul celei mai bune particule
msbest timpul minim necesar pentru finalizarea tuturor task-‐urilor
function x = init_poz(p, m, n)
Descriere: Funcția responsabilă de inițializarea pozițiilor. Generează poziții aleatore cu repartiție uniformă.
Parametri de intrare: n
numărul task-‐urilor m
numărul unităților de procesare p
numărul de particule Parametri de ieșire: x matricea de poziții de dimensiunea 𝑘 × 𝑛
function v = init_vel(p, m, n, vmax)
Descriere: Funcția care inițializează vitezele particulelor. Generează valori aleatore cu repartiție uniformă din dimeniul 1,𝑉!"# .
Parametri de intrare: p
numărul de particule m
numărul unităților de procesare n
numărul task-‐urilor vmax
viteza maximă admisă Parametri de ieșire: v
structura tridimensionala 𝑘 × 𝑚 × 𝑛 care conține vitezele tuturor particulelor
function vbounded = force_bounds(v, vmax)
Descriere: Responsabilitatea acestei funcții este aceea de a se asigura că valorile din matricea de viteze nu depășesc domeniul 1,𝑉!"# . În cazul în care valoarea primită nu se află în acest interval, se înlocuiește cu o valoare aleatoare din domeniu.
Parametri de intrare: v
valoarea de viteză candidată vmax
viteza maximă admisă Parametri de ieșire: vbounded
8
valoarea de viteză din interiorul domeniului (este egal cu v, dacă acesta se află în interiorul intervalului dorit)
function ibest = find_best(x, w, c, m, p)
Descriere:
Caută particula cu cel mai bun fitness din roiul inițial. Se utilizează în inițializarea gbest.
Parametri de intrare: x pozițiile particulelor w
matricea volumului de muncă al procesoarelor pentru fiecare particulă. În principiu, deoarece această funcție se cheamă doar la inițializare, aceste valori sunt nule.
c matricea care conține estimările pentru timpile de execuție m
numărul unităților de procesare p
numărul de particule Parametri de ieșire: ibest
indicele particulei cu cea mai bună poziție function f = calc_fitness(x, w, c, m)
Descriere:
Determină calitatea unei soluții candidate (inversul timpului total de execuție)
Parametri de intrare: x soluția candidată (vectorul de poziție a unei particule) w
volumului de muncă al procesoarelor pentru particula corespunzătoare poziției x
c matricea care conține estimările pentru timpile de execuție m
numărul unităților de procesare Parametri de ieșire: f
valoarea de fitness a soluției candidate
function ms = calc_makespans(x, w, c, m) Descriere:
Calculează timpul total de execuție (makespan-‐ul) pentru o soluție candidată
Parametri de intrare: x soluția candidată (vectorul de poziție a unei particule) w
9
volumului de muncă al procesoarelor pentru particula corespunzătoare poziției x
c matricea care conține estimările pentru timpile de execuție m
numărul unităților de procesare Parametri de ieșire: ms
timpul total de execuție pentru soluția candidată function prob = calc_prob(i, j, m, v, c, w, beta)
Descriere:
Calculează probabilitatea asignării task-‐ului j la procesorul i, ținând cont de estimarea timpului de execuție și de încărcarea procesorului
Parametri de intrare: i
indicele procesorului j
indicele task-‐ului m
numărul total al procesoarelor v
matricea de viteză pentru particula curentă c
matricea ETC w
volumului de muncă al procesoarelor pentru particula curentă Parametri de ieșire: prob
vectorul probabilităților de asignare
function ct = calc_ct(i, j, c, w) Descriere:
Calculează timpul de finalizare al execuției pentru o mapare candidată Parametri de intrare: i
indicele procesorului j
indicele task-‐ului c
matricea ETC w
volumului de muncă al procesoarelor pentru particula curentă Parametri de ieșire: ct
timpul de finalizare al execuției pentru maparea candidată
function efficacy = calc_efficacy(i, j, c, w, beta)
Descriere: Funcție euristică care estimează eficacitatea unei asignări candidate
Parametri de intrare:
10
i indicele procesorului
j indicele task-‐ului
c matricea ETC
w volumului de muncă al procesoarelor pentru particula curentă
beta ponderea factorului euristic în calculul probabilităților
Parametri de ieșire: efficacy
eficacitatea mapării candidate function proc = select_proc(prob, m, r0)
Descriere:
Selectează un procesor pe baza vectorului de probabilități și al unui prag care determină metoda de selecție
Parametri de intrare: prob
vectorul probabilităților de asignare m
numărul unităților de procesare r0
parametru subunitar pe baza căruia se determină metoda de selecție utilizată
Parametri de ieșire: proc
numărul procesorului selectat function chart = plot_mean_workload(prevchart, w)
Descriere:
Funcție auxiliară care afișează graficul mediei volumului de încărcare al procesoarelor într-‐o iterație.
Parametri de intrare: prevchart graficul din iterația precedentă care se va înlocui w
matricea volumului de muncă al procesoarelor pentru fiecare particulă Parametri de ieșire: chart
graficul mediei volumului de încărcare 5.2. Scenarii de test Simulările s-‐au efectuat pe baza unori fișiere de test conținând câte o matrice a timpilor de execuție (ETC) pentru 512 de task-‐uri și 16 unități de procesare. S-‐au testat 12 tipuri diferite de matrici ETC, ținând cont de trei metrici: eterogenitatea task-‐urilor, eterogeintatea unităților de calcul și consistența matricii. Prin eterogenitatea task-‐urilor înțelegem varianța timpilor de execuție a diferitelor task-‐uri pe un anumit calculator. Eterogenitatea unităților de calcul reprezintă variația timpilor de execuție pentru același task pe mai multe calculatoare. O matrice ETC se consideră consistentă, dacă în cazul în
11
care un calculator 𝑀! execută task-‐ul 𝑇! mai rapid decât un alt calculator 𝑀! , atunci 𝑀! execută toate task-‐urile mai rapid decât 𝑀! . În cazul contrar, în care 𝑀! execută unele task-‐uri mai rapid, dar altele mai lent decât 𝑀! , putem vorbi de o matrice ETC inconsistentă. [4] Scenariile de test sunt diferențiate în funcție de acești parametri și notate după șablonul u_x_yy_zz, astfel: u
indică faptul că la generarea matricilor s-‐a folosit repartiția uniformă x
reprezintă factorul de consistență al matricii și poate lua următoarele trei valori: • c consistent • i inconsistent • s semiconsistent
yy indică eterogenitatea task-‐urilor și poate avea următoarele două valori: • lo eterogenitate redusă • hi eterogenitate ridicată
zz reprezintă eterogenitatea calculatoarelor și poate lua aceleași valori ca și yy 5.3. Rezultate obținute Pentru parametrii de intrare am folosit valori inspirate din literatura studiată, fără a efectua teste suplimentare pentru ajustarea acestora. Tabelul 1. rezumă valorile de parametri folosite în testele efectuate.
Parametru Valoare nrit 20 vmax 40 c1 2 c2 2 r0 0.8 beta 0.8
Tabelul 1. – Valori folosite în teste pentru parametri de intrare
S-‐au efectuat 10 rulări consecutive pentru fiecare din cele 12 matrici ETC de test. Tabelul 2. prezintă media duratelor de execuție obținute, împreună cu deviația standard a fiecărui set de rezultate. Se observă consistentența deviațiaiei standard, acesta situându-‐se în jurul valorii 0.03. În cazul matricilor semiconsistente și inconsistente există configurații pentru care deviația standard depășește 0.05, acestea sunt marcate în tabel. În [4] autorii demonstrează eficacitatea metodei prezente în comparație cu o soluție bazată pe GA. Nu am efectuat măsuraturi concrete asupra timpului de execuție, însă pe baza pbservațiilor preliminare acesta pare a fi > 10 min în cazul PC-‐ului portabil cu procesor Intel Core 2 Duo de 2,4 GHz pe care am efectuat testele. Din păcate această observație își pierde relevanța în lipsa unor termeni de comparație.
12
Matricea ETC
Media costurilor
Deviația standard
u_c_lolo 15452 0.0297 u_c_lohi 998952 0.0183 u_c_hilo 416902 0.0302 u_c_hihi 33174600 0.0154 u_s_lolo 12372 0.0737 u_s_lohi 1105300 0.0294 u_s_hilo 384060 0.0704 u_s_hihi 33946000 0.0238 u_i_lolo 11529 0.0359 u_i_lohi 1135100 0.0707 u_i_hilo 3.2280 0.0569 u_i_hihi 35172000 0.0212
Tabelul 2. – Rezultatele testelor efectuate 6. Concluzii O problemă crucială care trebuie tratată în cazul unui sistem HC este planificarea eficientă a task-‐urilor. În cadrul aceastui proiect am studiat și implementat un algoritm de planificare bazată pe combinarea metodei PSO cu o funcție euristică. Rezultatele testelor preliminare efectuate de mine confirmă eficacitatea acestei soluții, demonstrată în [4]. Studiul timpului de execuție și comparația cu alte metode euristice de planificare sunt probleme care nu au fost abordate în această lucrare, dar prezintă o direcție de studiu pentru viitor.
13
Referințe [1] S.N. Sivanandam, P. Visalakshi, A. Bhuvaneswari – Multiprocessor Scheduling Using Hybrid Particle Swarm Optimization with Dynamically Varying Inertia, International Journal of Computer Science & Applications, Vol. 4, pp. 95-‐106 (2007) [2] R.M. Chen – Application of Discrete Particle Swarm Optimization for Grid Task Scheduling Problem, Advances in Grid Computing, InTech, ISBN 978-‐953-‐307-‐301-‐9 (2011) [3] S. Pandey, L. Wu, S.M. Guru, R. Buyya – A Particle Swarm Optimization-‐based Heuristic for Scheduling Workflow Applications in Cloud Computing Environments, Proceedings of the 24th IEEE International Conference on Advanced Information Networking and Applications (2010) [4] H. Izakian, A. Abraham, V. Snášel – Metaheuristic Based Scheduling Meta-‐Tasks in Distributed Heterogeneous Computing Systems, Sensors, Vol. 9, pp. 5339-‐5350 (2009) [5] P.Y. Yin, S.S. Yu, P.P. Wang, Y.T. Wang – A Hybrid Particle Swarm Optimization Algorithm for Optimal Task Assignment in Distributed Systems, Computer Standards & Interfaces, Vol. 28, pp. 441–450 (2006) [6] H. Izakian, B.T. Ladani, K. Zamanifar, A. Abraham – A Novel Particle Swarm Optimization Approach for Grid Job Scheduling, Proceedings of the 3rd International Conference on Information Systems, Technology and Management, pp. 100–110 (2009) [7] L. Zhang, Y. Chen, R. Sun, S. Jing, B. Yang – A Task Scheduling Algorithm Based on PSO for Grid Computing, International Journal of Computational Intelligence Research, Vol. 4, No. 1, pp. 37–43 (2008) [8] H. Liu, A. Abraham, O. Choi, S.H. Moon – Variable Neighborhood Particle Swarm Optimization for Multi-‐objective Flexible Job-‐Shop Scheduling Problems, Proceedings of the 6th International Conference on Simulated Evolution and Learning, pp. 197-‐204 (2006) [9] H. Liu, A. Abraham, A.E. Hassanien – Scheduling Jobs on Computational Grids Using a Fuzzy Particle Swarm Optimization Algorithm, Future Generation Computer Systems, Vol. 26, pp. 1336–1343 (2010)