1.一种NUMA感知的DNN编译系统优化方法,其特征在于,包括下述步骤:S1,初始化线程-节点映射以将DNN推理所需的线程映射到所有NUMA节点上;S2,根据系统当前的可用内存大小初始化可用内存Avail;S3,获取DNN的计算图中的计算节点,为每个计算节点构造用于为该计算节点提供计算所需神经网络参数的参数节点并预分配模型参数内存,并更新可用内存Avail;S4,将各个计算节点的计算复杂性作为分配优先级并按照分配优先级排序;S5,按照分配优先级为计算节点构造用于映射到不同NUMA节点所需的副本参数节点并更新可用内存Avail直至可用内存Avail耗尽;S6,遍历计算节点以将计算节点对应的副本参数节点的内存分配NUMA节点使所有线程当中与数据距离最大值最小化;S7,针对各个计算节点对应的算子执行算子优化:包括构造算子优化模板,将最外层循环并行化,在循环体内分配参数节点作为输入,本地分配内存作为输出并评估优化效果;S8,判断优化目标是否完成,如果尚未完成则跳转步骤S7;否则结束并退出。
2.根据权利要求1所述的NUMA感知的DNN编译系统优化方法,其特征在于,步骤S2中根据系统当前的可用内存大小初始化可用内存Avail时,可用内存Avail为系统当前的可用内存大小减去预留中间结果内存大小得到的差,其中预留中间结果内存大小是指DNN的中间输入变量所需占用的内存大小。
3.根据权利要求1所述的NUMA感知的DNN编译系统优化方法,其特征在于,步骤S3中获取DNN的计算图中的计算节点之前,还包括针对获取DNN采用图优化技术生成DNN的计算图的步骤,所述图优化技术包括表达式化简、公共表达式消除、常数传播、矩阵合并、算子融合中的部分或者全部,使得每一个算子作为计算图中的一个计算节点。
4.根据权利要求1所述的NUMA感知的DNN编译系统优化方法,其特征在于,步骤S3中更新可用内存Avail包括:分别获取各个计算节点i构造参数节点P i,0 时预分配模型参数内存的大小sizeof(P i,0 ),将所有计算节点i的预分配模型参数内存的大小sizeof(P i,0 )求和得到预分配模型参数内存的总大小sizeof(P),并将可用内存Avail减去总大小sizeof(P)后作为更新后的可用内存Avail。
5.根据权利要求1所述的NUMA感知的DNN编译系统优化方法,其特征在于,步骤S5包括:按照各个计算节点i的分配优先级Prior i 从高到低的顺序依次为各个计算节点i的参数节点P i,0 构造副本参数节点P i,j ,其中 , 为系统中的NUMA节点数量,且在构造副本参数节点P i,j 时,如果可用内存大小Avail减去副本参数节点P i,j 的占用内存的结果小于0,则判定可用内存耗尽,跳转步骤S6;否则将可用内存大小Avail减去副本参数节点P i,j 的占用内存的结果作为新的可用内存大小Avail,继续为下一个参数节点P i,0 构造副本参数节点P i,j ,直至完成为所有参数节点P i,0 构造副本参数节点P i,j 后跳转步骤S6。
6.根据权利要求1所述的NUMA感知的DNN编译系统优化方法,其特征在于,步骤S6包括:S6.1,遍历DNN的计算图中的计算节点,遍历完毕则跳转步骤S7;否则跳转步骤S6.2;S6.2,判断为当前计算节点构造的副本参数节点P i,j 的数量,如果副本参数节点P i,j 的数量为1,则跳转步骤S6.3;如果副本参数节点P i,j 的数量大于1且小于系统中的NUMA节点数量 ,则跳转步骤S6.4;如果副本参数节点P i,j 的数量等于系统中的NUMA节点数量 ,则跳转步骤S6.5;S6.3,将当前计算节点的副本参数节点P i,j 的内存以round-robin策略映射到所有NUMA节点上,跳转步骤S6.1;S6.4,将当前计算节点的所有副本参数节点P i,j 的内存均匀分配NUMA节点以获得节点集合NodeSubset i,j ,再将当前计算节点的所有副本参数节点P i,j 以round-robin策略映射到节点集合NodeSubset i,j 中的NUMA节点上,跳转步骤S6.1;S6.5,将当前计算节点的所有副本参数节点P i,j 的内存分配到系统中的NUMA节点构成的节点集合NodeSet j 中的NUMA节点上,跳转步骤S6.1。
7.根据权利要求1所述的NUMA感知的DNN编译系统优化方法,其特征在于,步骤S7包括:S7.1,遍历DNN的计算图中的计算节点,遍历完毕则跳转步骤S8;否则跳转步骤S7.2;S7.2,针对当前计算节点n采用循环重排、循环分割、循环展开中的一种或多种方法构造循环优化模板Template n ;其中循环重排是指将计算节点的内层循环和外层循环交换位置,循环分割是指将计算节点的循环拆分成多个循环,循环展开是指去掉循环直接写每次循环的操作;S7.3,针对循环优化模板Template n 的最外层循环并行化,循环体内从最近的NUMA节点上获取模型参数,设置输入特征图的地址Input i,t 为线程所在NUMA节点最近的副本参数节点P i,j 的内存的起始地址:Input i,t =Addr(Nearest(P i,j )),其中Nearest为取最近的操作;在循环内根据循环次数Num(Roll i )计算每次循环所需要中间结果的内存大小并分配内存:Output i,t =Alloc(sizeof(Output i )/ Num(Roll i )),其中,Output i 为当前计算节点所需要中间结果的总内存,Alloc为分配内存的操作,sizeof(Output i )为当前计算节点所需要中间结果的总内存大小,Num(Roll i )为循环次数;S7.4,评估模板的DNN推理延迟,如果DNN推理延迟满足优化目标则结束,否则返回步骤S7.1。
8.一种NUMA感知的DNN编译系统优化系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~7中任意一项所述NUMA感知的DNN编译系统优化方法。
9.一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,其特征在于,该计算机程序或指令被编程或配置以通过处理器执行权利要求1~7中任意一项所述NUMA感知的DNN编译系统优化方法。
10.一种计算机程序产品,包括计算机程序或指令,其特征在于,该计算机程序或指令被编程或配置以通过处理器执行权利要求1~7中任意一项所述NUMA感知的DNN编译系统优化方法。