2021-08-07

最近一周手里的程序出现了内存越界,每次一运行就会报错,有时是:malloc_consolidate() : invalid chunk size,有时是:invalid pointer ,有时是段错误。我负责在深度学习训练框架上支持 GPU 之外的另一种硬件加速卡,训练框架的存储分成三级:第一级叫chunk,chunk切分成 block,block再切分成 register,这些存储空间可能在host上,也可能在device上,程序运行的过程中输入数据会从 host 拷贝到 device 上,计算完成后再从 device 考回 host,其中 host 上存储的数据是 64 byte,device 上的空间是 512 byte, copyH2D 的时候没问题,而 copyD2H 的时候就会出现内存越界。解决方法就是分配 device 空间的时候从 512 byte 中切分出 64byte 用于接收copyD2H 的数据。这里还要说明一下这种新的硬件加速卡的特点:它的malloc函数是返回一个结构体的,里面包含多少字节的数据是确定的,所以copyH2D 的时候会出现 device 上的 512 字节拷贝到 host 上64字节空间的情况。特此记录踩坑及填坑过程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值