博文

目前显示的是 六月, 2025的博文

硬芯与硬心

前段时间在盒马上买了几袋零脂玉米面,其配料表很干净,只有玉米粉、饮用水和食用盐,每百克钠含量是 7%,在面条里算比较低的了。拿到手后看了看食用方法,发现有 2 种:第一种是提前把面条在凉水里浸泡 2 小时以上,然后再下锅煮;第二种是直接冷水下锅,开锅后再煮 2-3 分钟然后关火继续焖几分钟。虽然两种做法略有不同,但它们有个共同点:待面条无硬芯即可食用。虽然看了说明,但第一次煮的时候还是大意了,以为用筷子稍用力夹就断就可以捞出来吃了,没想到吃起来却很“劲道”——当然这只是未将其再煮软一些的借口罢了——嚼起来的时候仍能感受到来自面条内“芯”的抵抗。于是后来几次就学乖了,煮的时间甚至比食用方法里建议的时间还更久一些,此时煮出来的面条口感正好符合自己的要求,看来“待面条无硬芯即可食用”这句话得划重点。 硬芯是这款玉米面的特点,而非它的错误,但人却不一样。如果当一个人内心刚硬的程度是玉米面的好多倍,面对他人正确且善意的指责不去虚心接受并改正,以为依然可以我行我素,那这样的硬心往往会带来悲剧。埃及记中的法老,上帝透过摩西不断降灾,为了消灾法老表面上次次答应摩西的条件却又次次“心里刚硬”而毁约,最终落得个埃及地所有人和牲畜生的长子必定死的下场,而这些人和动物本可以不死;西底家登基做犹大王的时候“行耶和华他神眼中看为恶的事。先知耶利米以耶和华的话劝他,他仍不在耶利米面前自卑...强项硬心,不归服耶和华以色列的神 ”(代下 36:12-13),将耶路撒冷变成了污秽之地,注意经文中说“所以”迦勒底人来攻击他们,焚烧圣殿,毁坏耶路撒冷,最后的下场是“地土荒凉”(36:21);当施洗约翰传悔改的道时,法利赛人和撒都该人也想一起凑热闹,但约翰却说他们是“毒蛇的种类”,因为这些人自诩亚伯拉罕的后裔——“有亚伯拉罕在我们怕什么!”这也是硬心而非悔改的一种表现,如果继续选择硬心,那么结局就是被看下来丢在火里(太 3:10)。 如果你留意世界上每天发生的许多悲剧,会发现上帝的审判并非只会跟着世界末日一起到来,因为一个人人做自己任意想要做的世界就是上帝给人的审判,正如路易斯在《梦幻巴士》(*The Great Divorce*)说:“归根究底只有两种人。一种人对上帝说:‘愿你的旨意成就’;另一种人上帝最后对他们说:‘愿你的旨意成就’”。硬心的人认为“人的所愿就是他的天堂”,殊不知“人的所愿就是他的地狱...

DeepEP原理分析(一):low latency模式特点总结

图片
 一、双缓冲模式 双缓冲模式是一种常见的提升数据发送效率的方法,数据的发送和接收往往有延迟。如果只用一块缓冲区,必须等通信完成后才能复用这块内存。而使用双缓冲则让通信任务和数据准备任务同时进行,有效隐藏通信延迟,提高整体吞吐。该方法涉及两块缓存,第一块缓存用于当前数据收发时,也会对第二块缓存会进行清理以准备下一轮的数据发送。例如下面的 low latency dispatch 代码中第一块缓存为 buffer,第二块为 next_buffer,它们均为 LowLatencyBuffer 结构体,位于显存(rdma_buffer_ptr )上 当 dispatch kernel 利用多个 SM 和 buffer 进行数据收发时,最后一个 warp 中的第一个 SM 也会对 next_buffer 进行清零操作,这样当下一次进行 combine 时可以直接复用刚刚完成的 dispatch 过程中准备好的 next_buffer,而 combine 过程同样也会为下一次的 dispatch 准备好 buffer。buffer 和 next_buffer 见的切换通过“异或”操作进行(^= 1),每进行一次异或操作 low_latency_buffer_idx 的值就会从 0 变为 1 或 1 变成 0,这样每轮 dispatch 和 combine 的过程就能错开利用两块 buffer 二、zero copy 原理 在 test_low_latency 测试脚本中有个叫做 test_func 的函数,该函数允许调用者手动设置是否使用 zero copy 模式来进行 combine。顾名思义 zero copy 指在 combine——也就是各专家将 dispatch 过程中收到的 token 计算完后的结果发回 token 所在的原 rank——该过程中无需将 token 计算结果拷贝至 RDMA 发送缓冲区,而是直接将让 combine 发送缓冲区(combine_rdma_send_buffer_data_start)指向计算后结果(simulated_gemm_x) 其关键作用的便是 get_next_low_latency_combine_buffer 函数,里面会使用 from_blob 方法,该方法会根据传入的原始数据指针创建一个引用(而非复制) 指向...