Developing FPGA-accelerated cloud applications with SDAccel: Theory