Cuda används för att förmå grafikkort att köra program som inte har med grafik att göra. Grafikkprocessorer är avancerade multikärnor och konkurrerar med CPU:er om att få utföra tunga beräkningsuppgifter, bland annat klassiska numeriska parallelldatorberäkningar och algoritmer för signalbehandling och videobearbetning.
Det här betyder att du kan först utveckla mjukvara i Cuda och därefter undersöka vilken hårdvara som kör den snabbast. Det betyder också att den stora volym programvara som idag finns utvecklad för Cuda nu kan kompileras om för att istället köras på en FPGA.
Forskarna testade att köra en och samma Cudakod på en FPGA och en GPU. Det visade sig att på korta ordlängder på 8 och 16 bitar blev FPGA-implementeringen effektivare.
FPGA:n var en 65 nm Xilinx Virtex5-FPGA XC5VFX200T med drygt 100 000 lookuptabeller och 384 signalprocessorenheter. Grafikprocessorn var en 90 nm Nvidia G80 med 128 kärnor.
Enligt forskarna är detta första gången som någon visat upp en metod för att kompilera Cudaprogram till effektiv FPGA-kod.
Knepet är att översätta Cuda-koden till C-kod för det existerande verktyget Autopilot, som i sin tur översätter C-koden till RTL-kod för FPGA:n.
Nu planerar forskarna att göra liknande experiment med andra högnivåparallellprogrammeringsmodeller som Open CL.
Artikeln kan laddas hem här (pdf, 300kB).