A program indulás ebben az esetben is a main függvény.
A main felépítése hasonlít a korábbi megoldás GPU-s változatához, de egyszerűbb annál. például az adatok byte->float konverziója megoldható egy for ciklussal, nem kell neki külön függvényt írni.
for(i=0; i<w*h*4; i++) {
temp_src[i] = image[i];
}
Az iteratív számítás, is hasonlóan történik, mint korábban, csak annál egszerűbben.
for(i=0; i<1000; i++) {
if(i%2) {
smoothOnCPU(temp_src, temp_dst, w, h);
} else {
smoothOnCPU(temp_dst, temp_src, w, h);
}
}
És végül a visszakonvertálás és a kiírás is egyszerűsödik.
for(i=0; i<w*h*4; i++) {
image[i] = temp_src[i];
}
writeRGBImageToFile("out.png", image, w, h);
Az egyszerűsödések fő oka, hogy most csak egy-egy példányt kezelünk az adatokból, így nem kell a CPU-GPU közötti adatmozgatással foglalkozni. Egyszerűség továbbá, hogy nem kell kiszámolni az indítási struktúrákat, egyszerűen csak egy-egy for ciklussal bejárjuk a tömböket.
Látni fogjuk viszont, hogy a GPU kód nagyobb komplexitása futási időben megtérülhet.