DHC

Nume şi descriere proiect

Workflow Layer of Heterogeneous Computing

Prin definirea logică a relațiilor Proces-Date şi maximizarea potențialului unei rețele de calculatoare, se poate ajunge la obținerea unor rezultate satisfăcătoare în timp util. Luăm în considerare un algoritm care este prea complex pentru a fi executat pe un singur procesor, fie el multicore. În cadrul unei rețele să presupunem că majoritatea nodurilor beneficiază de o arhitectură multicore mixtă (CPU+GPU). Putem astfel recolta întreaga putere a unui rețele (având în vedere că problema poate fi împărţită) prin calcul paralel/distribuit/eterogen.Aplicaţia se vrea a fi un layer prin care poate duce la o rezolvare a acestei probleme.

Categorie aplicaţie

  • low-level/high-level mixture programming

Obiective

  • crearea/modificarea unui workflow pentru controlul fluxului de execuţie
  • crearea/adaptarea unui layer pentru distribuirea calculului local în funcţie de hardware
  • extragerea de informatii hardware din fiecare sistem nod si centralizarea sa la server
  • rezvolrea cel putin a unei probleme real world folosind modelul creat/ statistici referitoare le eficienta

Grup ţintă

Persoane interesate şi cu cunoştinţe de bază la:

  • tendinţe evolutie hardware
  • calcul eterogen
  • calcul distribuit
  • controlul fluxului de execuţie procese/date

Limbaje de programare / biblioteci / aplicaţii / framework-uri folosite

  • Programare C/C++ şi/sau Java
  • OpenCL ( INTEL/AMD/NVIDIA/ATI ) – C99 derivat
  • BPEL pentru descrierea fluxului (incert)
  • posibil MPI / Open MPI

Cerinţe necesare

  • cunoştinte bune programare C/C++
  • cunoştinte bune noţiuni calcul paralel/distribuit (ex.: programare MPI/WCF/RMI)
  • cunoştinte de bază calcul eterogen
  • cunoştinţe de bază arhitectura CPU-GPU

Cerințe recomandate

  • cunoştinţe OpenCL/ CUDA/ Stream
  • cunoştinţe aprofundate arhitectura GPU/CPU
  • cunoştinţe bune alte limbaje programare Java/Python

Sisteme de calcul recomandate

  • Preferabil laptop
  • Dual Core CPU (Intel/AMD)
  • 2GB RAM
  • Placă video discretă cu suport STREAM sau CUDA.
    • Atenţie suport dx10 != suport CUDA/STREAM
    • ATI – seria HD4 minim cu excepţii
    • NVIDIA – seria 8 minim cu excepţii

Cunoștințe/abilități dobândite

  • diferenţe arhitecturi CPU-GPU
  • programare arhitecturi eterogene
  • aprecierea problemelor ce pot fi rezolvate cu CPU/GPU
  • teamwork/comunicare
  • proiect orientat către cercetare/ multe din tehnologiile în discuţie încă în stadiu de dezvoltare

Roadmap

  • Interviu + Test: 29 iunie – 1 iulie
  • Rezultate: 1-2 iulie
  • 5-6 iulie: Trunchi Comun (prezentari – 2 zile)
    • prezentare generala proiect / planificare / stabilire program
    • prezentare arhitecturi CPU/GPU/Cell, tendinte tehnologice, proiecte cercetare
    • tehnologii openMPI/OpenMP,CUDA vs STREAM vs OPENCL, Java, diverse framework-uri
  • 7-9 iulie: Impartire/ Specializare Modul (prezentari – 3 zile)
    • impartire indivizi pe module, aprofundare / specializare
    • (1) Java workflow design / Job Generator / Java → C / aplicatie OpenCL
    • (2) Scheduler MPI / OpenCL/ monitorizare
    • (1) Distributie locala openCL CPU/GPU
  • Deadline 1
    • Java workflow design / Job Generator: 15 iulie
    • Scheduller alfa: 16 iulie
    • Distributie locala openCL CPU/GPU: 16 iulie
  • Deadline 2
    • Scheduller beta: 20 iulie
    • Aplicatie OpenCL – Algoritm fractali OpenCL: 21 iulie
    • Unificare si testare: 21-22 iulie

Resurse utile

  • MPI
    • http://www.mcs.anl.gov/research/projects/mpich2/
    • http://en.wikipedia.org/wiki/MPICH
    • http://en.wikipedia.org/wiki/Message_Passing_Interface
  • OpenCL
    • http://en.wikipedia.org/wiki/OpenCL
    • http://www.khronos.org/opencl/
    • http://developer.apple.com/mac/library/documentation/Performance/Conceptual/OpenCL_MacProgGuide/OpenCL_MacProgGuide.pdf
    • http://developer.amd.com/zones/OpenCLZone/Pages/default.aspx
    • http://www.nvidia.com/object/cuda_opencl_new.html
  • CUDA & STREAM
    • http://en.wikipedia.org/wiki/CUDA
    • http://www.amd.com/US/PRODUCTS/TECHNOLOGIES/STREAM-TECHNOLOGY/Pages/stream-technology.aspx
    • http://www.nvidia.com/object/cuda_home_new.html
  • Articole Stiintifice HPC, Calcul Eterogen
    • http://www.gpucomputing.net/
  • Altele
    • http://www.redhat.com/rhel/
    • http://www.fixstars.com/en/products/ydel/cuda/
  • Grigore LUPESCU
  • Daniel PLETEA
  • Mihai OPREA
  • Horatiu POPESCU
  • Aurelian – Ionel URSACHE

Cerințe recomandate

  • cunostinte OpenCL/ CUDA/ Stream
  • cunostinte aprofundate arhitectura GPU/CPU
  • cunostinte bune alte limbaje programare Java/Python…

Sisteme de calcul recomandate

  • Preferabil laptop
  • Dual Core CPU (Intel/AMD)
  • 2GB RAM
  • Placa video discreta cu suport STREAM sau CUDA.
    • Atentie suport dx10 != suport CUDA/STREAM
    • ATI – seria HD4 minim cu exceptii
    • NVIDIA – seria 8 minim cu exceptii
  • Logo Stagii pe Bune