System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种计算芯片的内存管理方法、装置及计算芯片制造方法及图纸_技高网

一种计算芯片的内存管理方法、装置及计算芯片制造方法及图纸

技术编号:39996370 阅读:5 留言:0更新日期:2024-01-09 02:48
本发明专利技术公开了一种计算芯片的内存管理方法、装置及计算芯片,涉及人工智能技术领域,该方法包括:获取当前线程的申请内存请求;根据申请内存请求的申请内存大小,确定目标内存分配方式;若目标内存分配方式为第一分配方式,则利用当前线程的线程内存池,为当前线程分配申请内存请求对应的内存空间;若目标内存分配方式为第二分配方式,则获取目标内存池的当前线程对应的互斥锁,利用目标内存池为当前线程分配申请内存请求对应的内存空间;本发明专利技术利用各线程各自的线程内存池处理内存较小的内存请求,无需获取互斥锁,提升了计算芯片内存申请和释放的性能;并且仅对内存较小的内存请求使用的线程内存池进行处理,减少了计算芯片中内存资源的浪费。

【技术实现步骤摘要】

本专利技术涉及人工智能,特别涉及一种计算芯片的内存管理方法、装置及计算芯片


技术介绍

1、随着人工智能(artificial intelligence,ai)技术的兴起,使用cpu(centralprocessing unit,中央处理器)加gpu(graphics processing unit,图形处理器)或者cpu加其他计算芯片进行人工智能模型训练和推理的方案被广泛应用于各个行业。内存管理优化技术由于能够利用内存池中的内存块,减少计算内存申请和释放的时间,在计算芯片中得到了广泛的应用。

2、现有技术中,针对计算芯片的内存管理优化,要么是多线程访问单一内存池,要么是为每个线程使用自己的内存池。然而,多线程访问单一内存池的方案由于需要设置互斥锁,以维护内存池中数据的一致性,使得大量线程同时需要申请或者释放内存时,同一时间只有一个线程能够获取到互斥锁,其他线程只能处于等待状态,这会严重影响计算芯片的性能;而每个线程使用自己的内存池的方案,每个内存池中都缓存了一定数量的内存块以供各自线程使用,导致了整个程序会占用计算芯片的大量内存,从而造成了内存资源的浪费。因此,如何能够在提高计算芯片内存申请和释放的性能的基础上,减少计算芯片中内存资源的浪费,是现今急需解决的问题。


技术实现思路

1、本专利技术的目的是提供一种计算芯片的内存管理方法、装置及计算芯片,以在提高计算芯片内存申请和释放的性能的基础上,减少计算芯片中内存资源的浪费。

2、为解决上述技术问题,本专利技术提供一种计算芯片的内存管理方法,包括:

3、获取当前线程的申请内存请求;其中,当前线程为计算芯片的任一线程;

4、根据所述申请内存请求的申请内存大小,确定目标内存分配方式;

5、若所述目标内存分配方式为第一分配方式,则利用当前线程的线程内存池,为当前线程分配所述申请内存请求对应的内存空间;其中,所述计算芯片中设置每个所述线程各自的一个线程内存池;

6、若所述目标内存分配方式为第二分配方式,则获取目标内存池的当前线程对应的互斥锁,利用所述目标内存池为当前线程分配所述申请内存请求对应的内存空间;其中,所述目标内存池为所述申请内存大小对应的一个预设内存池;所述目标内存池对应的申请内存大小大于所述线程内存池对应的申请内存大小。

7、在一些实施例中,所述利用当前线程的线程内存池,为当前线程分配所述申请内存请求对应的内存空间,包括:

8、从当前线程的线程内存池中获取目标内存块;其中,所述目标内存块为所述申请内存请求的申请内存大小对应的空闲的预设内存块;

9、将所述目标内存块分配给当前线程。

10、在一些实施例中,所述从当前线程的线程内存池中获取目标内存块,包括:

11、利用当前线程的线程内存管理实例,从当前线程的线程内存池中获取所述目标内存块。

12、在一些实施例中,当前线程的线程内存池包括多种预设大小的预设内存块,所述目标内存块为当前线程的线程内存池中所述申请内存请求的申请内存大小对应的一种预设大小的一个空闲的预设内存块。

13、在一些实施例中,所述从当前线程的线程内存池中获取目标内存块,包括:

14、根据申请内存请求的申请内存大小,确定目标数组下标;其中,当前线程的线程内存池包括空闲内存块数组,所述空闲内存块数组中包括各种所述预设大小各自对应的数组下标的数组元素,每个所述数组元素为各自的数组下标对应的预设大小的空闲的预设内存块的内存块链表,所述目标数组下标为任一所述预设大小对应的数组下标;

15、从所述目标数组下标的内存块链表中查找所述目标内存块。

16、在一些实施例中,所述从当前线程的线程内存池中获取目标内存块,包括:

17、判断当前线程的线程内存池中是否存在所述目标内存块;

18、若当前线程的线程内存池中不存在所述目标内存块,则获取共享内存池的当前线程对应的互斥锁,从所述共享内存池中获取所述目标内存块。

19、在一些实施例中,所述从所述共享内存池中获取所述目标内存块,包括:

20、判断所述共享内存池中是否存在所述目标内存块;

21、若不存在所述目标内存块,则在所述共享内存池中存在目标内存区间时,从所述目标内存区间分割获取所述目标内存块;在所述共享内存池中不存在目标内存区间时,获取页面缓存池的当前线程对应的互斥锁,从所述页面缓存池分配目标页面给所述共享内存池,并将所述目标页面作为所述共享内存池的内存区间;其中,所述目标页面为所述目标内存块的内存大小对应的空闲的预设页面空间,所述目标内存区间为所述共享内存池中大于或等于所述目标内存块的内存大小的任一所述内存区间。

22、在一些实施例中,所述页面缓存池包括多种预设页面空间大小的预设页面空间,所述预设页面空间大小包括以预设内存页面大小递增的所述预设内存页面大小至n个所述预设内存页面大小,所述从所述页面缓存池分配目标页面给所述共享内存池,包括:

23、判断所述页面缓存池中是否存在大于或等于所述目标内存块的空闲的预设页面空间;

24、若存在大于或等于所述目标内存块的空闲的预设页面空间,则选择一个最小的大于或等于所述目标内存块的空闲的预设页面空间作为所述目标页面,并将所述目标页面分配给所述共享内存池;

25、若不存在大于或等于所述目标内存块的空闲的预设页面空间,则从所述计算芯片的剩余内存中申请预设内存申请大小的内存空间,并从所述预设内存申请大小的内存空间中分割所述目标内存块给所述共享内存池,将所述预设内存申请大小的内存空间中分割剩余的内存空间放入所述页面缓存池;其中,所述预设内存申请大小大于或等于n个所述预设内存页面大小。

26、在一些实施例中,所述预设大小包括以8字节递增的8字节至128字节、以16递增的144字节至1024字节、以128字节递增的1152字节至8192字节和以1024字节递增9216字节至65536字节,所述根据所述申请内存请求的申请内存大小,确定目标内存分配方式,包括:

27、判断所述申请内存请求的申请内存大小是否大于第一大小阈值;其中,所述第一大小阈值为所述65536字节;

28、若不大于第一大小阈值,则确定所述目标内存分配方式为所述第一分配方式;

29、若大于第一大小阈值,则确定所述目标内存分配方式为所述第二分配方式。

30、在一些实施例中,所述预设内存池包括第一内存池和第二内存池,所述获取目标内存池的当前线程对应的互斥锁之前,还包括:

31、判断所述申请内存请求的申请内存大小是否大于第二大小阈值;

32、若不大于所述第二大小阈值,则将所述第一内存池确定为所述目标内存池;

33、若大于所述第二大小阈值,则将所述第二内存池确定为所述目标内存池;其中,所述第二内存池对应的申请内存大小大于所述第一内存池对应的申请内存大小。...

【技术保护点】

1.一种计算芯片的内存管理方法,其特征在于,包括:

2.根据权利要求1所述的计算芯片的内存管理方法,其特征在于,所述利用当前线程的线程内存池,为当前线程分配所述申请内存请求对应的内存空间,包括:

3.根据权利要求2所述的计算芯片的内存管理方法,其特征在于,所述从当前线程的线程内存池中获取目标内存块,包括:

4.根据权利要求2所述的计算芯片的内存管理方法,其特征在于,当前线程的线程内存池包括多种预设大小的预设内存块,所述目标内存块为当前线程的线程内存池中所述申请内存请求的申请内存大小对应的一种预设大小的一个空闲的预设内存块。

5.根据权利要求4所述的计算芯片的内存管理方法,其特征在于,所述从当前线程的线程内存池中获取目标内存块,包括:

6.根据权利要求4所述的计算芯片的内存管理方法,其特征在于,所述从当前线程的线程内存池中获取目标内存块,包括:

7.根据权利要求6所述的计算芯片的内存管理方法,其特征在于,所述从所述共享内存池中获取所述目标内存块,包括:

8.根据权利要求7所述的计算芯片的内存管理方法,其特征在于,所述页面缓存池包括多种预设页面空间大小的预设页面空间,所述预设页面空间大小包括以预设内存页面大小递增的所述预设内存页面大小至n个所述预设内存页面大小,所述从所述页面缓存池分配目标页面给所述共享内存池,包括:

9.根据权利要求4所述的计算芯片的内存管理方法,其特征在于,所述预设大小包括以8字节递增的8字节至128字节、以16递增的144字节至1024字节、以128字节递增的1152字节至8192字节和以1024字节递增9216字节至65536字节,所述根据所述申请内存请求的申请内存大小,确定目标内存分配方式,包括:

10.根据权利要求1所述的计算芯片的内存管理方法,其特征在于,所述预设内存池包括第一内存池和第二内存池,所述获取目标内存池的当前线程对应的互斥锁之前,还包括:

11.根据权利要求10所述的计算芯片的内存管理方法,其特征在于,所述目标内存池为所述第一内存池时,所述利用所述目标内存池为当前线程分配所述申请内存请求对应的内存空间,包括:

12.根据权利要求11所述的计算芯片的内存管理方法,其特征在于,所述目标内存池为所述第二内存池时,所述利用所述目标内存池为当前线程分配所述申请内存请求对应的内存空间,包括:

13.根据权利要求1至12任一项所述的计算芯片的内存管理方法,其特征在于,还包括:

14.根据权利要求13所述的计算芯片的内存管理方法,其特征在于,所述将所述内存指针对应的内存空间释放到目标释放内存池之后,还包括:

15.一种计算芯片的内存管理装置,其特征在于,包括:

16.一种计算芯片,其特征在于,包括:

...

【技术特征摘要】

1.一种计算芯片的内存管理方法,其特征在于,包括:

2.根据权利要求1所述的计算芯片的内存管理方法,其特征在于,所述利用当前线程的线程内存池,为当前线程分配所述申请内存请求对应的内存空间,包括:

3.根据权利要求2所述的计算芯片的内存管理方法,其特征在于,所述从当前线程的线程内存池中获取目标内存块,包括:

4.根据权利要求2所述的计算芯片的内存管理方法,其特征在于,当前线程的线程内存池包括多种预设大小的预设内存块,所述目标内存块为当前线程的线程内存池中所述申请内存请求的申请内存大小对应的一种预设大小的一个空闲的预设内存块。

5.根据权利要求4所述的计算芯片的内存管理方法,其特征在于,所述从当前线程的线程内存池中获取目标内存块,包括:

6.根据权利要求4所述的计算芯片的内存管理方法,其特征在于,所述从当前线程的线程内存池中获取目标内存块,包括:

7.根据权利要求6所述的计算芯片的内存管理方法,其特征在于,所述从所述共享内存池中获取所述目标内存块,包括:

8.根据权利要求7所述的计算芯片的内存管理方法,其特征在于,所述页面缓存池包括多种预设页面空间大小的预设页面空间,所述预设页面空间大小包括以预设内存页面大小递增的所述预设内存页面大小至n个所述预设内存页面大小,所述从所述页面缓存池分配目标页面给所述共享内存池,包括:

【专利技术属性】
技术研发人员:张荣国
申请(专利权)人:苏州元脑智能科技有限公司
类型:发明
国别省市:

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

1