io_uring 入门
io_uring 是 Linux 内核 5.1 版本引入的异步 I/O 框架,
io_uring 是 Linux 内核 5.1 版本引入的异步 I/O 框架,
std::add_const_t<T>
: 为类型 T
添加 const 修饰符。
std::add_volatile_t<T>
: 为类型 T
添加 volatile 修饰符。
std::add_cv_t<T>
: 为类型 T
添加 const 和 volatile 修饰符。
std::remove_const_t<T>
: 移除类型 T
的 const 修饰符。
std::remove_volatile_t<T>
: 移除类型 T
的 volatile 修饰符。
std::remove_cv_t<T>
: 移除类型 T
的 const 和 volatile 修饰符。
std::add_lvalue_reference_t<T>
: 为类型 T
添加左值引用修饰符。
std::add_rvalue_reference_t<T>
: 为类型 T
添加右值引用修饰符。
std::remove_reference_t<T>
: 移除类型 T
的引用修饰符。
std::remove_extent_t<T>
: 移除类型 T
的数组维度。
std::remove_all_extents_t<T>
: 移除类型 T
的所有数组维度。
std::remove_pointer_t<T>
: 移除类型 T
的指针修饰符。
std::add_pointer_t<T>
: 为类型 T
添加指针修饰符。
std::make_signed_t<T>
: 将类型 T
转换为有符号类型。
std::make_unsigned_t<T>
: 将类型 T
转换为无符号类型。
dlmalloc 是一个 C 语言实现的流行的内存分配器实现,由纽约州立大学 Oswego 分校计算机系教授 Doug Lea 在 1980 年代编写,许多人称之为 Doug Lea 的 malloc,或者简称 dlmalloc。
关于 Doug Lea
Doug Lea 是计算机科学领域的知名学者,尤其在内存管理和并发编程方面有着深厚的造诣。他的研究工作对操作系统、编程语言和计算机体系结构等领域产生了深远的影响。
Doug Lea 曾经是 JCP(Java Community Process)委员会委员,参与了 JSR 166(Java Concurrency Utilities)的设计和实现。他的工作为 Java 的并发编程模型奠定了基础。
今天来读经典。
Dynamo 是 Amazon 在 2007 年发表于 SOSP 的 K-V 存储系统。作为电商领域的巨头, Amazon 较早面临巨大业务规模带来的技术挑战。 Dynamo 的技术方案在当时的分布式系统中是非常前沿的, 其设计思想和实现细节对后来的 NoSQL 系统产生了深远的影响。
SPDK 是 Intel 提出的一套用户态 NVMe SSD I/O 软件栈,其核心是使用用户态的 SSD 驱动绕过上下文切换的开销。
因为驱动程序放在用户态,自然也没法使用 Linux 的 FS 接口,配套地,SPDK 提供了 Blobstore 和 BlobFS 接口。支持对接 MySQL、RocksDB、Ceph 等。
近年来,为了训练更大的模型,深度学习训练集群在不断发展。这样的集群通常包括 GPU,CPU 和高速互联网络,例如高速以太网或者 Infiniband。
NVIDIA 出品的大模型训练方法,2019 年挂在 ArXiV 上,到现在(2025 年)有 2k+ 论文引用。
训练 DNN 通常是一个耗时的过程,这主要是由于数据和模型的大小不断增加。为了加速训练,常用的方法是数据并行(Data Parallel)。然而,数据并行的性能提升并非线性增加,主要的原因是通信开销。
Horovod 是 Uber 于 2017 年发布的一个易于使用的高性能的分布式深度训练框架,支持 TensorFlow,Keras,PyTorch 和 MXNet。
(博主注: 2017 年 Google 刚刚提出 Transformer,2018 年 BERT 发布,2019 年 GPT-2 发布,2020 年 GPT-3 发布。回头看这篇 2017 年的论文仅供学习。)