原子操作的处理方法、装置、电子设备和存储介质制造方法及图纸

技术编号:38827181 阅读:12 留言:0更新日期:2023-09-15 20:06
本公开涉及一种原子操作的处理方法、装置、电子设备和存储介质。所述方法包括:响应于至少三个线程对内存中的同一目标元素进行同一目标类型的原子操作,且所述目标类型的原子操作符合结合律,在第一个处理阶段,对所述目标元素的原值和所述至少三个线程对应的至少三个数值进行分组,并对各个分组并行进行所述目标类型的原子操作,得到第二个处理阶段的输入值;根据所述第二个处理阶段的输入值,得到所述至少三个线程对应的最终原子操作结果。所述至少三个线程对应的最终原子操作结果。所述至少三个线程对应的最终原子操作结果。

【技术实现步骤摘要】
原子操作的处理方法、装置、电子设备和存储介质


[0001]本公开涉及计算机
,尤其涉及一种原子操作的处理方法、装置、电子设备和存储介质。

技术介绍

[0002]GPU(Graphics Processing Unit,图形处理器)可以支持数千个线程并行运行,而这些线程可能需要并行访问某些数据结构。在许多场景中,每个线程可能希望独占这些数据,在其他线程访问相同数据之前执行一系列操作,而这可以通过原子操作来实现。
[0003]数据结构的元素可以有很多,分别驻留在不同的内存地址。如果一组线程恰好访问数据结构中的不同元素,即来自不同线程的原子操作的目的地址不同,则不同线程的原子操作可以并行执行。
[0004]然而,若一组线程的原子操作针对的是同一内存地址,那么,为了正确执行各线程的原子操作,各线程的原子操作需要顺序进行,即,需要等待第一个线程的原子操作完成后才能开始第二个线程的原子操作,需要等待第二个线程的原子操作完成后才能开始第三个线程的原子操作,以此类推。这导致系统吞吐量较低,程序执行速度较慢。

技术实现思路

[0005]本公开提供了一种原子操作的处理技术方案。
[0006]根据本公开的一方面,提供了一种原子操作的处理方法,包括:
[0007]响应于至少三个线程对内存中的同一目标元素进行同一目标类型的原子操作,且所述目标类型的原子操作符合结合律,在第一个处理阶段,对所述目标元素的原值和所述至少三个线程对应的至少三个数值进行分组,并对各个分组并行进行所述目标类型的原子操作,得到第二个处理阶段的输入值;
[0008]根据所述第二个处理阶段的输入值,得到所述至少三个线程对应的最终原子操作结果。
[0009]在一种可能的实现方式中,所述根据所述第二个处理阶段的输入值,得到所述至少三个线程对应的最终原子操作结果,包括:
[0010]响应于第i个处理阶段的输入值的数量大于或等于3,对所述第i个处理阶段的输入值进行分组,并对各个分组并行进行所述目标类型的原子操作,得到第i+1个处理阶段的输入值,其中,i为大于或等于2的整数;
[0011]响应于第i个处理阶段的输入值的数量为2,对所述第i个处理阶段的2个输入值进行所述目标类型的原子操作,得到所述至少三个线程对应的最终原子操作结果,其中,i为大于或等于2的整数。
[0012]在一种可能的实现方式中,
[0013]响应于任一处理阶段的输入值的数量大于或等于3,且所述处理阶段的输入值的数量为偶数,将所述处理阶段的输入值两两分组;
[0014]或者,
[0015]响应于任一处理阶段的输入值的数量大于或等于3,且所述处理阶段的输入值的数量为奇数,将所述处理阶段的输入值中的一项作为所述处理阶段的下一处理阶段的输入值,并对所述处理阶段的其他输入值两两分组。
[0016]在一种可能的实现方式中,所述目标类型的原子操作为以下任意一种操作:原子加操作、原子替换操作、原子与操作、原子或操作、原子异或操作。
[0017]在一种可能的实现方式中,在所述响应于至少三个线程对内存中的同一目标元素进行同一目标类型的原子操作,且所述目标类型的原子操作符合结合律,在第一个处理阶段,对所述目标元素的原值和所述至少三个线程对应的至少三个数值进行分组之前,所述方法还包括:
[0018]响应于至少三个线程对内存中的同一目标元素进行原子减操作,对所述至少三个线程对应的至少三个数值分别取反,并将所述原子减操作转换为原子加操作。
[0019]在一种可能的实现方式中,所述在第一个处理阶段,对所述目标元素的原值和所述至少三个线程对应的至少三个数值进行分组,并对各个分组并行进行所述目标类型的原子操作,得到第二个处理阶段的输入值,包括:
[0020]在所述第一个处理阶段,将所述目标元素的原值和所述至少三个线程对应的至少三个数值划分为个分组,并通过个计算单元并行对所述个分组进行所述目标类型的原子操作,得到第二个处理阶段的输入值,其中,T表示对内存中的同一目标元素进行同一目标类型的原子操作的线程的数量,表示向下取整。
[0021]在一种可能的实现方式中,所述根据所述第二个处理阶段的输入值,得到所述至少三个线程对应的最终原子操作结果,包括:
[0022]响应于第i个处理阶段的输入值的数量大于或等于3,将所述第i个处理阶段的输入值划分为个分组,并通过个计算单元并行对所述个分组进行所述目标类型的原子操作,得到第i+1个处理阶段的输入值,其中,i为大于或等于2的整数,N表示所述第i个处理阶段的输入值的数量;
[0023]响应于第i个处理阶段的输入值的数量为2,通过一个计算单元对所述第i个处理阶段的2个输入值进行所述目标类型的原子操作,得到所述至少三个线程对应的最终原子操作结果,其中,i为大于或等于2的整数。
[0024]在一种可能的实现方式中,通过包含T个计算单元的计算架构处理T个线程,其中,所述T个计算单元中的任一计算单元包括两个输入端和一个输出端,且T个计算单元分别对应于所述T个线程中的不同线程;
[0025]第一个处理阶段中的一个计算单元的两个输入端分别输入所述计算单元对应的内存元素的原值和所述计算单元对应的线程对应的数值,其中,所述计算单元对应的内存元素的原值表示所述计算单元对应的线程进行原子操作的内存元素;
[0026]对于所述第一个处理阶段中的其他任一计算单元,所述计算单元的一个输入端输入所述计算单元对应的线程对应的数值,另一个输入端与所述计算单元对应的选择单元连接,且所述选择单元用于从所述计算单元对应的内存元素的原值和所述计算单元对应的输入因子中选择一项,其中,任一计算单元对应的输入因子为除所述第一个处理阶段的计算单元以外的任一计算单元对应的线程对应的数值,且不同计算单元对应的输入因子不同。
[0027]在一种可能的实现方式中,非最后一个处理阶段的计算单元的输出端与后续处理阶段的计算单元对应的选择单元的输入端连接,非最后一个处理阶段的各个计算单元的输出端分别仅与单个选择单元的输入端连接,且不同计算单元的输出端与不同的选择单元连接;
[0028]对于所述第i个处理阶段的任一计算单元,在所述计算单元的一个输入端输入所述计算单元对应的线程对应的数值的情况下,所述计算单元的另一个输入端与所述计算单元对应的选择单元连接,且所述选择单元用于从所述计算单元对应的内存元素和之前的处理阶段的计算单元的输出中选择一项;其中,在非所述第一个处理阶段中的各个计算单元中,最多存在一个计算单元的一个输入端输入所述计算单元对应的线程对应的数值,所述计算单元的另一个输入端和其他计算单元的两个输入端均与选择单元连接;
[0029]对于所述第i个处理阶段的任一计算单元,在所述计算单元的两个输入端均与选择单元连接的情况下,所述计算单元对应的一个选择单元用于从所述计算单元对应的线程对应的数值和之前的处理阶段的计算单元的输出中选择一项,所述计算单元对应的另一个选择单元用于从所述计算单元对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种原子操作的处理方法,其特征在于,包括:响应于至少三个线程对内存中的同一目标元素进行同一目标类型的原子操作,且所述目标类型的原子操作符合结合律,在第一个处理阶段,对所述目标元素的原值和所述至少三个线程对应的至少三个数值进行分组,并对各个分组并行进行所述目标类型的原子操作,得到第二个处理阶段的输入值;根据所述第二个处理阶段的输入值,得到所述至少三个线程对应的最终原子操作结果。2.根据权利要求1所述的方法,其特征在于,所述根据所述第二个处理阶段的输入值,得到所述至少三个线程对应的最终原子操作结果,包括:响应于第i个处理阶段的输入值的数量大于或等于3,对所述第i个处理阶段的输入值进行分组,并对各个分组并行进行所述目标类型的原子操作,得到第i+1个处理阶段的输入值,其中,i为大于或等于2的整数;响应于第i个处理阶段的输入值的数量为2,对所述第i个处理阶段的2个输入值进行所述目标类型的原子操作,得到所述至少三个线程对应的最终原子操作结果,其中,i为大于或等于2的整数。3.根据权利要求1或2所述的方法,其特征在于,响应于任一处理阶段的输入值的数量大于或等于3,且所述处理阶段的输入值的数量为偶数,将所述处理阶段的输入值两两分组;或者,响应于任一处理阶段的输入值的数量大于或等于3,且所述处理阶段的输入值的数量为奇数,将所述处理阶段的输入值中的一项作为所述处理阶段的下一处理阶段的输入值,并对所述处理阶段的其他输入值两两分组。4.根据权利要求1所述的方法,其特征在于,所述目标类型的原子操作为以下任意一种操作:原子加操作、原子替换操作、原子与操作、原子或操作、原子异或操作。5.根据权利要求1或4所述的方法,其特征在于,在所述响应于至少三个线程对内存中的同一目标元素进行同一目标类型的原子操作,且所述目标类型的原子操作符合结合律,在第一个处理阶段,对所述目标元素的原值和所述至少三个线程对应的至少三个数值进行分组之前,所述方法还包括:响应于至少三个线程对内存中的同一目标元素进行原子减操作,对所述至少三个线程对应的至少三个数值分别取反,并将所述原子减操作转换为原子加操作。6.根据权利要求1所述的方法,其特征在于,所述在第一个处理阶段,对所述目标元素的原值和所述至少三个线程对应的至少三个数值进行分组,并对各个分组并行进行所述目标类型的原子操作,得到第二个处理阶段的输入值,包括:在所述第一个处理阶段,将所述目标元素的原值和所述至少三个线程对应的至少三个数值划分为个分组,并通过个计算单元并行对所述个分组进行所述目标类型的原子操作,得到第二个处理阶段的输入值,其中,T表示对内存中的同一目标元素进行同一目标类型的原子操作的线程的数量,表示向下取整。7.根据权利要求6所述的方法,其特征在于,所述根据所述第二个处理阶段的输入值,
得到所述至少三个线程对应的最终原子操作结果,包括:响应于第i个处理阶段的输入值的数量大于或等于3,将所述第i个处理阶段的输入值划分为个分组,并通过个计算单元并行对所述个分组进行所述目标类型的原子操作,得到第i+1个处理阶段的输入值,其中,i为大于或等于2的整数,N表示所述第i个处理阶段的输入值的数量;响应于第i个处理阶段的输入值的数量为2,通过一个计算单元对所述第i个处理阶段的2个输入值进行所述目标类型的原子操作,得到所述至少三个线程对应的最终原子操作结果,其中,i为大于或等于2的整数。8.根据权利要求7所述的方法,其特征在于,通过包含T个计算单元的计算架构处理T个线程,其中,所述T个计算单元中的任一计算单元包括两个输入端和一个输出端,且T个计算单元分别对应于所述T个线程中的不同线程;第一个处理阶段中的一个计算单元的两个输入端分别输入所述计算单元...

【专利技术属性】
技术研发人员:请求不公布姓名
申请(专利权)人:摩尔线程智能科技北京有限责任公司
类型:发明
国别省市:

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

1