Parallel programming analysis on OCR

384 views
359 views

Published on

In Romanian Language. OpenMP, PThread and MPI implementation and comparison of an OCR program.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
384
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Parallel programming analysis on OCR

  1. 1. Schnell OCR<br />OCR simplu şi rapid<br />5 ian 2011, laboratorul de APP<br />
  2. 2. Functia programului<br /><ul><li>Intrare:
  3. 3. Fisier sau lista fisiere imagine. Suporta jpg, tiff, png in functie de disponibilitatea bibliotecilor de sistem
  4. 4. Iesire:
  5. 5. Textul recunoscut in imagine
  6. 6. Precizari calitate OCR
  7. 7. Fara detectia spatiilor
  8. 8. Poate pune la dispozitie si un calificativ de similaritate (claritate) al caracterului recunoscut
  9. 9. Nu ignora caracterele cu calificativ scazut de similaritate</li></li></ul><li>Descriere algoritm<br /><ul><li>einfach_trennen - ia ca parametru o imagine si intoarce o lista dublu inlantuita cu posibilele litere
  10. 10. vektor_generieren - calculeaza "semnatura" literei - un vector de caracteristici.
  11. 11. alcatuit din 8 metode - ambele sensuri pe 4 directii (orizontala, verticala, doua diagonale)
  12. 12. fiecare metoda salveaza coeficienti (de fapt coordonate) in vector
  13. 13. vektor_vergleichen - calculeaza diferenta intre doi vectori, adica eroarea patratica: cu cat mai mica, cu atat simbolurile sunt mai probabile sa coincida</li></li></ul><li>Descriere algoritm<br /><ul><li>zeichenliste – lista inlantuita de litere probabil
  14. 14. Utilizata implementarea list.h din kernelul de Linux</li></ul>#define list_entry(ptr, type, member) <br /> (type *)((char *)(ptr) - (char *)(&((type *)0)->member))<br /><ul><li>Comparare iterativa cu toate mostrele hardcodate in kennen_muster.cpp, selectarea celei cu eroare minima</li></li></ul><li>Fişiere de testare<br /><ul><li>Fişiere de rezoluţie diferită – 1, 4, 16, 100 megapixeli, jpg, tiff, png
  15. 15. Obţinute prin umplerea cu text
  16. 16. Obţinute prin scalarea primeia</li></li></ul><li>Fişiere de testare<br /><ul><li>Iată un studiu comparativ al rulării programului cu fişierele obţinute prin umplere cu text şi cu cele obţinute prin scalare:</li></li></ul><li>Profiling<br /><ul><li>Valorile timpilor de procesor folositi de proceduri, sortate dupa timpul exclusiv (fara subprocedurile apelate) </li></li></ul><li>OMP<br /><ul><li>Avantaje
  17. 17. Usor de implementat
  18. 18. Fara probleme de sincronizare / deadlock
  19. 19. Dezavantaje
  20. 20. Flexibilitate redusa de paralelizare
  21. 21. Mult overhead
  22. 22. Aproape imposibil de paralelizat prelucrari pe liste</li></li></ul><li>OMP<br />
  23. 23. Pthreads<br /><ul><li>Prima incercare – calcul paralel al similaritatii cu elementele din fisierul de mostre</li></li></ul><li>Pthreads<br /><ul><li>A doua incercare – decodare paralela a literelor din imagine (un nivel mai sus)</li></li></ul><li>Pthreads<br /><ul><li>Varianta 1 – overhead</li></ul>OH_1 = (overhead_creare_thread-uri + overhead_eliberare_thread-uri) * Nr_thread-uri * Nr_caractere<br /><ul><li>Varianta 2 – overhead</li></ul>OH_2 = (overhead_creare_thread-uri + overhead_eliberare_thread-uri) * Nr_thread-uri<br /><ul><li>OH1 / OH2 = Nr_caractere (poate fi foarte mare!!!)</li></li></ul><li>Pthreads<br />
  24. 24. MPI<br /><ul><li>Broadcast bitmap la workeri
  25. 25. Numarare simboluri, repartizarea punctelor de start si finish pentru fiecare worker
  26. 26. Isend-ul neblocant asigura transmisia fara overhead
  27. 27. Asteptarea blocanta a rezultatelor
  28. 28. Asigura valabilitatea datelor in context. Rezultatele sunt concatenate in ordinea in care au fost plasate sarcinile
  29. 29. Situatie de timp de stall nedorit: nodurile care primesc primele sarcinile sunt mai lente decat cele care le primesc spre final</li></li></ul><li>MPI<br />
  30. 30. Comparatii<br />
  31. 31. Verificare corectitudine<br />Simplu! Diff, sau..<br />
  32. 32. Comparatii<br />
  33. 33. Lucrul în echipă<br />
  34. 34. Concluzii<br /><ul><li>Flexibilitatea Pthreads a permis obtinerea unei optimizari mai eficiente decat OpenMP
  35. 35. MPI a obtinut rezultate bune, scalabile pe hardware; eficient cand calculele au o pondere mai mare decat dimensiunea datelor transmise intre noduri
  36. 36. Un proiect interesant pentru
  37. 37. utilizarea bibliotecii de manipulare fisiere media OpenCV
  38. 38. folosirea listei inlanutite din kernelul Linux
  39. 39. modul de utilizare al clasificatorilor pentru elemente grafice
  40. 40. calcul paralel si distribuit</li></li></ul><li>Dan Greceanu, dgreceanu@gmail.com<br />si <br />Mihnea Simian, contact@mesimian.com<br />va multumesc pentru atentie! <br />Nu sunati pana in 10 sau dupa 23. Serios.<br />
  41. 41. Întrebări?<br />

×