System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种插入同步原语的方法、装置及相关设备制造方法及图纸_技高网

一种插入同步原语的方法、装置及相关设备制造方法及图纸

技术编号:43130093 阅读:0 留言:0更新日期:2024-10-29 17:37
本申请提供一种插入同步原语的方法、装置及计算设备,该方法包括:计算设备获取程序中的多个指令对;然后为每个指令对插入对应的包括虚拟标识的虚拟同步原语;最后根据每个指令对对应的虚拟同步原语确定各个指令对对应的同步原语。其中,同步原语中包括事件标识,指令对中的源指令和目的指令由两个不同的执行单元执行;任意两个执行单元对应的事件标识的数量是固定的,且小于这两个执行单元对应的虚拟标识的数量。为程序中各个指令对插入虚拟同步原语,并基于虚拟同步原语确定各个虚拟同步原语对应的同步原语,能够实现自动为程序插入同步原语以保证具有依赖关系的指令之间的依赖,提高为程序插入同步原语的效率,降低编程人员的编程难度。

【技术实现步骤摘要】

本申请涉及计算机,尤其涉及一种插入同步原语的方法、装置及相关设备


技术介绍

1、随着以深度学习为代表的人工智能(artificial intelligence,ai)的快速发展,为了满足各种ai应用不断增长的算力需求,各类用于加速ai计算的异构加速卡应运而生,例如图形处理器(graphics processing unit,gpu)、张量处理器(tensor processingunit,tpu)等。

2、在硬件设计上,异构加速卡通常采用多种功能单元组合,不同功能单元各司其职,形成了不同的独立执行流水线,在系统软硬件的统一调度下互相配合实现不同的指令功能,达到优化的计算效率,兼顾性能与完备性。

3、与传统中央处理器(central processing unit,cpu)不同,异构加速卡没有复杂的控制和指令调度逻辑来保证指令之间的依赖,而是需要在程序中插入同步原语来保证指令之间的依赖,因此如何在程序中添加同步原语以保证指令之间的依赖是一个亟待解决的问题。


技术实现思路

1、本申请提供一种插入同步原语的方法、装置及相关设备,能够自动为程序插入同步原语以保证具有依赖关系的指令之间的依赖,提高为程序插入同步原语的效率,降低编程人员的编程难度。

2、第一方面,本申请提供一种插入同步原语的方法,该方法包括:计算设备获取程序中的多个指令对;然后为每个指令对插入对应的包括虚拟标识(identity,id)的虚拟同步原语,例如为第一指令对插入包括第一虚拟id的第一虚拟同步原语;最后根据每个指令对对应的虚拟同步原语确定各个指令对对应的同步原语;例如根据第一虚拟同步原语确定第一指令对对应的第一同步原语。其中,同步原语中包括事件id,例如第一同步原语包括第一事件id;每个指令对中包括具有依赖关系的源指令和目的指令,且源指令和目的指令由两个不同的执行单元执行;任意两个执行单元对应的事件id的数量是预设固定值,且两个执行单元对应的事件id的数量小于这两个执行单元对应的虚拟id的数量;例如执行第一指令对的两个执行单元对应的事件id的数量为预设固定值,执行第一指令对的两个执行单元对应的虚拟id的数量大于事件id的数量。

3、通过确定程序中的指令对,然后分别为各个指令对插入对应的虚拟同步原语,再基于虚拟同步原语确定各个虚拟同步原语对应的同步原语,能够实现自动为程序插入同步原语以保证具有依赖关系的指令之间的依赖,提高为程序插入同步原语的效率,降低编程人员的编程难度。

4、应理解,事件id用于指示加速卡中的一个标志位,由于任意两个执行单元对应的标志位的数量有限且固定,例如执行第一指令对两个执行单元之间的标志位只有n个,则上述事件id的取值为1~n。但是任意两个执行单元执行的指令中确定的指令对的数量通常大于n个。如果在为指令对插入同步原语时,只是简单的将事件id循环使用。例如事件id的数量是3个,为前三个指令对对应的同步原语分别各使用一个事件id,接下来的三个指令对对应的同步原语再分别各使用一个事件id。这样使用同一个事件id的两个同步原语(例如同步原语a和同步原语b)会出现如下情况:同步原语a的置位指令将该事件id对应的标志位进行了置位,但是程序还没有执行到该同步原语a的等待指令,即该事件id对应的标志位仍然被占用;此时程序可能执行到同步原语b的置位指令,此时同步原语b的置位指令需要对该标志位进行置位,这种情况会导致程序执行错误。因此先插入虚拟同步原语,然后确定虚拟同步原语中虚拟id对应的事件id,以确保程序执行时不会出现同一个标志位同时被两个同步原语占用的情况,保证程序顺利执行。

5、在一种可能的实现方式中,虚拟同步原语包括虚拟置位指令和虚拟等待指令,同步原语包括置位指令和等待指令;同步原语是将虚拟同步原语中的虚拟id替换为事件id后得到的。

6、例如上述第一虚拟同步原语包括第一虚拟置位指令和第一虚拟等待指令;第一虚拟置位指令和第一虚拟等待指令均包括第一虚拟id;

7、第一同步原语包括第一置位指令和第一等待指令;第一置位指令和第一等待指令均包括第一事件id;第一同步原语是将第一虚拟同步原语中的第一虚拟id替换为第一事件id得到的;其中,第一置位指令用于在第一指令对中的源指令被执行后执行,将第一事件id对应的标志位置位,第一等待指令用于在被执行时确定第一事件id对应的标志位是否被置位,在第一事件id对应的标志位被置位的情况下,第一指令对中的目的指令被执行。

8、在一种可能的实现方式中,上述根据第一虚拟同步原语确定第一指令对对应的第一同步原语,包括:从执行第一指令对的两个执行单元对应的事件id中选择第一事件id,确定前一次使用第一事件id的第二同步原语;在第二同步原语与第一虚拟同步原语之间具有发生在前(happen-before)关系的情况下,确定第一事件id能够分配给第一虚拟同步原语,则用第一事件id替换第一虚拟同步原语中的第一虚拟id,得到第一同步原语。

9、其中,第二同步原语是对应的第二虚拟同步原语中的虚拟id替换为第一事件id后得到的,第二同步原语中的第二置位指令与第一同步原语中的第一置位指令由同一个执行单元执行,第二同步原语中的第二等待指令与第一同步原语中的第一等待指令由同一个执行单元执行。

10、在第一事件id分配给第二虚拟原语,用第一事件id替换第二虚拟同步原语中的虚拟id得到第二同步原语之后,在确定将第一事件id再分配给第一虚拟同步原语,用第一事件id替换第一虚拟id以得到第一同步原语时,需要保证第二虚拟同步原语和第一虚拟同步原语之间具有happen-before关系。这样才能确保程序在实际执行的过程中,在执行到第一同步原语时,第二同步原语已经全部执行完,第二同步原语已经不再占用第一事件id,从而能够避免两个同步原语同时使用同一个事件id对应的标志位,导致程序无法正常运行的情况。

11、在一种可能的实现方式中,上述根据第一虚拟同步原语确定第一指令对对应的第一同步原语,包括:从执行第一指令对的两个执行单元对应的事件id中选择第一事件id,确定前一次使用第一事件id的第二同步原语;在第二同步原语与第一虚拟同步原语之间具有不可达关系的情况下,确定第一事件id能够分配给第一虚拟同步原语,则用第一事件id替换第一虚拟同步原语中的第一虚拟id,得到第一同步原语。

12、其中,第二同步原语是对应的第二虚拟同步原语中的虚拟id替换为第一事件id后得到的,第二同步原语中的第二置位指令与第一同步原语中的第一置位指令由同一个执行单元执行,第二同步原语中的第二等待指令与第一同步原语中的第一等待指令由同一个执行单元执行。

13、在第一事件id分配给第二虚拟原语,用第一事件id替换第二虚拟同步原语中的虚拟id得到第二同步原语之后,在确定将第一事件id再分配给第一虚拟同步原语,用第一事件id替换第一虚拟id以得到第一同步原语时,需要保证第二虚拟同步原语和第一虚拟同步原语之间具有不可达关系,或者本文档来自技高网...

【技术保护点】

1.一种插入同步原语的方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,

3.根据权利要求2所述的方法,其特征在于,所述根据所述第一虚拟同步原语确定所述第一指令对对应的第一同步原语,包括:

4.根据权利要求2所述的方法,其特征在于,所述根据所述第一虚拟同步原语确定第一同步原语,包括:

5.根据权利要求2所述的方法,其特征在于,所述根据所述第一虚拟同步原语确定第一同步原语,包括:

6.根据权利要求2-5任一项所述的方法,其特征在于,在根据所述第一虚拟同步原语确定所述第一指令对对应的第一同步原语之前,还包括:

7.根据权利要求6所述的方法,其特征在于,所述对活跃的虚拟ID所属的虚拟同步原语进行合并,包括:

8.根据权利要求7所述的方法,其特征在于,还包括:

9.根据权利要求2-8任一项所述的方法,其特征在于,在根据所述第一虚拟同步原语确定所述第一指令对对应的第一同步原语之前,还包括:

10.根据权利要求2-9任一项所述的方法,其特征在于,所述为第一指令对插入第一虚拟同步原语,包括:

11.根据权利要求10所述的方法,其特征在于,还包括:

12.根据权利要求10或11所述的方法,其特征在于,还包括:

13.根据权利要求2-12任一项所述的方法,其特征在于,所述为第一指令对插入第一虚拟同步原语之前,还包括:

14.根据权利要求2-13任一项所述的方法,其特征在于,所述为第一指令对插入第一虚拟同步原语之前,还包括:

15.根据权利要求13或14所述的方法,其特征在于,所述为第一指令对插入第一虚拟同步原语之后,还包括:

16.根据权利要求2-15任一项所述的方法,其特征在于,所述方法还包括:

17.一种插入同步原语的装置,其特征在于,包括:

18.根据权利要求17所述的装置,其特征在于,

19.根据权利要求18所述的装置,其特征在于,所述处理模块具体用于:

20.根据权利要求18所述的装置,其特征在于,所述处理模块具体用于:

21.根据权利要求18所述的装置,其特征在于,所述处理模块具体用于:

22.根据权利要求18-21任一项所述的装置,其特征在于,所述装置还包括:

23.根据权利要求22所述的装置,其特征在于,所述合并模块具体用于:

24.根据权利要求23所述的装置,其特征在于,所述合并模块具体用于:

25.根据权利要求18-24任一项所述的装置,其特征在于,所述装置还包括:

26.根据权利要求18-25任一项所述的装置,其特征在于,所述插入模块具体用于:

27.根据权利要求26所述的装置,其特征在于,所述插入模块还用于:

28.根据权利要求26或27所述的装置,其特征在于,所述插入模块还用于:

29.根据权利要求18-28任一项所述的装置,其特征在于,所述插入模块还用于:

30.根据权利要求18-29任一项所述的装置,其特征在于,所述插入模块还用于:

31.根据权利要求29或30所述的装置,其特征在于,所述插入模块还用于:

32.根据权利要求18-31任一项所述的装置,其特征在于,所述装置还包括:

33.一种加速卡,其特征在于,所述加速卡包括处理器和供电电路,所述供电电路用于为所述加速卡供电,所述处理器用于实现如权利要求1至16任一项所述的方法。

34.一种计算设备,其特征在于,包括中央处理器、加速卡和存储器,所述存储器用于存储指令,所述中央处理器或加速卡用于执行所述指令,当所述中央处理器或加速卡执行所述指令时,实现如权利要求1至16中任一项所述的方法。

35.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备实现如权利要求1至16任一项所述的方法。

...

【技术特征摘要】

1.一种插入同步原语的方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,

3.根据权利要求2所述的方法,其特征在于,所述根据所述第一虚拟同步原语确定所述第一指令对对应的第一同步原语,包括:

4.根据权利要求2所述的方法,其特征在于,所述根据所述第一虚拟同步原语确定第一同步原语,包括:

5.根据权利要求2所述的方法,其特征在于,所述根据所述第一虚拟同步原语确定第一同步原语,包括:

6.根据权利要求2-5任一项所述的方法,其特征在于,在根据所述第一虚拟同步原语确定所述第一指令对对应的第一同步原语之前,还包括:

7.根据权利要求6所述的方法,其特征在于,所述对活跃的虚拟id所属的虚拟同步原语进行合并,包括:

8.根据权利要求7所述的方法,其特征在于,还包括:

9.根据权利要求2-8任一项所述的方法,其特征在于,在根据所述第一虚拟同步原语确定所述第一指令对对应的第一同步原语之前,还包括:

10.根据权利要求2-9任一项所述的方法,其特征在于,所述为第一指令对插入第一虚拟同步原语,包括:

11.根据权利要求10所述的方法,其特征在于,还包括:

12.根据权利要求10或11所述的方法,其特征在于,还包括:

13.根据权利要求2-12任一项所述的方法,其特征在于,所述为第一指令对插入第一虚拟同步原语之前,还包括:

14.根据权利要求2-13任一项所述的方法,其特征在于,所述为第一指令对插入第一虚拟同步原语之前,还包括:

15.根据权利要求13或14所述的方法,其特征在于,所述为第一指令对插入第一虚拟同步原语之后,还包括:

16.根据权利要求2-15任一项所述的方法,其特征在于,所述方法还包括:

17.一种插入同步原语的装置,其特征在于,包括:

18.根据权利要求17所述的装置,其特征在于,

19...

【专利技术属性】
技术研发人员:李帅江田行辉徐晓忻赵家程崔慧敏
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1