[发明专利]利用多线程执行计算图的方法和系统有效
申请号: | 201811037341.0 | 申请日: | 2018-09-06 |
公开(公告)号: | CN110879744B | 公开(公告)日: | 2022-08-16 |
发明(设计)人: | 孙承根;焦英翔;石光川 | 申请(专利权)人: | 第四范式(北京)技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 北京铭硕知识产权代理有限公司 11286 | 代理人: | 杨利利;王兆赓 |
地址: | 100085 北京市海淀区上*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 利用 多线程 执行 计算 方法 系统 | ||
提供一种利用多线程执行计算图的方法和系统,所述方法包括:获取包括至少一个操作的计算图,其中,在计算图中声明有所述至少一个操作的操作数据在内存空间的相对索引;创建多个第一线程,并为每个第一线程分配相应的内存空间;为每个第一线程复制所述计算图;根据所述多个第一线程各自的内存空间的起始地址以及所述相对索引来执行所述计算图所包括的所述至少一个操作。在根据本发明的实施例的利用多线程执行计算图的方法和系统中,可以直接在分布式环境下拷贝计算图,以达到数据并行加速的目的,同时这种相对索引的声明方式不涉及分布式逻辑,不需要用户考虑如何处理多线程逻辑,降低了用户的使用成本和开发难度。
技术领域
本发明涉及数据的并行处理领域,更具体地讲,涉及一种利用多线程执行计算图的方法和系统。
背景技术
随着各行各业需要处理的数据量的日益增多,人们需要一种易使用的分布式数据处理工具,而随着处理的问题的逐渐复杂,解决相应问题的算法也越来越复杂,给处理工具的易用性和灵活性带来了更多的挑战。计算图模型是一种通用的计算过程表示方法,普遍应用在各类数据处理平台上,它的表示方法容易理解,且灵活性很高,可以通过组合简单的操作来实现复杂的逻辑。
目前大家普遍使用的计算图执行框架的权衡方法是计算图本身并不做并行处理,使得用户可以用顺序执行的思维去声明,降低开发难度,同时将并行化细化在计算图的每一个操作中,加速执行效率。这种做法使得在一个计算节点上同时只运行一份计算图,一定程度上减小了内存消耗。
然而随着硬件的优化及其价格的降低,内存的开销逐渐不再是瓶颈,而且随着算法设计的逐渐复杂,会存在一些无法做并行化的操作,而且当用户需要一个框架并未支持的计算方法时,用户必须自己实现多线程逻辑,开发难度成倍增加,否则执行效率会成倍降低。
一种简单并且普遍适用的并行化方法是数据并行,即不同的执行单元分别处理不同的数据,这种方法在多机分布式中是最常用的方法,所以如果对于单机上的多个线程,也使用这种数据并行的方法实现多线程加速,便可以降低用户的开发成本。
然而对于计算图来说,每段待处理数据的内存空间,都由其上下游多个节点同时控制,一般会由执行节点记录数据的内存空间的实际索引。在复制计算图以进行多线程并行处理时,这个实际索引也会被复制,多个线程共用同一个实际索引表示的内存空间,也就是说,多个计算图会指向同一份数据,在多线程并行处理时会导致内存冲突,执行结果错误。如果需要避免内存冲突,则需要重复声明,增加开发难度。
发明内容
本发明的目的在于提供一种利用多线程执行计算图的方法和系统,以解决现有的计算图多线程并行处理时存在的为避免内存冲突而导致开发难度大的问题。
本发明的一方面提供一种利用多线程执行计算图的方法,其特征在于,包括:获取包括至少一个操作的计算图,其中,在计算图中声明有所述至少一个操作的操作数据在内存空间的相对索引;创建多个第一线程,并为每个第一线程分配相应的内存空间;为每个第一线程复制所述计算图;根据所述多个第一线程各自的内存空间的起始地址以及所述相对索引来执行所述计算图所包括的所述至少一个操作。
可选地,根据所述多个第一线程各自的内存空间的起始地址以及所述相对索引来执行所述计算图所包括的所述至少一个操作的步骤包括:利用每个第一线程根据对应的内存空间的起始地址以及所述相对索引来确定对应的计算图所包括的所述至少一个操作的操作数据的内存地址;利用所述多个第一线程根据各自确定的内存地址来执行各自的计算图所包括的所述至少一个操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于第四范式(北京)技术有限公司,未经第四范式(北京)技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811037341.0/2.html,转载请声明来源钻瓜专利网。