Kernel float: unlocking mixed-precision GPU programming