mxnet代码剖析之--ndarray篇

本文详细介绍了MXNet中的NDArray类,包括其内部结构Chunk的组成,如存储管理器句柄和执行引擎变量句柄。NDArray提供了各种操作,如张量创建、读写同步、元素级运算,并通过TBlob进行实际计算。所有操作都遵循设备一致性原则,确保数据操作的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/// -----------------------------------------------------------------------
struct Chunk
Storage::Handle shandle; /// 存储管理器句柄 (ptr, size, ctx),负责实际存储空间的开辟管理等
Engine::VarHandle var; /// 执行引擎变量句柄(实现与其它操作之间的读写操作),负责与其它执行操作的交互
bool static_data; /// 如果真,表示数据内存由执行引擎管理
bool delay_alloc; /// 变量是否延迟申请,对于临时变量,为了实现高并发时的内存复用,提供此选项

构造函数:执行引擎处注册VarHandle,存储管理句柄指定(ptr, size, ctx)
1 Chunk(): 由执行引擎构造新的变量句柄
2 Chunk(TBlob):转换TBlob数据格式到Chunk

/// -----------------------------------------------------------------------
class NDArray
std::shared_ptr<Chunk> ptr_; /// 参见struct Chunk定义
TShape shape_; /// 对内存数据Chunk的shape定义
size_t offset_; /// 允许提取chunk中的一部分数据构建子集,offset表示子集在实际数据中的位置偏移量
int dtype_; /// 内存数据的数据类型定义

1 对数据块添加维度信息,构建张量/向量/矩阵
2 WaitToRead/WaitToWrite:通过chunk->Engine::VarHandle实现执行引擎对变量的统一管理
3 宏定义相关操作:DECL_TERNARY, DECL_BINARY, DECL
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值