论文部分内容阅读
近年来人工智能技术在图像识别、自然语言处理、决策推理等领域取得了令人瞩目的应用成果,而深度学习技术是推动人工智能发展的重要手段。但与此同时,深度学习对计算能力要求较高,传统的处理器无法支持大规模的深度学习计算任务,因此业界开始大量关注不同的异构芯片来适应多元化的应用需求。现有的异构芯片包括GPU、申威这种追求高性能和FPGA、ASIC这类追求低功耗的芯片。 为了充分利用这些异构芯片的性能和功耗特点,同时为用户提供友好的编程接口,必须要开发出一套高效、灵活、用户友好的异构编程框架。本文在TensorFlow深度学习框架基础上,提出了对异构芯片支持的扩展方案,并实现了对FPGA、申威芯片的支持,使TensorFlow的应用可以无缝的运行在异构平台上。本文的工作内容主要是下面三个方面: 1)深入分析TensorFlow的编程模型和运行机制,根据TensorFlow的设备管理机制设计了一套可靠的设备添加方案。该方案综合考虑与设备相关的本地运行时系统、kernel层和设备层,将TensorFlow对异构芯片的扩展划分为两个类别:框架层和算子层,在此基础上设计了新芯片加入时TensorFlow的扩展过程。 2)为TensorFlow扩展了对FPGA的支持,添加了FPGA设备在TensorFlow框架上的扩展,并为其实现了相关的深度学习算子,用户能直接通过通用编程接口指定FPGA进行神经网络的加速计算。考虑到FPGA的执行模型,本文在设计FPGA上的深度学习算子时采用了粗粒度的算子设计思想,避免数据在CPU和FPGA之间的频繁传输。 3)基于申威芯片的硬件结构,结合TensorFlow的框架原理,提出了TensorFlow对申威芯片的支持方案,实现TensorFlow在申威芯片上的移植,并使用申威芯片的众核结构进行深度学习计算的加速,用户可以使用TensorFlow的编程接口实现在申威芯片上的神经网络计算。 本文最后实现了TensorFlow对FPGA和申威芯片的支持,并使用以卷积神经网络为代表的深度学习算法对其进行了功能测试和性能评估。实验结果表明本文设计的深度学习编程框架可以有效地支持FPGA和申威芯片的计算,并且可以利用其不同的特点在功耗和性能上充分发挥处理器的硬件资源,提高芯片的使用效率。