13
1 Planificarea taskurilor în sisteme distribuite prin Particle Swarm Optimization Proiect de laborator Student: VirginásTar Áron Inteligență artificială și calcul distribuit, anul II Rezumat Planificarea taskurilor în sistemele distribuite este o problemă NPcompletă, 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 taskuri independente sau dependente întrun sistem distribuit este o problemă computațională dificilă intens studiată [1]. În funcție de tipul taskurilor, problema de planificare se poate împărți în două mari categorii: planificare de metataskuri și planificare bazată pe graful aciclic orientat al taskurilor de comunicare (DAG). În problema de planificare a metataskurilor 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 sau propus mai mulți algoritmi derivați din PSO pentru planificarea taskurilor 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ă gridurile

Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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

Page 1: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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  

Page 2: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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]  

Page 3: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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ă  

Page 4: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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    

Page 5: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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  

Page 6: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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)  

Page 7: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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  

Page 8: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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  

Page 9: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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:  

Page 10: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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  

Page 11: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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.      

Page 12: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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.    

   

Page 13: Planificarea task‐urilor în sisteme distribuite prin Particle SwarmOptimization

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)