SC16: AMD stellt Open-Source-Programmierplattform ROCm 1.3 f체r GPU-Beschleuniger vor

Artikel-Index:

Vor einem Jahr stell짯te AMD mit Blick auf Hypers짯ca짯le Com짯pu짯ting die Boltz짯mann-Initia짯ti짯ve auf der SC15 vor, die im Wesent짯li짯chen aus zwei Aspek짯ten besteht. Zum einen soll f체r Ent짯wick짯ler ein Soft짯ware짯철ko짯sys짯tem mit den not짯wen짯di짯gen Tools erschaf짯fen wer짯den, um CPUs effi짯zi짯ent zusam짯men mit GPUs als Beschleu짯ni짯gern nut짯zen zu k철n짯nen. Zum ande짯ren wird mit HIP (Hete짯ro짯ge짯neous-Com짯pu짯te Inter짯face for Por짯ta짯bi짯li짯ty) ein m철g짯lich ein짯fa짯cher Por짯tie짯rungs짯weg f체r bestehen짯den CUDA-Code gebo짯ten, von wo aus GPUs sowohl von AMD (via Hete짯ro짯ge짯neous Com짯pu짯te Com짯pi짯ler, kurz HCC) als auch NVIDIA (via NVIDIA CUDA Com짯pi짯ler, kurz NVCC) genutzt wer짯den k철n짯nen. Dar짯aus her짯vor짯ge짯gan짯gen ist die Rade짯on Open Com짯pu짯te Plat짯form oder kurz ROCm, die spe짯zi짯ell auf gro짯횩e Rechen짯sys짯te짯me (Super짯com짯pu짯ter) abzielt. Kon짯se짯quen짯ter짯wei짯se setzt die Platt짯form auf 64-Bit-Linux als Betriebs짯sys짯tem, was in die짯sem Umfeld De-fac짯to-Stan짯dard ist, und Open Source. S채mt짯li짯che Tei짯le von ROCm wer짯den unter MIT-Lizenz auf Git짯Hub der brei짯ten 횜ffent짯lich짯keit zur Ver짯f체짯gung gestellt. AMD ver짯spricht sich hier짯von schnel짯le짯re Fort짯schrit짯te bei der Ent짯wick짯lung des Soft짯ware-Stacks. Kun짯den pro짯fi짯tie짯ren nicht nur von bes짯se짯ren Kom짯mu짯ni짯ka짯ti짯ons- und Inter짯ak짯ti짯ons짯m철g짯lich짯kei짯ten mit den Ent짯wick짯lern, son짯dern k철n짯nen den Code auch viel ein짯fa짯cher auf die eige짯nen Bed체rf짯nis짯se anpas짯sen. ROCm ist qua짯si das Gegen짯st체ck zu GPUO짯pen, wel짯ches in ers짯ter Linie auf Ent짯wick짯ler von Com짯pu짯ter짯spie짯len abzielt.

Wie passt nun das zuvor so oft ver짯wen짯de짯te Akro짯nym HSA (Hete짯ro짯ge짯neous Sys짯tem Archi짯tec짯tu짯re) ins Bild? Die HSA-Spe짯zi짯fi짯ka짯ti짯on, die von AMD gemein짯sam mit ande짯ren Fir짯men 체ber die HSA Foun짯da짯ti짯on ent짯wi짯ckelt wur짯de, defi짯niert Anfor짯de짯run짯gen an die Hard짯ware, wel짯che die Pro짯gram짯mie짯rung hete짯ro짯ge짯ner Sys짯te짯me ver짯ein짯fa짯chen sol짯len (z. B. Shared Vir짯tu짯al Memo짯ry, Signa짯le, Paket짯for짯ma짯te, Com짯mand-Queue Inter짯faces und Con짯text Swit짯ching). HSA defi짯niert also die Hard짯ware짯ba짯sis, wel짯che f체r ROCm not짯wen짯dig ist. Die ROCr-API ist im Kern die HSA-Run짯time, die mit Erwei짯te짯run짯gen f체r dis짯kre짯te GPUs und Peer-to-Peer-Kom짯mu짯ni짯ka짯ti짯on zwi짯schen den GPUs (inner짯halb eines Kno짯tens oder zwi짯schen den Kno짯ten eines Racks per RDMA oder Infi짯ni짯Band) ver짯se짯hen wurde.

S채mt짯li짯che Trei짯ber wur짯den mit Blick auf Latenz짯re짯du짯zie짯rung und Durch짯satz짯op짯ti짯mie짯rung (ohne R체ck짯sicht auf Lega짯cy-Kom짯pa짯ti짯bi짯li짯t채t) von Grund auf neu ent짯wi짯ckelt und f체r die Nut짯zung meh짯re짯rer Beschleu짯ni짯ger pro Kno짯ten und ver짯teilt 체ber das Rack aus짯ge짯legt. Wich짯tig ist auch, dass die짯se head짯less, also ohne an die Gra짯fik짯kar짯te ange짯schlos짯se짯nen Moni짯tor, betrie짯ben wer짯den k철n짯nen. Die Peer-to-Peer-Kom짯mu짯ni짯ka짯ti짯on mit RDMA inner짯halb eines Kno짯tens und/oder Racks wur짯de von Anfang an ein짯ge짯plant. Zudem exis짯tiert die fr체짯he짯re Limi짯tie짯rung auf 2 oder 4 GiB Gra짯fik짯spei짯cher pro Allo짯ka짯ti짯on nicht l채n짯ger. Mit dem neu짯en Soft짯ware-Stack l채sst sich nahe짯zu der gesam짯te vor짯han짯de짯ne Gra짯fik짯spei짯cher f체r eine ein짯zi짯ge Allo짯ka짯ti짯on nut짯zen. Au횩er짯dem kann man per GCNI짯SA-Assem짯bler und 멏is짯as짯sem짯bler soge짯nann짯ten Hot Code (hier wird die meis짯te Rechen짯zeit ver짯bra짯ten) optimieren.
Neben HIP als wich짯ti짯gen Weg f체r bestehen짯den Code bie짯tet AMD aber 체ber ROCm auch die M철g짯lich짯keit, einen ein짯zi짯gen gro짯횩en ISO멌++-Quelltext zur Pro짯gram짯mie짯rung von CPUs und GPUs zu ver짯wen짯den. Hier짯f체r fin짯det dann der HCC Anwen짯dung. F체r die Aus짯la짯ge짯rung der Berech짯nun짯gen kann OpenMP 4.5 ver짯wen짯det wer짯den. Zudem bie짯tet der neue Stan짯dard C++ 17 체ber Par짯al짯lel STL neue M철g짯lich짯kei짯ten, Par짯al짯le짯li짯t채t auch f체r Beschleu짯ni짯ger aus짯zu짯dr체짯cken. Python ist wich짯tig im Feld Data Sci짯ence, spe짯zi짯ell im Feld maschi짯nel짯les Ler짯nen. F체r die Aus짯wer짯tung von gro짯횩en Daten짯men짯gen kommt zumeist Python zum Zuge. Hier wird der Ein짯satz von GPUs als Beschleu짯ni짯ger mit Hil짯fe des Com짯pi짯lers NUMBA rea짯li짯siert, was vom Ent짯wick짯ler Con짯ti짯nu짯um Ana짯ly짯tics, Inc. aus Aus짯tin bei짯gesteu짯ert wird und fort짯an Teil von ROCm ist.

Auf der SC16 in Salt Lake City stellt AMD die Ver짯si짯on ROCm 1.3 offi짯zi짯ell vor, mit der die aktu짯el짯le Pola짯ris-Archi짯tek짯tur und LLVM als Nati짯ve Com짯pi짯ler unter짯st체tzt wer짯den. Eine wich짯ti짯ge Neue짯rung mit Blick auf Machi짯ne-Lear짯ning-Anwen짯dun짯gen ist die Com짯pi짯ler-sei짯ti짯ge Unter짯st체t짯zung f체r Float16 und Integer16, was von den neu짯es짯ten GPUs hard짯ware짯sei짯tig unter짯st체tzt wird und die Beschleu짯ni짯gung ent짯spre짯chen짯der Anwen짯dun짯gen nahe짯zu um den Fak짯tor zwei erlaubt. Au횩er짯dem haben s채mt짯li짯che Bestand짯tei짯le des ROCm-Soft짯ware-Stacks Updates erfah짯ren. Genaue짯re Infor짯ma짯tio짯nen hier짯zu k철n짯nen den Foli짯en ent짯nom짯men wer짯den. Die Ver짯철f짯fent짯li짯chung einer Win짯dows-Ver짯si짯on ist im 횥bri짯gen aktu짯ell nicht geplant, aber auch nicht f체r alle Zei짯ten ausgeschlossen.

Wei짯te짯re Infor짯ma짯ti짯on sowie der Quell짯text zu ROCm las짯sen sich hier fin짯den. Auf den nach짯fol짯gen짯den Foli짯en gibt AMD zudem einen klei짯nen Aus짯blick, wie die wei짯te짯re Ent짯wick짯lung von ROCm aus짯se짯hen soll. Hier liegt der Fokus in zuneh짯men짯den Ma횩e nicht mehr auf den mathe짯ma짯ti짯schen Basis짯bi짯blio짯the짯ken, son짯dern auf f체r bestimm짯te Anwen짯dun짯gen spe짯zia짯li짯sier짯ten. Zudem erh채lt Open짯CL eini짯ge neue Fea짯tures, 체ber ein Plug짯in bereit짯ge짯stellt, wel짯che von der Hard짯ware unter짯st체tzt wer짯den, aber eben nicht vom OpenCL-Standard.

Auf Sei짯ten der Hard짯ware wer짯den von AMD offi짯zi짯ell nicht nur die teu짯ren Pro짯fi짯l철짯sun짯gen Rade짯on Pro WX und Fire짯Pro unter짯st체tzt, son짯dern auch als Ein짯stiegs짯l철짯sung bei짯spiels짯wei짯se f체r Stu짯den짯ten die aktu짯el짯len Rade짯on RX 400.

CPU-sei짯tig soll ROCm neben der Unter짯st체t짯zung f체r x86-CPUs, zu denen auch bereits die kom짯men짯den Zen-Pro짯zes짯so짯ren geh철짯ren, auch auf ARM- und Power8-Sys짯te짯men lau짯fen. Hin짯sicht짯lich der Inter짯con짯nect-Tech짯no짯lo짯gien setzt AMD aktu짯ell nicht auf ein ein짯zel짯nes Pferd, son짯dern hat sich gleich bei drei Kon짯sor짯ti짯en ein짯ge짯bracht. Hier짯zu geh철짯ren GenZ (Spei짯cher-Inter짯con짯nect auf Rack-Ebe짯ne), CCIX (Host I/O, P2P-Acce짯le짯ra짯tor-L철sung) und Open짯CA짯PI (Host I/O, von IBM f체r Power8 gepusht, jetzt in H채n짯den eines Kon짯sor짯ti짯ums, zu des짯sen f체h짯ren짯den Mit짯glie짯dern neben IBM, Goog짯le, Micron und Mel짯lan짯ox auch AMD geh철rt). Als Ziel gel짯ten 25 GBit/s pro Lane Band짯brei짯te. Zum Ver짯gleich: Das aktu짯el짯le PCI Express 3.0 schafft der짯zeit 8 GBit/s pro Lane und Rich짯tung und der Nach짯fol짯ger PCI Express 4.0 16 GBit/s. Mit die짯sen Tech짯no짯lo짯gien lie짯횩en sich s채mt짯li짯che Inter짯con짯nect-Topo짯lo짯gien abde짯cken, die 체bli짯cher짯wei짯se Anwen짯dung fin짯den. Inter짯es짯sant ist an die짯ser Stel짯le, dass Intel bei GenZ und Open짯CA짯PI, NVIDIA bei GenZ und ARM bei Open짯CA짯PI feh짯len, ARM jedoch bei GenZ mitmischt.

Auf der n채chs짯ten Sei짯te fin짯det ihr s채mt짯li짯che Foli짯en als Galerie.