Deep Learning on Edge Computing Devices : Design Challenges of Algorithm and Architecture