- 博客(11)
- 收藏
- 关注
原创 cutlass2.x源码解读之PredicatedTileAccessIterator
└─ else: 重置为 0, pointer_ += params_.inc_next_;└─ else: 重置为 0, ++the_predicates.iteration_contiguous_;└─ else: 重置为 0, ++the_predicates.iteration_strided_;├─ if < ThreadMap::Iterations::kContiguous: 返回。返回数据元素的指针。
2025-09-08 14:47:21
357
原创 cutlass2.x源码解读之PredicatedTileAccessIteratorParams
预告:PredicatedTileAccessIterator如何利用PredicatedTileAccessIteratorParams进行内存访问后续会继续讲。// pitch-linear 布局的。initialize方法涉及了与ThreadMap的协作。移动到下一次访问需要增加的。
2025-09-06 17:53:34
185
原创 cutlass2.x源码解读之PredicatedTileAccessIteratorDesc
PredicatedTileAccessIteratorDesc 是 CUTLASS 库中用于描述带谓词(predicated)tile访问迭代器的关键描述符结构体。
2025-09-06 08:46:28
257
原创 cutlass2.x源码解读之PitchLinearStripminedThreadMap
TensorCoord:使用layout::PitchLinearCoord作为张量坐标。Shape:使用模板参数Shape_作为tile的形状,kThreads:线程总数,定义为模板参数Threads。kElementsPerAccess:每次访问的元素数,定义为模板参数ElementsPerAccess。ThreadAccessShape:线程访问的形状,使用layout::PitchLinearShape定义。内部实现细节:ShapeVec。
2025-09-05 17:55:10
710
原创 cutlass2.x源码解读之PredicatedTileAccessIteratorPredicates
最终,predicates_数组将包含所有元素的谓词信息指定位置是否超过范围,因此通过精细控制谓词的计算和设置,来优化矩阵运算中的数据访问,提高计算效率。例如,如果extent为(16, 16),is_steady_state为false,则代码会遍历所有256个元素,并对每个元素计算谓词。如果元素坐标在范围内,则将对应的谓词位置为1,否则置为0。对于每个元素,代码计算其对应的坐标coord,这个坐标是基于线程的偏移量thread_offset_和元素的迭代坐标iteration_coord计算得出的。
2025-09-04 10:12:35
828
原创 手动实现 std::variant / std::visit 的功能
要手动实现 std::variant / std::visit 的功能,我们需要理解 std::variant 和 std::visit 是如何工作的。std::visit 是一个函数模板,用于访问 std::variant 中的对象,并以类型安全的方式进行参数化。因此,我们在实现自己的 std::variant / std::visit 时,需要注意类型匹配和错误处理。// 获取错误类型的值。// 获取指定类型的值。
2023-04-27 16:42:56
518
原创 Rust标准库中常用Trait之Copy/Clone
Clone约定了数据被深拷贝或浅拷贝的行为pub trait Clone { fn clone(&self) -> Self; fn clone_from(&mut self, source: &Self) { *self = source.clone() }}Clone trait 有两个方法,clone()和clone_from(),后者有缺省实现,所以平时我们只需要实现clo...
2021-12-08 10:48:25
4584
原创 三、mediasoup之WebRtcTransport 创建流程(2)
上节说过WebRtcTransport实例创建成功后,客户端通过服务端的nodejs主进程发送"transport.connect"指令到c++子进程,进行建立连接的。连接的建立过程主要是ICE,DTLS协议等规定的相关内容,下面简单说明一下相关概念。ICE是一种标准穿透协议,利用STUN和TURN服务器来帮助端点建立连接 ,客户端通过ice-ufrags, ice-passwords与服务器进行身份验证并建立连接。并互换fingerprint,用于验证加密数据的合法性...
2021-12-07 17:23:44
1037
原创 STL标准库动态数组vector与queue区别
vector 是单端开口的容器,尾部插入和删除元素速度快;deque 是双端开口的容器可以头部插入也可以尾部插入,速度快。但是中间插入速度慢,遍历速度快。vector 是动态数组,在堆中分配内存,元素是连续存放的。可以动态扩容。 vector 即使大小减少,内存也不会被释放,通常状态下不会移动内存,只有保留内存不够的时候,才会对中间和开始处的内存进行移动。 vector 的存储数据的时候,会遵循以下顺序: 建立空间->填充数据->如果插入的数据超过预留的空间大小,重建更大的空间 -&.
2021-12-07 15:56:00
2991
原创 二、mediasoup之WebRtcTransport创建流程(1)
在创建了router(代表一个房间)之后,producer要发送音视频数据之前就要先创建Transport,分为WebRtcTransport 、PlainTransport、PipeTransport三种,我们这里主要讲的是WebRtcTransport 。参考下官方api的使用:// 参数详情参与链接// https://mediasoup.org/documentation/v3/mediasoup/api/#WebRtcTransportOptionsconst tra...
2021-12-03 11:43:07
2641
原创 一、mediasoup之router的创建过程
本专栏定位于mediasoup源码阅读,需要具体一定的相关基础知识,不是是入门文章,如果不熟悉mediasoup的基本概念术语,比如 worker , router, transport, producer,consumer等,或者对webrtc中 sdp, stun,turn等术语,请自行查阅相关概念。
2021-12-01 14:26:14
2234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅