GOALS: 

The stu­dents know how to pro­gram on gra­phics pro­ces­sing units (GPUs)

CON­TENT:

Upon a cer­tain point in time around 2003, the com­pu­ta­tio­nal per­for­mance has been in­crea­sing not at the ex­pen­se of boos­ting the pro­ces­sor tact fre­quen­cy, but ra­ther through in­crea­se of the num­ber of com­pu­ta­tio­nal cores al­lo­ca­ted on the pro­ces­sor chip. Gra­phics pro­ces­sing units (GPUs) are cham­pi­ons of this com­pu­ter hard­ware evo­lu­ti­on, bo­as­ting up to tens of thousands sin­gle core units. At the same time, the GPU me­mo­ry sys­tem is not so much cons­trained by the com­pa­ti­bi­li­ty re­qui­re­ments with older ge­ne­ra­ti­ons as CPU me­mo­ry sys­tems do. As a re­sult, GPUs ar­gu­ab­ly de­mons­tra­te far bet­ter raw per­for­mance of the arith­me­ti­cal units and the me­mo­ry sys­tem com­pa­red to their older "bro­ther", cen­tral pro­ces­sing units (CPUs). While ori­gi­nal­ly de­si­gned for video pro­ces­sing tasks, the enor­mous com­pu­ta­tio­nal power of mo­dern GPUs is com­mon­ly used to as­sist to CPUs or to take main part in sol­ving a large va­rie­ty of com­pu­ta­tio­nal pro­blems fea­turing (mas­si­ve­ly) par­al­le­liz­able sec­tions, brin­ging te­ra­flops scale high per­for­mance com­pu­ting powers to lap­top/de­sk­top com­pu­ters. The pre­sent cour­se shows how CUDA C (ex­ten­si­on of the C lan­gua­ge de­si­gned for GPU pro­gramming) and the cor­re­spon­ding (very fle­xi­ble!) CUDA run­ti­me API frame­work can be used to ac­ce­le­ra­te exe­cu­ti­on of some ty­pi­cal pro­gramming pat­terns by a fac­tor of 10 or more com­pa­red to that of CPU. Star­ting from the CUDA Pro­gramming Model, one will pro­ceed to the CUDA Exe­cu­ti­on Model and go on fur­ther to con­s­i­de­ra­ti­on of fun­da­men­tal con­cep­tu­al, soft­ware and hard­ware is­su­es hel­ping to un­der­stand how GPUs work. Case stu­dies of se­ver­al pro­blems in­vol­ving mas­si­ve­ly par­al­lel al­go­rith­ms im­ple­men­ted on GPUs will be also ela­bo­ra­ted on. The theo­re­ti­cal know­ledge given du­ring the lec­tu­res will be rein­forced by a large num­ber of prac­tical ex­am­ples that stu­dents will be able to work on at home.

EXAM:

written exam at the end of the lecture series

RE­QUI­RE­MENTS:

none

RE­COM­MEN­DED KNOW­LEDGE:

C (pro­gramming lan­gua­ge)

LITERATURE:

  1. W.W. Hwu, D.B. Kirk, E.E. Hajj, "Programming massively parallel processors" (fourth edition) (2023)
  2. J. Cheng, M. Grossman, T. McKercher "Professional CUDA C programming" (2014) 
Semester: WiSe 2024/25