Details zu AMDs heterogener Verarbeitungsschlange

Die­se Woche gab AMD Details zur Pro­gramm­ab­ar­bei­tung auf HSA-fähi­gen Pro­zes­so­ren bzw. APUs bekannt, zusätz­lich beant­wor­te­te uns AMD noch Detail­fra­gen dazu. Das beschrie­be­ne Kon­zept hört im Eng­li­schen auf den Namen “hete­ro­ge­neous Queu­ing”, abge­kürzt: “hQ”.

Wie schon bei AMDs Spei­cher­tech­nik hUMA ist “hete­ro­gen” schnell erklärt. Bei hUMA bedeu­tet es schlicht, dass unter­schied­li­che Pro­zes­sor­ker­ne auf einen gemein­sa­men Spei­cher über glei­che Spei­cher­adres­sen zugrei­fen kön­nen. Im Zusam­men­spiel mit einer Ver­ar­bei­tungs­schlan­ge bedeu­tet es nun, dass sich die glei­chen unter­schied­li­chen Pro­zes­sor­ker­ne nun gegen­sei­tig Arbeit zuschi­cken können:

hUMA und hQ sind sich also kon­zep­tio­nell ähn­lich, aber im Ver­gleich zum Spei­cher gibt es kei­ne gemein­sa­me Schlan­ge, son­dern min­des­tens zwei, eine für die CPU sowie eine für die GPU:

Die­se bei­den War­te­schlan­gen wer­den von der jewei­li­gen Rechen­ein­heit regel­mä­ßig auto­ma­tisch abge­fragt und even­tu­ell gefun­de­ne Rechen­pa­ke­te dadurch zügig abge­ar­bei­tet. Die Pake­te lie­gen im Haupt­spei­cher, wobei ein soge­nann­tes hQ-Paket aber kei­nen aus­zu­füh­ren­den Code selbst ent­hält, son­dern nur einen Zei­ger auf diesen.

Dadurch, dass die hQ-Pake­te im Haupt­spei­cher lie­gen, könn­te man nun anneh­men, dass die Kom­mu­ni­ka­ti­on zwi­schen CPU und GPU stark von der rela­tiv hohen RAM-Latenz behin­dert wird. Jedoch ver­si­cher­te uns AMD auf Nach­fra­ge, dass die Spei­cher­stel­len der hQ-Pake­te voll cache-fähig sei­en, es auch kei­ne Kohä­renz­pro­ble­me zwi­schen CPU und GPU gäbe und somit kei­ne Per­for­mance-Pro­ble­me entstünden.

Neu ist das beschrie­be­ne Paket­for­mat nicht ganz. Im bereits seit Län­ge­rem öffent­lich erhält­li­chen HSA-PDF wer­den schon soge­nann­te AQL-Pake­te (Archi­tec­ted Queu­ing Lan­guage) beschrie­ben. AMD bestä­tig­te uns, dass die hQ-Pak­te eng mit die­sen ver­wandt sei­en und sie voll unter­stüt­zen. Alle bis­her gezeig­ten Funk­ti­ons­be­schrei­bun­gen wer­den auch von den AQL-Pake­ten erfüllt, jedoch wür­den die hQ-Pake­te noch AMD-spe­zi­fi­sche Fea­tures, die über den stan­dar­di­sier­ten Rah­men hin­aus gin­gen, unter­stüt­zen. Die AQL-Pake­te sind fol­gen­der­ma­ßen spezifiziert:

An AQL packet is an HSA-stan­dard packet for­mat. AQL dis­patch packets are used to dis­patch new ker­nels on the HSA com­po­nent and spe­ci­fy the launch dimen­si­ons, ins­truc­tion code, ker­nel argu­ments, com­ple­ti­on detec­tion, and more. Other AQL packets may also be sup­port­ed in the future.

Dadurch, dass sich die GPU über hQs die Arbeit selbst holen kann, besteht ein Vor­teil gegen­über der aktu­el­len bzw. bald ver­al­te­ten Tech­nik, bei der die CPU Berech­nun­gen hän­disch und rela­tiv kom­pli­ziert über Betriebs­sys­tem­schnitt­stel­len und Ker­nel­trei­ber an die GPU sen­den muss. Die­ser alte Umweg ist im fol­gen­den Bild sche­ma­tisch dargestellt:

Zum Schluss wol­len wir noch auf den Umstand hin­wei­sen, dass es nicht nur zwei Schlan­gen gibt. Jede Appli­ka­ti­on kann ihre eige­ne Schlan­ge benut­zen, wobei es aber eine gewis­se Ober­gren­ze bei ca. 30 Stück gibt:

Man darf also gespannt auf die Ver­bes­se­rung sein, die HSA mit sich bringt, allein es fehlt noch an der Hard­ware. AMD wird hof­fent­lich bald nach­le­gen und auf der kom­men­den APU13-Mes­se nicht nur Foli­en son­dern auch Sili­zi­um zeigen.

Alle Foli­en gibt es in unse­rer Slideshow:

Abschlie­ßend möch­ten wir uns bei AMD für die Beant­wor­tung unse­rer Fra­gen bedanken.

Quel­le:
Stan­dards — HSA Foun­da­ti­on.