850-kertainen laskentanopeus Atostekin avulla

Tilanne

Asiakkaallamme on sovellus, jossa käyttäjä ohjaa laitetta mittaustuloksesta algoritmilla lasketun analyysin avulla. Sovelluksen nopeudessa oli kuitenkin ongelma – käyttäjän saama tieto oli useita sekunteja vanhaa, mikä ei riittänyt laitteen tarkkaan ohjaamiseen.

Nopeus oli sovelluksen toiminnan kannalta kriittinen tekijä. Viive täytyi kuroa millisekunteihin, että sovellus olisi käyttökelpoinen.

Ratkaisumme

Atostek otti lähtökohdaksi Matlab-koodin, jonka suoritus kesti noin minuutin. Ensimmäisenä työkaluna käytimme Intelin optimoivaa C-kääntäjää, jonka avulla säikeistetty koodi saatiin nopeutumaan kolmeen sekuntiin.

Seuraavaksi optimoimme koodin CUDA-ohjelmointirajapinnan avulla GTX460- ja GTX580-näytönohjaimille, ja madalsimme laskentatarkkuutta tarpeettoman suuresta 64 bitistä 32:een.

Tuloksena oli yli kahdeksansataa kertaa nopeampi laskenta, 70 millisekuntia, mikä mahdollisti sovelluksen tarkan ohjaamisen!