Intel Xeon Phi

Innen: KIFÜ Wiki
A lap korábbi változatát látod, amilyen Szigeti(AT)niif.hu (vitalap | szerkesztései) 2016. május 2., 14:44-kor történt szerkesztése után volt. (nem támogatott mód)

Az oldalon található információk segítséget nyújtanak a HPC felhasználóinknak, hogy alkalmazásaikat miként portolhatják valamint optimalizálhatják a hatékonyabb futást szem előtt tartva Intel Xeon Phi koprocesszor kártyákon.

Hardver bemutatása

Intel® Xeon Phi™ Coprocessor 7120P

CPU threads/Core max threads CPU Freq Memória L1 cache L2 cache Interfész Ptot Számítási kapacitás
61 4 Hardver 244 1238 GHz 16GB GDDR5 32KB/core 512KB/core PCIe 300W 1,1 PFlop/s
OpenMP-nél csak 240 ~100 cycles

~174 GB/s

~3 cycles ~10 cycles ~7 GB/s

~1 microsecond

Az Intel® 1. generációs Xeon Phi™ koprocesszorában található 61 processzor ugyanazt a 16GB memóriát éri el, de semmilyen módon se fér hozzá közvetlenül a hoszt gép fizikai memóriájához.
Budapest2 és Debrecen3-Phi gépeinkben számítási nodonként 2-2 Phi™ koprocesszor található.
A kártyákon általános célú Linux kernel fut melyre a belépés limitáltan csak a rendszergazdák számára lehetséges SSH-n keresztül a hoszt gépről. Természetesen a kártyára belépve olyan érzésünk lehet, mintha egy sok processzoros gépen dolgoznánk, ami rendelkezik rengeteg memóriával. Ez így is van, de a hatékonyabb kihasználás érdekében az SSH-n keresztüli elérés nem lehetséges, csak a Slurm segítségével valamint a programozási nyelvek által támogatott csatornákon keresztül. Ennek részletezése lentebb megtalálható.

Használati módok

A koprocesszor használatai módjait két csoportba lehet sorolni. A natív és az offload használatot.
Ezen használati módokról a lenti fejezetekben több részletet is megtudhat.
A bemutatott példák c++ nyelven vannak, de természetesen c és fortran esetén is megtalálható az ekvivalens módszer.

nem támogatott mód

közvetlen natív használat

A natív mód arra szolgál, hogy a MIC kártyára lefordított alkalmazásunkat felmásoljuk a kártyára, majd belépünk SSH-n a kártyára és azon futtatjuk a bináris kódunkat.
Ez a legegyszerűbb használati mód, ugyanis nincs más dolgunk, csak a -mmic kapcsolót használni a fordításnál és a fordító egy máris a MIC architektúrára kész bináris készít nekünk.
Workflow a következő lenne:

  1. Alkalmazás megírása. például hello.cc
  2. Alkalmazás fordítása
    icpc -o hello-MIC -mmic hello.cc
  3. Másolás a MIC kártyára
    scp hello-MIC mic0:
  4. belépés a kártyára
    ssh mic0
  5. Alkalmazás futtatása
    ./hello-MIC

támogatott, de nem preferált használat

automatikus kódátvitel

Ebben az esetben nem kell átmásolnunk a bináris alkalmazásunkat a kártyára sőt még csak be se kell lépnünk, mert ezt a két lépést egy beépített tool végzi el.
A tool eléréséhez szükséges parancs neve: micnativeloadex

Ebben az esetben a workflow a következőképpen módosul:

  1. Alkalmazás megírása. például hello.cc
  2. Alkalmazás fordítása
    icpc -o hello-MIC -mmic hello.cc
  3. A tool futásához szükséges library-k megadása
    export SINK_LD_LIBRARY_PATH=/opt/intel/composerxe/compiler/lib/mic
  4. Alkalmazás futtatása
    micnativeloadex hello-MIC
BUDAPEST2[cn10] phi (0)$ export SINK_LD_LIBRARY_PATH=/opt/intel/composerxe/compiler/lib/mic
BUDAPEST2[cn10] phi (0)$ micnativeloadex hello-MIC
Hello world! I have 244 logical cores.
BUDAPEST2[cn10] phi (0)$

támogatott mód

Offload

Offload + OpenMP

Alkalmazások optimalizálása a kártyára

Ebben a fejezetben optimalizálási lehetőségeket mutatunk be, melyek segítségül szolgálhatnak az egyes alkalmazások hatékonyabb futása érdekében ezzel jobban kihasználni a rendelkezésre álló erőforrások adta számítási kapacitás.

Hosszredukció

Vektorizáció

SIMD

AoS -> SoA

Hatékony hossz választás

"Héj ciklusok" kiköszöbölése

Regularizáció

Párhuzamosítás

Párhuzamos szálak ütemezése

Ciklus kifejtés

Automatikus ciklusösszevonás