- 博客(73)
- 收藏
- 关注
原创 NCCL如何打印XML拓扑文件,操作说明和源码展示
为了打印XML拓扑文件,需要设置NCCL的环境变量NCCL_TOPO_DUMP_FILE。这个环境变量指定了XML拓扑文件的输出路径和文件名。按照1.1中的方法设置了环境变量,然后运行NCCL-tests,成功生成topo.xml文件。2、ncclTopoDumpXmlToFile中打开文件,并调用。3、ncclTopoDumpXmlRec向文件中写入内容。1、如果设置了环境变量。E调用保存拓扑文件函数。
2025-03-11 22:42:06
535
1
原创 NVSHMEM介绍、InfiniBand GPUDirect、和NVshmem使用案例说明
NVIDIA NVSHMEM 是基于 NVIDIA 的“共享内存”库,它提供了一个易于使用的 CPU 端接口,用于分配对称分布在 NVIDIA GPU 集群中的固定内存。。是NVIDIA提供的一种并行编程接口,专为NVIDIA GPU集群设计,以实现高效且可扩展的通信。NVSHMEM基于OpenSHMEM规范,为跨越多个GPU内存的数据创建了全局地址空间,支持GPU间的数据共享和并行计算。
2025-03-11 22:37:35
1001
原创 常见存储器:DRAM、SRAM、SDRAM、NVRAM、EPROM、DISK、DDR。软考高级,系统架构师
内存类型基本原理容量成本访问速度是否需要刷新DRAM电容存储电荷大低较慢是SRAM触发器存储数据小高较快否SDRAM结合DRAM和时钟同步技术大中等较快是综上所述,DRAM、SRAM和SDRAM各有其特点和适用场景。选择合适的内存类型取决于具体的应用需求,包括容量要求、访问速度、功耗、成本以及系统的整体设计。
2025-02-22 15:12:41
1295
原创 RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列,RAID0、RAID1、RAID5、RAID6、RAID10
但是,如果 RAID 5 系统中的驱动器死机并被新驱动器替换,则需要数小时甚至一天以上的时间来重建交换的驱动器。如果您只想使用 RAID 0 将 twee 驱动器的存储容量合并到一个卷中,请考虑将一个驱动器安装在另一个驱动器的文件夹路径中。在 RAID 0 系统中,系统数据被拆分为多个块,这些块被写入阵列中的所有驱动器。通过将数据写入数据驱动器(或一组数据驱动器)和镜像驱动器(或一组驱动器),数据将存储两次。它通过镜像辅助驱动器上的所有数据,同时在每组驱动器上使用条带化来加快数据传输速度,从而提供安全性。
2025-02-04 17:15:52
751
原创 1.2:IEEE 1471-2000是软件架构标准,软考系统架构师
IEEE 1471-2000,全称为IEEE's Recommended Practice for Architectural Description of Software-Intensive Systems,即“软件密集型系统架构描述的推荐实践”。该标准由IEEE(电气和电子工程师协会)架构工作组制定,代表了工业界、其他标准化组织和学术界的意愿,并通过了超过150位国际评审员的评审。其目标在于便于体系结构的表达与交流,并通过体系结构要素及其实践标准化,奠定质量与成本的基础。
2025-02-04 17:14:18
1247
原创 NCCL源码解读3.1:double binary tree双二叉树构建算法,相比ring环算法的优势
如果我们用两棵树中的每一棵来处理一半的数据,那么每个 rank 最多会收到两次一半的数据,两次发送一半的数据,这在发送/接收的数据方面就像 rings 一样最优。在规模上,当我们在 InfiniBand 结构中跨越 L3 交换机时,带宽会略有下降,我们认为这是由于 NCCL 通信模式和 InfiniBand 路由算法之间的效率低下造成的。,其优势是将广播和 reduce 操作的全带宽(可以组合成一个执行 reduce,然后执行广播的 allreduce)和对数延迟相结合,从而在中小型操作中实现良好的性能。
2025-01-04 18:10:54
1399
原创 C/C++中 <<与<<=的介绍和区别
在C语言或类似语言中,bit << 1和bit <<= 1都涉及到左移操作,但它们之间有一个关键的区别:bit << 1。
2025-01-04 18:06:43
624
原创 C++ chrono来统计GPU CUDA函数耗时cudaSetDevice、cudaStreamCreate、cudaStreamSynchronize、cudaEventRecord
C++中的<chrono>库是一个用于处理日期和时间的标准库。它提供了时间点(time points)、时钟(clocks)、持续时间(durations)等相关的类和函数,使得在程序中处理时间变得更为方便和精确。今天我们就用chrono来统计GPU CUDA函数耗时,包括cudaSetDevice、cudaStreamCreate、cudaStreamSynchronize、cudaEventRecord。
2024-12-17 20:27:50
414
原创 SimAI万卡集群模拟器,LLM大模型训练通信计算模拟
是阿里巴巴构建的一个统一的模拟器,旨在大规模精确有效地模拟LLM训练过程。通过将训练框架、内核计算和集体通信库有选择地高保真集成到仿真过程中,SimAI在仿真中实现了高精度。简单点来说,大模型在大规模集群上的训练过程。
2024-12-17 20:24:47
1406
原创 CUDA 计时功能,记录GPU程序/函数耗时,cudaEventCreate,cudaEventRecord,cudaEventElapsedTime
为了测试GPU函数的耗时,可以使用 CUDA 提供的计时功能:cudaEventCreate, 和 cudaEventElapsedTime。这些函数可以帮助你测量某个 CUDA 操作(如设置设备)所花费的时间。
2024-12-09 19:33:13
628
原创 git同步两个远程仓,将一个远程仓库的代码和标签tag,上传push到另一个远程仓库,
在 Git 中,配置远程仓库(remote)是通过 git remote 命令及其子命令来完成的,通过配置,将一个远程仓库的代码提交到另一个仓库。
2024-12-09 19:33:00
1042
原创 vscode 如何支持点击跳转函数,以C++为例,Python等其它编程语言同理,Visual Studio Code。
VScode(Visual Studio Code)按住Ctrl+鼠标左键,没法跳转到对应的函数怎么办。3、找到C++ Extension(其它编程语言,就选其它的,比如Python Extension)2、输入C++(如果你的编程语言是C++,其它的就输其它的)哈哈哈,安装完成就可以跳转了。1、点击有四个小方块的图标。4、如下图,点击安装。
2024-11-30 09:51:33
1389
原创 CPU进行float16计算,C++的half.hpp使用方式FP16运算
C++不直接支持fp16,如何支持float16的计算,我们使用half包来让C++支持fp16计算。half.hpp是C++中用于处理半精度浮点数(float16)的头文件。
2024-11-30 09:45:35
1017
原创 float16,fp16计算、表示范围、数据精度/间隔详解
Float16,也被称为FP16或半精度浮点数,是一种用于表示浮点数的数据类型,在计算机科学中广泛应用于各种领域。
2024-11-25 21:49:51
3226
原创 git分支操作,查看、创建、切换、重命名、删除分支。branch
视频教程,git branch分支一个很大的作用就是方便并行开发,例如我们团队有两个人,那我们同时在一个份代码上开发。一个人写了一个bug,另一个人也没法运行程序测试和开发了,完了!那我们就创建分支,各种开发各自的,测试完成后合到一起,这样我们就能并行开发了。
2024-11-25 14:11:53
876
原创 git简介和本地仓库创建,并提交修改。git config init status add commit
视频教程在这如下图,比如我们写毕业论文,要经常修改和完善,得靠自己保存,就会出现各种版本编号,“最最最终版这种东西”,另外导师师兄等多个人帮忙修改的化,版本会更乱,不知道哪个版本修改了啥。因此需要一个,版本管理软件,来方便我们管理和协作开放软件,和文档。是一个开源 免费 分布式是一个开源 免费 分布式完整的项目历史记录,方便代码审查、故障排查、修复错误。快速回退到先前的稳定版本。支持多人远程协作开发,具有分支功能,允许多个开发者独立完成任务并在合并时解决冲突。
2024-11-15 21:26:34
1192
原创 Python中运行命令行、读取输出结果或第一行输出、终端命令、系统命令
Python中运行命令行(或称为终端命令、系统命令)主要依赖于内置的 os 模块。os.system() 是最简单的方法之一,但它不提供命令输出的直接访问。也就是我们无法利用命令的输出结果。
2024-11-15 15:52:27
486
原创 Windows配置hosts文件域名本地解析IP地址,网页打开
在Windows系统中,配置hosts文件可以实现对域名的本地解析,即将特定的域名映射到指定的IP地址。
2024-11-09 06:38:39
3023
原创 考研读研生存指南,注意事项
涉及考研读研的方方面面,从考研初试→复试面试→研究生生活→导师相处→论文专利写作混毕业,应有尽有。有了他,你的研究生生涯稳了。读研考研注意事项,研究生生存指南
2024-10-21 22:11:03
907
原创 Windos如何调节麦克风音量
6、选择级别,然后调解音量,最后确定应用。5、再鼠标右键:麦克风阵列。4、打开如下界面,先点击:录制。3、出现下图,点击:声音。2、点击:硬件和声音。
2024-10-21 22:09:55
410
原创 RDMA2.1: verbs编程基础知识,程序执行流程,函数,名词说明
向用户提供了有关RDMA的相关功能,典型的包括注册MR、创建QP、Post Send、Poll CQ等。用于管理RDMA通信和数据传输。2.1 RDMA verbs编程基础,API函数说明程序流程,RDMA通信_哔哩哔哩_bilibili。
2024-10-12 07:17:33
1865
原创 CUDA编程中kernel与device函数的区别,__device__、__host__和__global__
在CUDA编程中,__device____host__和__global__是三个特殊的关键字,它们用于定义函数的执行位置和可见性。在CUDA编程中,kernel函数和device__device____device____global____device____host__
2024-10-12 07:15:54
1679
原创 Linux软件安装位置,查看可执行文件的名称安装位置
which命令用于查找并显示指定命令的绝对路径。这个命令在系统的环境变量$PATH指定的目录中查找可执行文件。如果你知道软件的某个可执行文件的名称,可以使用which命令来查找其安装位置。这将返回vim命令的绝对路径,如/usr/bin/vim。
2024-09-30 15:24:58
1171
原创 大规异构集群 混合并行分布式训练系统,解决算力不均衡问题 HETHUB
可以根据各芯片的实际算力,让算力较高的芯片处理更多的层,算力较低的芯片处理更少的层,从模型结构角度,每层的计算量是一致的,所以按算力比作为层拆分比例可以达到最好的效果。例如,假设芯片A的算力是芯片B的4倍,则可以让芯片A计算4层transformer模块,让芯片B计算1层transformer模块,以此达到资源的最优配置,理论上可实现最高的吞吐性能。我们根据不同类型GPU加速器上阶段的执行时间和阶段之间的通信时间,将流水线并行中的阶段安排到不同类型的GPU加速器上,以优化端到端的训练时间。
2024-09-30 15:23:41
1472
原创 VScode配置连接远程服务器configure ssh Hosts
Host随便写这里写acmdxmj(爱串门的小马驹),Hostname服务器IP,User服务器用户名,Port服务器端口号。选择“Configure SSH Hosts”后,下拉选项更新,选择“C:\User\用户名\.ssh\config”选择“C:\User\用户名\.ssh\config”后,会打开一个配置文件,进行如下配置。并ctrl+s保存。点击完上面的按钮后,出现如下的下拉选项,选择“Connect to Host”出现如下下拉框,我们要连的服务器是Linux系统,我们选Linux。
2024-09-22 09:26:03
634
原创 CPU亲和性设置 代码示例 sched_setaffinity sched_getaffinity
来优化GPU和CPU间的通信路径。NCCL通信时也用到亲和性设置,来优化GPU和CPU间的通信路径。CPU亲和性(CPU Affinity)设置是操作系统中一个重要的性能优化手段,它允许程序或进程被绑定到特定的CPU核心上运行。这样做的好处包括减少缓存未命中、降低线程迁移(context switching)的开销,以及提高缓存的局部性(cache locality),从而可能提升程序的整体性能。对于我们NCCL集合通信,也用到亲和性设置,通过将需要与GPU交互的CPU设置为距离近的CPU核心,
2024-09-07 10:29:16
1936
原创 进程间通信,消息队列编程和案例 mq_open mq_close mq_unlink mq_setattr mq_getattr mq_send mq_receive
是 POSIX 消息队列(POSIX message queues)中用于发送和接收消息的函数。POSIX 消息队列是一种进程间通信(IPC)机制,允许进程以消息的形式交换数据。哈哈哈哈,先了解一下函数,最后来个案例。
2024-09-01 09:46:05
1184
原创 主机通道适配器 (HCA)和 接口分类QDR、FDR 、EDR、HDR、NDR
QDR (40G) 以及 FDR10 (40G)、FDR (56G)、EDR (100G)(长达 100m)、HDR (200G) 和 NDR (400G)(长达 150m)数据速率。高速 Gb 数据速率 (FDR)、增强数据速率 (EDR)、高数据速率 (HDR) 和下一数据速率 (NDR)光链路。,InfiniBand网络中的关键组件,它连接了服务器(或其他端节点)与InfiniBand网络。,有分别对应的线缆(NVIDIA Mellanox LinkX Optics AOC 线缆)。
2024-09-01 09:43:26
1553
原创 获取char*字符串指针指向的数组长度时,记得用strlen,而不是sizeof
strlen和sizeof的区别用以下示例说明:函数输出结果 这里的或取决于系统指针的大小。在32位系统上,指针通常是4个字节;在64位系统上,指针通常是8个字节。解释sizeof(ptr): 这里是一个指针变量,计算的是指针变量本身所占的内存字节数,而不是指针所指向的内存区域的大小。因此,它返回的是指针在特定平台上的大小(通常是4或8个字节)。strlen(ptr): 这里被当作一个指向字符数组(字符串)首元素的指针。函数遍历这个字符串,直到遇到字符为止,并返回遇到的之前的字符数。因此,对
2024-09-01 09:41:54
3014
原创 华为集合通信库开源了!HCCL开源链接、架构、拓扑算法、常用接口
华为集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,提供单机多卡以及多机多卡间的数据并行、模型并行集合通信方案。HCCL的软件架构如下图所示,分为“通信框架”、“通信算法”与“通信平台”三个模块,本源码仓中包含了其中紫色底纹所示的“通信框架”与“通信算法”两个模块的源码。适配层,图引擎与单算子适配,进行通信切分寻优等操作。
2024-08-29 19:32:58
3411
2
原创 阿里十万卡训练集群 网络拓扑架构和优势 Alibaba HPN: A Data Center Network for Large Language Model Training
GPU通过NVlink互联,每台主机配备了9个NIC,每个NIC具有2×200Gbps。这九个NIC中的一个(即图7中的NIC0)连接到前端网络,而其余八个NIC连接到后端网络,在LLM训练期间承载流量。这八个NIC中的每一个都服务于一个专用GPU,每个NIC两个端口。
2024-08-03 21:57:59
2793
11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人