use abstract interface with hidden implementation
move GPU constants initialization from constructor to compute method