×

神经矢量器

swMATH ID: 32381
软件作者: 阿梅尔·哈伊·阿利(Ameer Haj-Ali)、内斯琳·艾哈迈德(Nesreen K.Ahmed)、特德·威尔克(Ted Willke)、索菲亚·邵(Sophia Shao)、克里斯特·阿萨诺维奇(Krste Asanovic)、伊恩·斯托伊卡(Ion Stoica)
描述: 神经矢量器:具有深度强化学习的端到端矢量化。编译器对当今SIMD兼容体系结构中的循环进行矢量化时,面临的一个关键挑战是确定矢量化或交织是否有益。然后,编译器必须确定要打包多少指令,以及要交错多少循环迭代。如今,编译器被设计为使用基于启发式的固定成本模型来对循环进行矢量化决策。然而,这些模型无法捕获数据相关性、计算图或指令的组织。或者,软件工程师经常手工编写每个循环的矢量化因子。然而,这给他们带来了巨大的负担,因为这需要以前的经验,并大大增加了开发时间。在这项工作中,我们探索了一种处理循环矢量化的新方法,并提出了一种使用深度强化学习(RL)的端到端解决方案。我们推测,deep RL可以捕获不同的指令、依赖项和数据结构,从而学习复杂的模型,该模型可以更好地预测实际性能成本并确定最佳矢量化因子。我们开发了一个端到端的框架,从代码到矢量化,将深层RL集成到LLVM编译器中。我们提出的框架以基准代码为输入,提取循环代码。然后将这些循环代码馈送到循环嵌入生成器,该生成器将学习这些循环的嵌入。最后,将学习到的嵌入用作Deep RL代理的输入,该代理确定所有循环的矢量化因子。我们进一步扩展了我们的框架,以支持多种监督学习方法。我们针对当前使用的LLVM矢量器和循环多面体优化技术评估了我们的方法。我们的实验表明,与基线相比,性能加速了1.29X-4.73倍,只有3倍
主页: https://arxiv.org/abs/1909.13639
源代码:  https://github.com/intel/neuro-vectorizer网站
相关软件: 亚当XLA公司TensorFlow公司有限责任公司代码2vecProGraML软件
引用于: 0个文档