<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on zzudongxiang</title><link>https://www.zzudongxiang.com/posts/</link><description>Recent content in Posts on zzudongxiang</description><generator>Hugo</generator><language>zh-cn</language><copyright>© 2026 zzudongxiang.com · [豫ICP备2022012018号-1](https://beian.miit.gov.cn/) · &lt;img src="https://www.zzudongxiang.com/images/gongan.png" alt="公安备案" style="display:inline-block;height:1.2em;vertical-align:-0.2em;margin-inline-end:2px"&gt;[豫公网安备41160202000614号](https://www.beian.gov.cn/)</copyright><lastBuildDate>Sat, 12 Sep 2026 14:30:00 +0800</lastBuildDate><atom:link href="https://www.zzudongxiang.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>文献阅读《Mystique: Enabling accurate and scalable generation of production AI benchmarks》</title><link>https://www.zzudongxiang.com/posts/mystique-benchmark/</link><pubDate>Sat, 12 Sep 2026 14:30:00 +0800</pubDate><guid>https://www.zzudongxiang.com/posts/mystique-benchmark/</guid><description>&lt;h2 id="1-挑战与贡献"&gt;1. 挑战与贡献&lt;/h2&gt;&#10;&lt;h3 id="挑战"&gt;挑战&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;模型的多样性和更新速度无法与云基础设施上不断变化、高度多样化的人工智能生产工作负载相匹配&lt;/li&gt;&#10;&lt;li&gt;工程师或研究人员需要手动选择现有的生产或开源工作负载，并将其调整为可用于基准测试的形式&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="贡献"&gt;贡献&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;框架&lt;/strong&gt;：建立了一个可扩展的自动化端到端基础设施，可对真实生产型人工智能工作负载的执行轨迹进行剖析和重现&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;高精度&lt;/strong&gt;：通过在warehouse-scale fleet中运行的几个 PyTorch 生产工作负载对 Mystique 进行了评估，结果表明，生成的基准在性能和系统级指标方面与原始基准非常接近&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;可移植性&lt;/strong&gt;：展示了跨平台生成基准的可移植性，并评估了 Mystique 可应用的几种情况，包括早期平台评估、子轨迹重放和缩小性能测试&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="2-相关工作"&gt;2. 相关工作&lt;/h2&gt;&#10;&lt;h3 id="benchmark"&gt;Benchmark&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;DeepBench：提供了一套深度神经网络（DNN）使用的基本操作，并在不同平台上对其进行了评估&lt;/li&gt;&#10;&lt;li&gt;TBD：确定了八个具有代表性的 DNN 模型，并在不同的深度学习框架和硬件配置上进行了详细的性能分析&lt;/li&gt;&#10;&lt;li&gt;DAWNBench：测量训练和推理的端到端性能，以规定的精度为前提，允许软件、算法、通信方法的创新&lt;/li&gt;&#10;&lt;li&gt;MLPerf：目前最为流行的Benchmark&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="仿真工具"&gt;仿真工具&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Sniper：并行、可扩展的CPU仿真工具，对多核和多处理器进行高度抽象&lt;/li&gt;&#10;&lt;li&gt;gem5：一种微架构的仿真器，目前适用于仿真GPU&lt;/li&gt;&#10;&lt;li&gt;GPGPU-Sim：提供一种时钟周期级别的仿真工具，可以对运行CUDA和OpenCL的Nvidia GPU进行仿真&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="性能建模"&gt;性能建模&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Daydream：根据内核-任务依赖图预测模型在某些优化条件下的运行时间&lt;/li&gt;&#10;&lt;li&gt;Habitat：使用波形缩放和 MLP 预测 DNN 训练的执行时间&lt;/li&gt;&#10;&lt;li&gt;CM-DARE：提出了一种利用云端 GPU 服务器进行分布式训练的性能模型&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="性能收集"&gt;性能收集&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;MicroGrad：收集CPU指标，并使用基于梯度下降的调整机制来生成工作负载克隆和压力测试&lt;/li&gt;&#10;&lt;li&gt;PerfProx：根据硬件性能计数器得出的性能指标，生成真实世界数据库应用程序的miniature proxies&lt;/li&gt;&#10;&lt;li&gt;CAMP：模拟核心性能、内存位置以及它们之间的相互作用，以模仿BigData应用程序&lt;/li&gt;&#10;&lt;li&gt;ECHO：重点是利用统计模型克隆分布式云应用中的网络行为，并生成与原始服务的定位和流量特征相似的合成基准&lt;/li&gt;&#10;&lt;li&gt;Ditto：提出了一种自动克隆框架，该框架可捕获分布式云应用程序的低级和高级性能指标&lt;/li&gt;&#10;&lt;li&gt;G-MAP：为 GPU 应用程序的内存访问模式和并行性建模，以创建内存代理&lt;/li&gt;&#10;&lt;li&gt;GPGPU-MiniBench：生成 CUDA GPGPU 内核的miniature proxies，以保持相似的性能&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="3-相关背景"&gt;3. 相关背景&lt;/h2&gt;&#10;&lt;h3 id="pytorch"&gt;Pytorch&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;ATen ops&lt;/strong&gt;：低层级的Tensor库，是Pytorch的后端，用于执行真实的计算任务（加法、矩阵乘法等）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Communication ops&lt;/strong&gt;：多设备之间的分布式训练通信，通常为异步的。在Pytorch中c10d是一个非常流行的通信库，提供了大量的集合通信API和P2P通信API&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Fused ops&lt;/strong&gt;：融合操作，是一种计算加速优化方法，可以把多个操作融合成一个运算操作。CPU中常用NNC作为融合操作的后端，GPU中为NVFuser&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Custom ops&lt;/strong&gt;：允许用户实现比默认实现更好的模型块&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img alt="img" loading="lazy" src="https://www.zzudongxiang.com/posts/mystique-benchmark/images/image-ojuq-1789197025323-1.png"&gt;&lt;/p&gt;&#10;&lt;h2 id="4-mystique设计"&gt;4. Mystique设计&lt;/h2&gt;&#10;&lt;p&gt;&lt;img alt="img" loading="lazy" src="https://www.zzudongxiang.com/posts/mystique-benchmark/images/image-fqwp-1789197033042-4.png"&gt;&lt;/p&gt;</description></item><item><title>文献阅读《Alibaba HPN: A Data Center Network for Large Language Model Training》</title><link>https://www.zzudongxiang.com/posts/alibaba-hpn/</link><pubDate>Wed, 28 Aug 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/alibaba-hpn/</guid><description>&lt;div&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Alibaba High Performance Network (HPN)&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;HPN介绍了一种两层的双平面网络，可以在一个Pod中接入1.5w个GPU，通常需要3层Clos架构的网络才能容纳这么多GPU&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;HPN 提出了一种新的双 ToR 设计，以取代传统数据中心网络中的单 ToR&lt;/span&gt;&lt;/p&gt;&#10;&lt;h2 id="1-贡献与挑战"&gt;&lt;span fontsize="" color=""&gt;1. 贡献与挑战&lt;/span&gt;&lt;/h2&gt;&#10;&lt;h3 id="挑战"&gt;&lt;span fontsize="" color=""&gt;挑战&lt;/span&gt;&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;流量模式&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;传统网络无法应对LLM的低熵、周期性、突发的网络特点，传统的数据中心网络一般是高熵的（传统网络中会存在百万条流，但是每条流的利用率特别低，一半小于20%）&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;ECMP在传统的数据中心的高熵、低利用率的网络中性能表现较好，但是在LLM训练中并不是最佳的&lt;/span&gt;&lt;/p&gt;&#10;&lt;img src="images/image-zyhs.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;单点故障的敏感性高&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;LLM训练是一个同步过程，所有GPU合作完成一系列迭代，任何一个GPU发生故障都有可能导致整个训练过程出现问题&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;对LLM训练影响最大的是与机架顶部（ToR）相关的单点故障，这种故障可能会影响到各种GPU&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;生产统计数据显示，LLM训练中出现的故障造成的损失是一般云计算故障的 20 倍&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="贡献"&gt;&lt;span fontsize="" color=""&gt;贡献&lt;/span&gt;&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;非堆叠的双层ToR网络，可以在两个交换机之间直接同步，很好的改善了大规模部署的可信度&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;适配最新的51.2Tbps的交换机芯片，可以将1K个GPU部署在Tier 1网络中，使96.3%的训练任务获得高性能的网络&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;我们的实验表明，使用HPN的LLM训练吞吐量比传统数据中心网络高14.9倍&lt;/span&gt;&lt;/p&gt;&#10;&lt;h2 id="2-背景知识"&gt;&lt;span fontsize="" color=""&gt;2. 背景知识&lt;/span&gt;&lt;/h2&gt;&#10;&lt;h3 id="llm的并行策略"&gt;&lt;span fontsize="" color=""&gt;LLM的并行策略&lt;/span&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;DP&lt;/strong&gt;：每次迭代使用All Reduce同步计算梯度数据&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;PP&lt;/strong&gt;：每次使用Send/Recv传递中间结果&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;TP&lt;/strong&gt;：每次迭代使用All Reduce/All Gather同步输出和对应的梯度&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="llm的流量特征"&gt;&lt;span fontsize="" color=""&gt;LLM的流量特征&lt;/span&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;带宽利用率周期性突发&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;流的数量少&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;传统的数据中心网络不适用于LLM流量模式&lt;/span&gt;&lt;/p&gt;&#10;&lt;h3 id="llm对单点故障的敏感性"&gt;&lt;span fontsize="" color=""&gt;LLM对单点故障的敏感性&lt;/span&gt;&lt;/h3&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;LLM每次的Checkpoint间隔大概在2-4小时，按照一个3k张GPU的集群计算，每次失败导致的回滚都将导致大约3w美元的损失&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;常见的监控工具和异常分析工具并不能避免网络产生故障，根据实验表明，在NIC到ToR之间每个月大概有0.057%的Link故障率，在ToR交换机每个月的故障率大约是0.051%，即一个LLM训练集群每个月可能会产生1-2次的Crash，5k-60k次的Link故障&lt;/span&gt;&lt;/p&gt;&#10;&lt;img src="images/image-wxuc.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;h3 id="llm网络架构的建设目标"&gt;&lt;span fontsize="" color=""&gt;LLM网络架构的建设目标&lt;/span&gt;&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;规模化：达到15K个GPU的规模，未来可以扩展到100K个GPU的规模&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;高性能：尽可能小的网络跳数，尽可能使用GPU-GPU直达的连接&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;单点故障容错率：在网络拓扑层尽可能改善单点故障的容错率&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="3-hpn架构"&gt;&lt;span fontsize="" color=""&gt;3. HPN架构&lt;/span&gt;&lt;/h2&gt;&#10;&lt;img src="images/image-xjoy.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;分为前端网络和后端网络，前端网络主要负责例如管理、接口、存储等网络流量，后端网络负责LLM的训练时的流量&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;每个Host包含8个GPU，使用NVLink互联，双向带宽达到400GBps-900GBps&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;每个Host包含9个2x200Gbps的网卡，其中一个连接到前端网络，其余的8个与GPU直连，接入后端网络&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;每个网卡的2个端口分别连接至不同的ToR网络，这种双ToR设计可以避免单点故障&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="4-双tor网络"&gt;&lt;span fontsize="" color=""&gt;4. 双ToR网络&lt;/span&gt;&lt;/h2&gt;&#10;&lt;img src="images/image-goji.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;传统数据中心的NIC的两个光缆接入一个交换机成为单ToR设计&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;双ToR设计将NIC的两个光缆接口分别接入不同的ToR交换机中&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;两个接口配置相同的IP和MAC地址，即使其中一个ToR故障，另外一个依旧可以正常工作&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;基于以上，同一个NIC的两个网卡共享相同的Queue Pair Context&lt;/span&gt;&lt;/p&gt;</description></item><item><title>文献阅读《xCCL: A Survey of Industry-Led Collective Communication Libraries for Deep Learning》</title><link>https://www.zzudongxiang.com/posts/xccl-survey/</link><pubDate>Mon, 26 Aug 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/xccl-survey/</guid><description>&lt;div&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;we survey the current state-of-the-art collective communication libraries (namely &lt;strong&gt;xCCL&lt;/strong&gt;, including NCCL, oneCCL, RCCL, MSCCL, ACCL, and Gloo), with a focus on the industry-led ones for deep learning workloads.&lt;/span&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;常见的MPI库：MPICH、MVAPICH、OpenMPI&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;其他的非MPI库：OpenSHMEM（Open-source Symmetric Hierarchical MEMory）、UCX（Unified Communication X）、UCC（Unified Collective Communication）&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;常见的xCCL库：NVIDIA Collective Communications Library (NCCL)、AMD&amp;rsquo;s ROCm Collective Communication Library (RCCL)、Gloo&lt;/span&gt;&lt;/p&gt;&#10;&lt;h2 id="1-贡献与挑战"&gt;&lt;span fontsize="" color=""&gt;1. 贡献与挑战&lt;/span&gt;&lt;/h2&gt;&#10;&lt;h3 id="挑战"&gt;&lt;span fontsize="" color=""&gt;挑战&lt;/span&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;什么让同时代的xCCL比MPI更具有吸引力？&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;每种集合通信库的性能特性如何？&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;这些xCCL库是如何设计的？是否存在某种共享的设计模式？&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="贡献"&gt;&lt;span fontsize="" color=""&gt;贡献&lt;/span&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;总结和研究集合通信原语、网络拓扑、算法，为同时代的深度学习训练奠定基础&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;讨论这些研究的工业集合通信解决方案以及其细节测试&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;对比当前的集合通信库的性能情况&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-集合通信原语"&gt;&lt;span fontsize="" color=""&gt;2. 集合通信原语&lt;/span&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Broadcast：常用于将训练数据发送到各个设备上&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;All Reduce：广泛应用于分布式神经网络训练的后向传播阶段&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;All Gather、Scatter、All-to-All、Reduce、Reduce Scatter&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img src="images/image-bvtn.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;h2 id="3-网络拓扑架构"&gt;&lt;span fontsize="" color=""&gt;3. 网络拓扑架构&lt;/span&gt;&lt;/h2&gt;&#10;&lt;h3 id="31-hypercube"&gt;&lt;span fontsize="" color=""&gt;3.1 HyperCube&lt;/span&gt;&lt;/h3&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;优点：高度的连接性，不容易发生故障&lt;/span&gt;&lt;/p&gt;</description></item><item><title>《ASTRA-sim 系列两篇》</title><link>https://www.zzudongxiang.com/posts/astra-sim/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/astra-sim/</guid><description>&lt;div&gt;&#10;&lt;h1 id="astra-sim-enabling-swhw-co-design-exploration-for-distributed-dl-training-platforms"&gt;《ASTRA-SIM: Enabling SW/HW co-design exploration for distributed DL training platforms》&lt;/h1&gt;&#10;&lt;h2 id="1-文章简介"&gt;1. 文章简介&lt;/h2&gt;&#10;&lt;h3 id="11-摘要"&gt;1.1 摘要&lt;/h3&gt;&#10;&lt;p&gt;现代深度学习系统主要依靠基于高性能加速器（如 TPU、GPU）的硬件平台进行分布式训练。目前的例子包括谷歌的云 TPU 和 Facebook 的 Zion。DNN 训练涉及 DNN 模型架构、并行化策略、调度策略、集体通信算法、网络拓扑和终端加速器之间复杂的相互作用。随着人工智能/ML 模型的创新不断加速发展，需要一种全面的方法来理解和驾驭未来系统中复杂的 SW/HW 设计空间，以支持未来 DNN 模型的高效训练。在这项工作中，我们做出了以下贡献：(i) 为分层扩展结构上的分布式训练建立了 SW/HW 设计空间；(ii) 开发了一个用于导航设计空间的网络模拟器；(iii) 展示了算法拓扑协同设计加速端到端训练的前景。&lt;/p&gt;&#10;&lt;h3 id="12-研究动机"&gt;1.2 研究动机&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;对模型架构、并行策略、调度算法、集合通信、网络拓扑、终端算力的仿真&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;大规模并行训练成本高，在实际部署和训练之前，需要一个仿真工具进行评估&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="13-主要贡献"&gt;1.3 主要贡献&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;为分层加速器结构设计空间探索建立 SW/HW 设计空间，并确定扩展 DL 工作负载的关键瓶颈&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;开发名为 ASTRASIM 的端到端网络模拟器，用于评估设计空间的各个方面&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;使用 ASTRA-SIM 对 alltoall 和 Torus 拓扑的 all-reduce 和 all-to-all 集合的一维、二维和三维拓扑进行全面分析&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-实现方法"&gt;2. 实现方法&lt;/h2&gt;&#10;&lt;img src="images/image-oiub.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;h2 id="3-实验结果"&gt;3. 实验结果&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;实验参数&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 16px; color: rgb(91, 70, 155)"&gt;&lt;img src="images/image-spfp.png" style="display: inline-block;width:35.0%" /&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>文献阅读《Chakra: Advancing performance benchmarking and co-design using standardized execution traces》</title><link>https://www.zzudongxiang.com/posts/chakra-benchmarking/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/chakra-benchmarking/</guid><description>&lt;div&gt;&#10;&lt;h2 id="1-文章简介"&gt;1. 文章简介&lt;/h2&gt;&#10;&lt;h3 id="11-摘要"&gt;1.1 摘要&lt;/h3&gt;&#10;&lt;p&gt;基准测试和协同设计对于推动 ML 模型、ML 软件和下一代硬件的优化和创新至关重要。全工作量基准（如 MLPerf）在实现不同软件和硬件堆栈之间的公平比较方面发挥着至关重要的作用，尤其是在系统完全设计和部署之后。然而，人工智能创新的步伐要求模拟器和仿真器采用更加敏捷的方法来创建和使用基准，以实现未来的系统协同设计。我们提出了 Chakra，这是一种开放式图模式，用于标准化工作负载规范，捕捉关键操作和依赖关系，也称为执行跟踪（ET）。此外，我们还提出了一套互补的工具/功能，使各种模拟器、仿真器和基准能够收集、生成和采用 Chakra ET。例如，我们使用生成式人工智能模型学习数千种 Chakra ET 的潜在统计属性，并使用这些模型合成 Chakra ET。这些合成的 ET 可以混淆关键的专有信息，还可以针对未来的假设场景进行设计。举例来说，我们展示了一个端到端的概念验证，它能将 PyTorch ET 转换为 Chakra ET，并以此驱动一个开源训练系统模拟器（ASTRA-sim）。我们的最终目标是建立一个充满活力的全行业敏捷基准和工具生态系统，以推动未来的人工智能系统协同设计。&lt;/p&gt;&#10;&lt;h3 id="12-研究动机"&gt;1.2 研究动机&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Full Workload Benchmarks对于评价分布式训练的性能虽然非常重要，但是需要更加敏捷的方式&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;评价分布式训练的软硬件联合设计的效果&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;不同的AI/ML模型通常由不同的公司在不同的平台上构建，通常不能提供公开模型的细节&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;缺少在不同的组织之间交换ML模型ET的统一架构&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;缺少完善的性能评估工具链&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;目前的方法缺乏合成ET的能力&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;以Pytorch为例，可以使用Execution Graph Observer获取直接的ET，但是这种方法得到的结果受真实的系统的限制（例如NPU数量，计算时间，网络延迟等），使用合成的ET可以避免这些限制&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="13-主要贡献"&gt;1.3 主要贡献&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;捕捉相关执行和依赖信息的 Chakra ET&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可视化器、转换器和模拟器等开源工具链&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;人工智能生成模型的ET合成&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-实现方法"&gt;2. 实现方法&lt;/h2&gt;&#10;&lt;h3 id="21-设计需求"&gt;2.1 设计需求&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;应该包含内存访问、计算负载、网络通信、并行策略&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;应该最小化且可扩展&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;应该从性能建模的角度对 ML 执行的各个方面进行建模&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;应该能显示不同执行阶段的ET，且与设备解耦&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="22-实现方案"&gt;2.2 实现方案&lt;/h3&gt;&#10;&lt;h4 id="221-et的表示"&gt;2.2.1 ET的表示&lt;/h4&gt;&#10;&lt;h5 id="a-chakra-node"&gt;A. Chakra Node&lt;/h5&gt;&#10;&lt;img src="images/image-20240615162533121.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;p&gt;&lt;strong&gt;type的值范围&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;INVALID&lt;/strong&gt; 字段的初始值，用于忽略非关键节点&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;MEM_LOAD、MEM_STORE&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;COMP&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;COMM_SEND、COMM_RECV、COMM_COLL&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h5 id="b-chakra-attribute"&gt;B. Chakra Attribute&lt;/h5&gt;&#10;&lt;img src="images/image-20240615162606441.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;p&gt;&lt;strong&gt;type的值范围&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>文献阅读《HPCC: high precision congestion control》</title><link>https://www.zzudongxiang.com/posts/hpcc-congestion-control/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/hpcc-congestion-control/</guid><description>&lt;div&gt;&#10;&lt;h2 id="1-内容简介"&gt;1. 内容简介&lt;/h2&gt;&#10;&lt;h3 id="11-摘要"&gt;1.1 摘要&lt;/h3&gt;&#10;&lt;p&gt;拥塞控制（CC）是高速网络实现超低延迟、高带宽和网络稳定性的关键。根据多年运营大规模高速 RDMA 网络的经验，我们发现现有的高速拥塞控制方案在实现这些目标方面存在固有的局限性。在本文中，我们提出了 HPCC（高精度拥塞控制），一种能同时实现上述三个目标的新型高速拥塞控制机制。HPCC 利用网内遥测（INT）获取精确的链路负载信息，并精确控制流量。通过解决拥塞期间 INT 信息延迟和对 INT 信息反应过度等难题，HPCC 可以在避免拥塞的同时快速收敛以利用空闲带宽，并能保持近乎零的网内队列以实现超低延迟。HPCC 在硬件上的部署也是公平、简单的。我们利用商品可编程网卡和交换机实现了 HPCC。在我们的评估中，与 DCQCN 和 TIMELY 相比，HPCC 可将流量完成时间缩短达 95%，即使在大规模数据交换的情况下也几乎不会造成拥塞。&lt;/p&gt;&#10;&lt;h3 id="12-研究动机"&gt;1.2 研究动机&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;FPC风暴：网络上一旦出现阻塞，根据RoCEv2协议会发送FPC暂停帧，进而导致网络停摆&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;超大延迟：由于阻塞网络队列的影响，神经网络训练时的延迟大到超乎想象&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;收敛速度慢：由于依赖的Feedback信息颗粒度不够，导致处理大规模阻塞事件时收敛慢&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;不可避免的缓存队列：由于DCQCN和TIMELY等都依赖队列信息的感知，因此无法避免延迟大的问题&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;复杂的调参：不同的应用有不同的流量模式，不同的环境有不同的拓扑、链接速度、交换机缓冲区大小等，因此在不同环境下部署不同应用时都要对参数进行微调&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="13-主要贡献"&gt;1.3 主要贡献&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;HPCC的发送端可以快速提高发送速率以提高带宽利用率，同时可以快速降低发送速率，以避免产生阻塞&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;HPCC的发送端可以快速的调整发送速率以确保每条连接的输入速率略小于其带宽能力&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;一旦发送速率在路由中精确计算出结果，HPCC只需要3个独立的参数就可以调整其效率和公平性&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-实现方法"&gt;2. 实现方法&lt;/h2&gt;&#10;&lt;img src="images/image-20240612113350024.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;p&gt;Sender发送输入给Receiver，数据在经过中间的Switch时会被Switch添加一些INT数据作为metadata，Receiver在ACK时把这些metadata传递给Sender，然后Sender根据这些INT数据调整自己的发送速率&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Sender通过发送窗口限制在途数据的数量&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;基于在途数据量的阻塞控制信号和控制策略&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;快速响应而不是过响应&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;实现方法，FPGA网卡&lt;/strong&gt;&lt;/p&gt;&#10;&lt;img src="images/image-20240612113825169.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;h2 id="3-实验结果"&gt;3. 实验结果&lt;/h2&gt;&#10;&lt;p&gt;小规模测试+大规模NS3仿真&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;测试条件 - 网络拓扑&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;The testbed topology&lt;/strong&gt; mimics a small scale RDMA PoD in our production. The testbed includes one Agg switch and four ToRs (ToR1-ToR4) connected via four 100Gbps links. There are 32 servers in total and each server has two 25Gbps NICs. 16 servers are connected to ToR1 and ToR2 via two uplinks, and the other 16 servers are connected to ToR3 and ToR4. The base RTT is 5.4μs within a rack and 8.5μs cross racks.&lt;/p&gt;</description></item><item><title>文献阅读《Impact of RoCE congestion control policies on distributed training of dnns》</title><link>https://www.zzudongxiang.com/posts/roce-congestion-control/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/roce-congestion-control/</guid><description>&lt;div&gt;&#10;&lt;h2 id="1-内容简介"&gt;1. 内容简介&lt;/h2&gt;&#10;&lt;h3 id="11-摘要"&gt;1.1 摘要&lt;/h3&gt;&#10;&lt;p&gt;聚合以太网（RoCE）上的 RDMA 协议因其与传统以太网结构的兼容性而对数据中心网络产生了巨大的吸引力。然而，RDMA 协议只有在（几乎）无损网络上才有效，这就强调了拥塞控制在 RoCE 网络中的重要作用。遗憾的是，基于优先级流量控制（PFC）的本地 RoCE 拥塞控制方案存在许多缺点，如不公平、头线阻塞和死锁。因此，近年来人们提出了许多为 RoCE 网络提供额外拥塞控制的方案，以尽量减少 PFC 的缺点。不过，这些方案都是针对一般数据中心环境提出的。与使用商品硬件构建并运行通用工作负载的普通数据中心不同，高性能分布式培训平台部署了高端加速器和网络组件，并使用集体（All-Reduce、All-To-All）通信库专门运行培训工作负载。此外，这些平台通常有一个专用网络，将其通信流量与数据中心的其他流量分开。可扩展的拓扑感知集体算法本质上就是为了避免同播模式并优化流量平衡而设计的。由于这些显著特点，我们有必要重新审视以前提出的通用数据中心环境拥塞控制方案。在本文中，我们深入分析了在分布式培训平台上运行时，一些最先进的 RoCE 拥塞控制方案（DCQCN、DCTCP、TIMELY 和 HPCC）与 PFC 的对比。我们的研究结果表明，以前提出的 RoCE 拥塞控制方案对培训工作负载的端到端性能影响甚微，因此有必要根据分布式培训平台和工作负载的特点设计一种优化的、低开销的拥塞控制方案。&lt;/p&gt;&#10;&lt;h3 id="12-研究动机"&gt;1.2 研究动机&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;标准的RoCE协议使用FPC协议控制阻塞，但是会带来不平衡、队头阻塞和死锁的问题&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;传统的基于RoCE的阻塞控制算法是基于通用的数据中心构建的&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;之前的阻塞控制协议（DCQCN、TIMELY、HPCC等）并不适用于DNN训练的场景&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="13-主要贡献"&gt;1.3 主要贡献&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;第一个在DNN分布式训练任务上进行阻塞控制方案评估的工作&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;使用ASTRA-sim和NS3使用不同的阻塞控制方案进行仿真验证&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;对每个现成的阻塞控制方案进行详细的分析，包括集合通信和DNN训练负载等&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;不同的最先进 RoCE 拥塞控制方案对端到端培训性能影响甚微&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;我们为设计一种针对分布式训练的优化且低开销的拥塞控制方案指明了方向&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-实现方法"&gt;2. 实现方法&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;使用ASTRA-sim仿真&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img src="images/image-20240612162335878.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;网络拓扑&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img src="images/image-20240612162354414.png" style="display: inline-block;width:65.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;系统参数&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img src="images/image-20240612162411148.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;h2 id="3-实验结果"&gt;3. 实验结果&lt;/h2&gt;&#10;&lt;h3 id="31-single-switch-incast-micro-benchmark"&gt;3.1 Single-switch Incast micro-benchmark&lt;/h3&gt;&#10;&lt;img src="images/image-20240612162627263.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;FPC only 队列快速满载，随后网络被反复暂停并重复这一过程&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;DCQCN在设置参数时确保没有FPC触发，且带宽率用率较高&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;DCTCP、TIMELY等在没有触发FPC帧的条件下&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="32-single-switch-collectives-micro-benchmark"&gt;3.2 Single-switch Collectives Micro-benchmark&lt;/h3&gt;&#10;&lt;img src="images/image-20240612163247646.png" style="display: inline-block;width:75.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在8-128个GPU条件下进行All-To-All和All-Reduce集合通信&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在集合通信条件下不存在阻塞，所以没有阻塞控制算法对其无效&lt;/p&gt;</description></item><item><title>文献阅读《NS3 Simulator for a study of Data Center Networks》</title><link>https://www.zzudongxiang.com/posts/ns3-data-center-networks/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/ns3-data-center-networks/</guid><description>&lt;div&gt;&#10;&lt;h2 id="1-文章简介"&gt;1. 文章简介&lt;/h2&gt;&#10;&lt;h3 id="11-摘要"&gt;1.1 摘要&lt;/h3&gt;&#10;&lt;p&gt;部署在数据中心网络（DCN）上的应用日益复杂和先进，对 DCN 的新功能和更高性能提出了更高要求。这就产生了许多设计，以应对成本、性能、可靠性、可扩展性、安全性和能源等各种挑战。设计人员经常面临的一个主要挑战是如何实现他们提出的设计或实现现有设计进行比较。虽然原型设计是更好的选择，但它有一定的局限性，而且非常复杂和昂贵。因此，仿真被认为是原型设计的替代方案。&lt;/p&gt;&#10;&lt;p&gt;本文介绍了使用网络Network Simulator 3（NS3）实现 DCN 的各种架构并研究其性能的案例研究。我们提供的信息包括最流行的 DCN 设计的实现，以及 NS3 可用来研究其性能的工具。我们的努力是让初学者能够轻松使用 NS3 构建 DCN 的流行设计并研究其性能。&lt;/p&gt;&#10;&lt;h3 id="12-研究动机"&gt;1.2 研究动机&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;数据中心的网络设计通常需要大量的成本&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;单个FPGA网卡的成本超过$599.0，在验证DCN可行性时成本是不可估算的&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="13-主要贡献"&gt;1.3 主要贡献&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;使用NS3仿真DCN：Fat-Tree、BCube、DCell、PortLand、4-4、1-4等&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-实现方法"&gt;2. 实现方法&lt;/h2&gt;&#10;&lt;p&gt;在他们提出的工作中实现DCN的不同设计&lt;/p&gt;&#10;&lt;img src="images/image-kamt.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;h3 id="31-fat-tree"&gt;3.1 Fat-Tree&lt;/h3&gt;&#10;&lt;p&gt;一个 k-ary 的胖树结构由k个 &lt;em&gt;Pod&lt;/em&gt; 组成，每个 &lt;em&gt;Pod&lt;/em&gt; 由 k/2 个 k 端口的交换机组成两层网络，k 端口的交换机中的k/2个端口连接下一层级的主机，剩余的 k/2 个端口连接上一层级，最终聚合到核心层。&lt;/p&gt;&#10;&lt;img src="images/image-wcph.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;p&gt;以 &lt;em&gt;10.0.0.0/8&lt;/em&gt; 地址段为例，可以为胖树网络进行IP编址&lt;/p&gt;&#10;&lt;h3 id="32-bcube"&gt;3.2 BCube&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;BCube_0 是一个 &lt;em&gt;BCube&lt;/em&gt; 网络拓扑的基础，可以将 n 个服务器连接到 1 个 n 端口的交换机上&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;BCube_1 由 BCube_0 演化而来，由 n 个 BCube_0 和 n 个 n 端口的路由器组成&lt;/p&gt;</description></item><item><title>文献阅读《The GEM5 Simulator》</title><link>https://www.zzudongxiang.com/posts/gem5-simulator/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/gem5-simulator/</guid><description>&lt;div&gt;&#10;&lt;h2 id="1-文章简介"&gt;1. 文章简介&lt;/h2&gt;&#10;&lt;h3 id="11-摘要"&gt;1.1 摘要&lt;/h3&gt;&#10;&lt;p&gt;开源和社区支持的 gem5 仿真器是计算机体系结构研究领域最流行的工具之一。这种仿真基础架构允许研究人员在周期级别对现代计算机硬件进行建模，其保真度足以启动未经修改的基于Linux的操作系统，并为包括x86、Arm®和RISC-V在内的多种体系结构运行完整的应用程序。自gem5最初发布以来，gem5模拟器在过去九年中一直处于积极开发阶段。在此期间，有超过 250 位独特的贡献者对代码库进行了 7000 多次提交，通过添加新功能、修复错误和提高代码质量来改进模拟器。在本文中，我们将概述gem5的用法和功能，描述gem5模拟器的现状，并列举自gem5首次发布以来的主要变化。我们还讨论了gem5模拟器如何过渡到正式的管理模式，以便在未来20年的计算机体系结构研究中实现持续改进和社区支持。&lt;/p&gt;&#10;&lt;h3 id="12-主要贡献"&gt;1.2 主要贡献&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;gem5 可通过基于 Python 的强大脚本界面进行动态配置。大多数其他模拟器都是通过平面文本文件（如 json）或在编译时进行静态配置的。另一方面，gem5 允许用户使用面向对象的 Python 脚本将较简单的系统组成更复杂的系统，从而更轻松地模拟复杂系统。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;gem5 可通过简洁的模型应用程序接口进行扩展。gem5模拟器有300多个参数化模型，添加新模型和参数简单明了，并有详细的文档说明。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;gem5 是一个完整的系统模拟器。其高保真模型可支持启动未修改的操作系统和运行未修改的应用程序，并提供周期级统计数据。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;gem5 是一个由社区驱动并经常更新的项目。gem5 社区蓬勃发展。自九年前首次发布以来，已有 250 多名独特的贡献者和 7000 多次提交。即使在过去六个月中，gem5 也有超过 850 次提交和 50 个独特的贡献者。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-实现方法"&gt;2. 实现方法&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;gem5的简单使用方法&lt;/strong&gt;&lt;/p&gt;&#10;&lt;img src="images/image-heep.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;p&gt;&lt;strong&gt;gem5的组成部分&lt;/strong&gt;&lt;/p&gt;&#10;&lt;img src="images/image-zxsl.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;/div&gt;</description></item><item><title>文献阅读《Tofu: a 6D mesh/torus interconnect for exascale computers》</title><link>https://www.zzudongxiang.com/posts/tofu-torus/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/tofu-torus/</guid><description>&lt;div&gt;&#10;&lt;img src="images/image-20240614185953351.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在XYZ维度拓扑结构类似3D Torus架构&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在ABC维度按照如图所示的架构链接&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;每个节点需要引出来10个链接，每XYZB轴各2条，AC轴为1条&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img src="images/image-20240614190912454.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Tofu架构先在ABC维度上进行拓扑，将12个Node互联形成一个Group&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;然后再在XYZ维度上进行Torus拓扑，最终实现数万个Node互联&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;每个Node使用一个（X,Y,Z,A,B,C）作为地址&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;img src="images/image-20240614191437463.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;主动路径算法支持最多12条路径&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;可以主动屏蔽故障路径&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;多路径中继策略&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/div&gt;</description></item><item><title>文献阅读《TPU v4: An optically reconfigurable supercomputer for machine learning with hardware support ...》</title><link>https://www.zzudongxiang.com/posts/tpu-v4/</link><pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/tpu-v4/</guid><description>&lt;div&gt;&#10;&lt;h2 id="1-内容简介"&gt;1. 内容简介&lt;/h2&gt;&#10;&lt;h3 id="11-摘要"&gt;1.1 摘要&lt;/h3&gt;&#10;&lt;p&gt;为了应对机器学习（ML）模型的创新，生产工作负载发生了翻天覆地的变化。TPU v4 是谷歌第五个特定领域架构（DSA），也是第三台用于此类 ML 模型的超级计算机。&lt;strong&gt;光路交换机（OCS）可以动态地重新配置其互连拓扑结构，以提高规模、可用性、利用率、模块化、部署、安全性、功耗和性能；如果需要，用户可以选择扭曲的三维环形拓扑结构。与 Infiniband 相比，OCS 的成本更低、功耗更小、速度更快&lt;/strong&gt;，OCS 和底层光学元件占系统成本的比例小于 5%，占系统功耗的比例小于 3%。每个 TPU v4 都包含 SparseCores 数据流处理器，可将依赖嵌入的模型加速 5-7 倍，但仅占用 5% 的芯片面积和功耗。自 2020 年部署以来，TPU v4 的性能是 TPU v3 的 2.1 倍，性能/瓦特数提高了 2.7 倍。TPU v4 超级计算机的芯片数量为 4096 个，是 TPU v3 的 4 倍，因此整体速度提高了近 10 倍，再加上 OCS 的灵活性和可用性，大型语言模型的平均训练速度可达到峰值 FLOPS/second 的 60%。对于类似大小的系统，它比 Graphcore IPU Bow 快 4.3-4.5 倍，比 Nvidia A100 快 1.2-1.7 倍，功耗低 1.3-1.9 倍。谷歌云能源优化仓库规模计算机内的 TPU v4 与典型内部数据中心的当代 DSA 相比，能耗降低约 2-6 倍，二氧化碳排放量降低约 20 倍。&lt;/p&gt;</description></item><item><title>文献阅读《COSSIM: An open-source integrated solution to address the simulator gap for systems of systems》</title><link>https://www.zzudongxiang.com/posts/cossim/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/cossim/</guid><description>&lt;div&gt;&#10;&lt;h2 id="1-文章简介"&gt;1. 文章简介&lt;/h2&gt;&#10;&lt;h3 id="11-摘要"&gt;1.1 摘要&lt;/h3&gt;&#10;&lt;p&gt;在复杂的网络化异构系统时代，仅对设计中系统的部分、组件或属性进行独立仿真是不可行、不准确或不高效的。交互作用太多、太复杂，无法产生有意义的结果，而且以孤立的方式考虑系统的每个部分时，优化机会受到严重限制。所介绍的 COSSIM 仿真框架是首个已知的开源高性能仿真器，可全面处理包括处理器、外设和网络在内的系统；这种方法对 CPS/IoT 和高并行异构系统设计人员和应用开发人员都非常有吸引力。我们的高度集成方法通过精确的功率估算和安全子工具得到了进一步增强，这些工具可以挖掘所有系统组件，并对整个网络系统进行安全性和稳健性分析。此外，我们还开发了一个图形用户界面，以提供简便的仿真设置、执行和结果可视化。COSSIM 已在云计算和 CPS 系统的实际应用中进行了评估，显示出很高的准确性和性能，几乎与专用于模拟器的 CPU 数量成线性关系。&lt;/p&gt;&#10;&lt;h3 id="12-研究动机"&gt;1.2 研究动机&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;针对CPS/IoT或依赖高度并行的异构系统的仿真场景，没有现有的、可靠的、高精度、高性能的工具&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;现有工具主要分为两类：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;一种面向系统功能设计，针对物理器件、处理器、电子组件、用户行为、事件、消息等（Ptolemy、Matlab Simulink、Modelica-based Simulation Environments）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;另外一种可以处理周期精度、功耗等，主要在WSN中广泛应用（TOSSIM、COOJA）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在云服务器仿真中常用的是：CloudSim及其衍生物&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="13-主要贡献"&gt;1.3 主要贡献&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;构建了一套COSSIM的仿真工具，具有高精度、高可信、高效的特点&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;仿真工具可以对系统性能、功耗、网络、安全等多方面进行评估&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;仿真工具主要面向两种系统：一种是Encompasses Systems（WSN、CPS、IoT等），另外一种是Cloud and Parallel/Distributed Systems&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-实现方法"&gt;2. 实现方法&lt;/h2&gt;&#10;&lt;p&gt;COSSIM主要针对的软件栈、动态网络、能耗仿真等几个方面&lt;/p&gt;&#10;&lt;h3 id="21-cossim组成"&gt;2.1 COSSIM组成&lt;/h3&gt;&#10;&lt;h4 id="211-处理器仿真"&gt;2.1.1 处理器仿真&lt;/h4&gt;&#10;&lt;p&gt;主要使用 &lt;strong&gt;GEM5&lt;/strong&gt; 对节点（处理器）进行仿真，它可以满足对周期精度、指令集、可配置等多个条件。但是由于GEM5不支持对能耗的仿真，因此使用 &lt;strong&gt;McPAT&lt;/strong&gt; 对能耗进行补充&lt;/p&gt;&#10;&lt;h4 id="212-网络仿真"&gt;2.1.2 网络仿真&lt;/h4&gt;&#10;&lt;p&gt;GEM5虽然可以支持到网络网卡（NIC）层级的仿真，但是不支持网络建模。使用 &lt;strong&gt;OMNET++&lt;/strong&gt; 处理从网卡层级及以上的仿真。&lt;/p&gt;&#10;&lt;h4 id="213-组件集成"&gt;2.1.3 组件集成&lt;/h4&gt;&#10;&lt;p&gt;需要在处理器仿真与网络仿真之间细心的设计通信接口和同步方案。使用 &lt;strong&gt;IEEE HLA&lt;/strong&gt; 对网络数据、消息、同步等进行网络控制&lt;/p&gt;&#10;&lt;h3 id="22-cossim实现"&gt;2.2 COSSIM实现&lt;/h3&gt;&#10;&lt;img src="images/image-uxry.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;用户输入&lt;code&gt;系统配置&lt;/code&gt;、&lt;code&gt;运行的应用&lt;/code&gt;、&lt;code&gt;系统镜像&lt;/code&gt;、&lt;code&gt;网络拓扑&lt;/code&gt;等参数，通过仿真可以得到&lt;code&gt;处理器/网络状态&lt;/code&gt;、&lt;code&gt;应用是模拟输出&lt;/code&gt;、&lt;code&gt;功耗&lt;/code&gt;等信息&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GEM5和McPAT模块用于仿真节点，在运行的时候是多个实例进行并行的&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;OMNET++用于多节点之间的网络模拟&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在节点（GEM5）和网络（OMNET++）之间通过HLA进行时钟同步&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;使用嵌入的COSSIMlib控制节点间的同步策略和全局同步策略&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;同一个网络上可以有多个不同算力，不同配置的GEM5实例，且节点间需要同时交换信息，因此同步是必要的&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="3-实验结果"&gt;3. 实验结果&lt;/h2&gt;&#10;&lt;p&gt;COSSIM在&lt;code&gt;移动视觉搜索应用&lt;/code&gt;和&lt;code&gt;建筑管理系统应用&lt;/code&gt;上进行仿真和验证&lt;/p&gt;&#10;&lt;h3 id="31-移动视觉搜索"&gt;3.1 移动视觉搜索&lt;/h3&gt;&#10;&lt;p&gt;移动视觉搜索（Mobile Visual Search，MVS）是一个计算机视觉应用，主要分为图像分析和搜索两个阶段&lt;/p&gt;</description></item><item><title>文献阅读《TOPOOPT: Co-optimizing Network Topology and Parallelization Strategy...》</title><link>https://www.zzudongxiang.com/posts/topoopt/</link><pubDate>Thu, 16 May 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/topoopt/</guid><description>&lt;div&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;WANG W, KHAZRAEE M, ZHONG Z, et al. TopoOpt: Co-optimizing Network Topology and Parallelization Strategy for Distributed Training Jobs &lt;/p&gt;&#10;\[Z\]&lt;p&gt;. NSDI. 2023 &lt;a href="https://www.usenix.org/conference/nsdi23/presentation/wang-weiyang"&gt;https://www.usenix.org/conference/nsdi23/presentation/wang-weiyang&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="论文简介"&gt;论文简介&lt;/h2&gt;&#10;&lt;h3 id="1-摘要"&gt;1. 摘要&lt;/h3&gt;&#10;&lt;p&gt;本文提出一种新的适用于DNN的直连结构网络$T_{OPO}O_{PT}$，它可以在计算、通信和网络拓扑三个维度上优化分布式训练的过程。我们演示了 AllReduce 流量的可变性，并利用此属性为 DNN 训练作业构建高效的网络拓扑。然后，$T_{OPO}O_{PT}$使用交替优化技术和名为TotientPerms的群论启发算法来找到最佳网络拓扑和路由计划以及并行化策略。我们构建了一个功能齐全的 12 节点直连原型，具有 100 Gbps 的远程直接内存访问 (RDMA) 转发。对真实分布式训练模型的大规模模拟表明，与类似成本的 Fat-tree 互连相比，TOPOOPT 将 DNN 训练时间减少了高达 3.4 倍。&lt;/p&gt;&#10;&lt;h3 id="2-主要贡献"&gt;2. 主要贡献&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;综合考虑了计算、通信和网络拓扑三个维度的优化策略&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;分析了MP与AllReduce的流量特征&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;利用AllReduce的流量可变性优化AllReduce路径&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;利用交替优化技术和TotientPerms算法来找到最佳网络拓扑&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在12个节点的情况下，比传统的胖树网络降低了DNN的3.4倍训练时间&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="实现方法"&gt;实现方法&lt;/h2&gt;&#10;&lt;h3 id="1-架构"&gt;1. $T_{OPO}O_{PT}$架构&lt;/h3&gt;&#10;&lt;p&gt;假定有n个Server，每个Server有d个接口，每个接口连接一个Optical Seicth，共计需要d个Optical Switch。Optical Switch可以通过配置可以在内部视作直接连接任意两个端口，从而实现任意两个Server之间的直接连接。&lt;/p&gt;&#10;&lt;p&gt;论文中提到Server与Optical Switch之间的连接是使用RDMA网卡，并对其进行了修改：原生RDMA网卡会抛弃非本机的数据，修改后支持数据转发和数据中继。&lt;/p&gt;&#10;&lt;img src="images/image-20240516221333441.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;&#10;&lt;p&gt;TOPOOPT的网络连接方式&lt;/p&gt;&#10;&lt;p&gt;论文中称Server的端口数量d为Server的Degree，它决定着每个Server与其他Server的连接数量，也是 $T_{OPO}O_{PT}$ 算法的一个计算参数。&lt;/p&gt;&#10;&lt;h3 id="2-交替优化策略"&gt;2. 交替优化策略&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;从计算、通信、网络拓扑三个维度对并行计算进行优化会产生一个非常大的搜索空间，导致该优化问题可能无法求得最优解。&lt;/p&gt;</description></item><item><title>文献阅读《Adaptive and Hierarchical Large Message All-to-all Communication Algorithms...》</title><link>https://www.zzudongxiang.com/posts/adaptive-hierarchical-alltoall/</link><pubDate>Tue, 07 May 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/adaptive-hierarchical-alltoall/</guid><description>&lt;div&gt;&#10;&lt;h2 id="i-前置内容"&gt;&lt;span fontsize="" color=""&gt;I. 前置内容&lt;/span&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;在了解集合通信（Collective Communication）之前要先了解点P2P对点通信（Point-to-Point）。P2P通信通常为两个不同进程间的通信，是1对1的； 在MPI规范中，既有同步阻塞的P2P接口：MPI_send和MPI_Recv接口，也定义了非阻塞的P2P接口如：MPI_Isend、MPI_Irecve。&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;集合通信和P2P通信是相对应的，集合通信则是1对多或是多对多的。在分布式系统中，各个节点间往往存在大量的集合通信需求，而我们可以用消息传递接口（Message Passing Interface，MPI）来定义一些比较底层的消息通信行为譬如Reduce、Allreduce、Scatter、Gather、Allgather等。&lt;/span&gt;&lt;/p&gt;&#10;&lt;h3 id="11-系统架构"&gt;&lt;span fontsize="" color=""&gt;1.1 系统架构&lt;/span&gt;&lt;/h3&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;集合通信算法的优化往往与其对应的网络拓扑和系统架构有直接关系，通常情况下，一个节点内的GPU-GPU或GPU-CPU之间的结构成为系统架构，节点之间的网络连接称为网络拓扑，一种确定的系统架构会有确定的网络拓扑架构。&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;在HPC领域有很多经典的系统架构和网络拓扑，例如：&lt;/span&gt;&lt;code&gt;Summit system&lt;/code&gt;&lt;span fontsize="" color=""&gt;或者&lt;/span&gt;&lt;code&gt;Lassen system&lt;/code&gt;&lt;span fontsize="" color=""&gt;等。本文主要由于发表于2021年，很多系统架构和指标数据与当先最新数据差异较大，但是为了方便后续的理解，本文后续还是以&lt;/span&gt;&lt;code&gt;Summit system&lt;/code&gt;&lt;span fontsize="" color=""&gt;和&lt;/span&gt;&lt;code&gt;Lassen system&lt;/code&gt;&lt;span fontsize="" color=""&gt;为例进行分析。&lt;/span&gt;&lt;/p&gt;&#10;&lt;img src="images/image-qlmv.png" style="display: inline-block;width:100.0%;height:100.0%" alt="image-qlmv.png" /&gt;&#10;&lt;p&gt;简化的Summit System和Lassen System（论文中的结构）&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;每个节点包含6个GPU和2个CPU，每3个GPU和1个CPU组成一个Group，使用&lt;/span&gt;&lt;code&gt;NVLink&lt;/code&gt;&lt;span fontsize="" color=""&gt;进行连接，CPU与CPU之间使用&lt;/span&gt;&lt;code&gt;X-Bus&lt;/code&gt;&lt;span fontsize="" color=""&gt;进行连接，同时与&lt;/span&gt;&lt;code&gt;IB&lt;/code&gt;&lt;span fontsize="" color=""&gt;网卡使用&lt;/span&gt;&lt;code&gt;PCIe&lt;/code&gt;&lt;span fontsize="" color=""&gt;进行连接，节点间使用&lt;/span&gt;&lt;code&gt;IB&lt;/code&gt;&lt;span fontsize="" color=""&gt;协议进行组网。&lt;/span&gt;&lt;code&gt;NVLink&lt;/code&gt;&lt;span fontsize="" color=""&gt;、&lt;/span&gt;&lt;code&gt;NVSwitch&lt;/code&gt;&lt;span fontsize="" color=""&gt;、&lt;/span&gt;&lt;code&gt;IB&lt;/code&gt;&lt;span fontsize="" color=""&gt;等硬件设备的概念将会在下一节中介绍。&lt;/span&gt;&lt;/p&gt;&#10;&lt;h3 id="12-相关组件"&gt;&lt;span fontsize="" color=""&gt;1.2 相关组件&lt;/span&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;span fontsize="" color=""&gt;NVLink and NVSwitch&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;NVLink&lt;/code&gt;&lt;span fontsize="" color=""&gt;和&lt;/span&gt;&lt;code&gt;NVSwitch&lt;/code&gt;&lt;span fontsize="" color=""&gt;是一种可支持服务器内和服务器间实现高级多 GPU 通信的基础模组。第四代&lt;/span&gt;&lt;code&gt;NVLink&lt;/code&gt;&lt;span fontsize="" color=""&gt;技术可为多 GPU 系统配置提供高于以往 1.5 倍的带宽，以及增强的可扩展性。第三代&lt;/span&gt;&lt;code&gt;NVSwitch&lt;/code&gt;&lt;span fontsize="" color=""&gt;基于 &lt;/span&gt;&lt;code&gt;NVLink &lt;/code&gt;&lt;span fontsize="" color=""&gt;的高级通信能力构建，可为计算密集型工作负载提供更高带宽和更低延迟。&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;span fontsize="" color=""&gt;Mellanox InfiniBand&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;InfiniBand&lt;/code&gt;&lt;span fontsize="" color=""&gt;（直译为“无限带宽”技术，缩写为&lt;/span&gt;&lt;code&gt;IB&lt;/code&gt;&lt;span fontsize="" color=""&gt;）是一个用于高性能计算的计算机网络通信标准，它具有极高的吞吐量和极低的延迟，用于计算机与计算机之间的数据互连。&lt;/span&gt;&lt;code&gt;InfiniBand&lt;/code&gt;&lt;span fontsize="" color=""&gt;也用作服务器与存储系统之间的直接或交换互连，以及存储系统之间的互连。常用的IB交换机/网卡带宽普遍为为400GB/s。&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;span fontsize="" color=""&gt;Remote Direct Memory Access (RDMA)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;RDMA是一种概念，在两个或者多个计算机进行通讯的时候使用DMA， 从一个主机的内存直接访问另一个主机的内存。&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="13-non-personalized-all-to-all"&gt;&lt;span fontsize="" color=""&gt;1.3 (Non-)Personalized All-to-All&lt;/span&gt;&lt;/h3&gt;&#10;&lt;h4 id="131-non-personalized-all-to-all"&gt;&lt;span fontsize="" color=""&gt;1.3.1 Non-Personalized All-to-All&lt;/span&gt;&lt;/h4&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Non-Personalized All-to-All（通常称为 MPI_Allgather）是一种 MPI 集体通信模式，是 MPI_Gather 和 MPI_Bcast 的结合。所有进程按等级顺序从其他进程收集数据。操作结束时，每个进程都将与所有其他进程交换数据。&lt;/span&gt;&lt;/p&gt;&#10;&lt;h4 id="132-personalized-all-to-all"&gt;&lt;span fontsize="" color=""&gt;1.3.2 Personalized All-to-All&lt;/span&gt;&lt;/h4&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Personalized All-to-All称为 MPI_Alltoall，与 MPI_Allgather 类似，所有进程都相互共享数据。然而，每个进程都会向其他进程发送不同的数据，从而形成一种个性化的集体通信模式（即，每个进程都会向每个其他进程发送不同的数据块）&lt;/span&gt;&lt;/p&gt;&#10;&lt;h3 id="14-相关算法"&gt;&lt;span fontsize="" color=""&gt;1.4 相关算法&lt;/span&gt;&lt;/h3&gt;&#10;&lt;h4 id="141-ring"&gt;&lt;span fontsize="" color=""&gt;1.4.1 Ring&lt;/span&gt;&lt;/h4&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;每个进程i发送数据给(i+1) \ N并从(i-1) \ N接收数据，但是这种方法会带来过高的延迟。&lt;/span&gt;&lt;/p&gt;</description></item><item><title>集合通信-通信原语</title><link>https://www.zzudongxiang.com/posts/collective-communication-primitives/</link><pubDate>Sun, 28 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/collective-communication-primitives/</guid><description>&lt;div&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;span style="font-size: 16px; color: rgb(51, 51, 51)"&gt;参考来源: &lt;/span&gt;&lt;a href="https://zhuanlan.zhihu.com/p/493092647"&gt;&lt;span fontsize="" color=""&gt;分布式训练常用的集合通信及其通信原语&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 16px; color: rgb(51, 51, 51)"&gt;, &lt;/span&gt;&lt;a href="https://zhuanlan.zhihu.com/p/496105041"&gt;&lt;span fontsize="" color=""&gt;分布式训练常用的网络结构及集合通信拓扑算法&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;img src="images/image-eimu.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;p&gt;&lt;span style="font-size: 16px; color: rgb(51, 51, 51)"&gt;图片来源：&lt;/span&gt;&lt;a href="https://images.nvidia.com/content/volta-architecture/pdf/volta-architecture-whitepaper.pdf"&gt;volta-architecture-whitepaper&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="1-broadcast"&gt;&lt;span fontsize="" color=""&gt;1 Broadcast&lt;/span&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Broadcast属于&lt;/span&gt;&lt;strong&gt;&lt;span fontsize="" color=""&gt;1对多&lt;/span&gt;&lt;/strong&gt;&lt;span fontsize="" color=""&gt;的通信原语，一个数据发送者，多个数据接收者，可以在集群内把一个节点自身的数据广播到其他节点上。如下图所示，圈圈表示集群中的训练加速卡节点，相同的颜色的小方块则代表相同的数据。当主节点 0 执行Broadcast时，数据即从主节点0被广播至其他节点。&lt;/span&gt;&lt;/p&gt;&#10;&lt;img src="images/image-mgng.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Broadcast是数据的1对多的同步，它将一张XPU卡上的数据同步到其他所有的XPU卡上，其应用场景有：&lt;/span&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;数据并行的参数初始化，确保每张卡上的初始参数是一致的；&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;allReduce里的 broadcast + reduce组合里的broadcast操作；&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;分布式训练parameter server 参数服务器结构里的 master节点 broadcast 数据到worker节点，再从worker节点reduce数据回master节点里的broadcast操作；&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="2-scatter"&gt;&lt;span fontsize="" color=""&gt;2 Scatter&lt;/span&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;同Broadcast一样，Scatter也是一个1对多的通信原语，也是一个数据发送者，多个数据接收者，可以在集群内把一个节点自身的数据发散到其他节点上。与Broadcast不同的是Broadcast把主节点0的数据发送给所有节点，而Scatter则是将数据的进行切片再分发给集群内所有的节点，如下图所示，不相同的颜色的小方块代表不相同的数据，主节点 0 将数据分为四份分发到了节点0-3。&lt;/span&gt;&lt;/p&gt;&#10;&lt;img src="images/image-jcjv.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Scatter是数据的1对多的分发，它将一张XPU卡上的数据进行分片再分发到其他所有的XPU卡上，他的反向操作对应Gather，其应用场景有：&lt;/span&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;ReduceScatter组合里的 Scatter操作；&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;模型并行里初始化时将模型scatter到不同的XPU上；&lt;/span&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="3-gather"&gt;&lt;span fontsize="" color=""&gt;3 Gather&lt;/span&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Gather操作属于&lt;/span&gt;&lt;strong&gt;&lt;span fontsize="" color=""&gt;多对1&lt;/span&gt;&lt;/strong&gt;&lt;span fontsize="" color=""&gt;的通信原语，具有多个数据发送者，一个数据接收者，可以在集群内把多个节点的数据收集到一个节点上，如下图所示，不相同的颜色的小方块代表不相同的数据。&lt;/span&gt;&lt;/p&gt;&#10;&lt;img src="images/image-clhx.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Gather是数据的多对1的收集，它将多张XPU卡上的数据收集到1张XPU卡上，它的反向操作对应Scatter，其应用场景有：&lt;/span&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;span fontsize="" color=""&gt;ReduceScatter组合里的 Scatter操作；&lt;/span&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="4-reduce"&gt;&lt;span fontsize="" color=""&gt;4 Reduce&lt;/span&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Reduce属于&lt;/span&gt;&lt;strong&gt;&lt;span fontsize="" color=""&gt;多对1&lt;/span&gt;&lt;/strong&gt;&lt;span fontsize="" color=""&gt;的通信原语，具有多个数据发送者，一个数据接收者，可以在集群内把多个节点的数据&lt;/span&gt;&lt;strong&gt;&lt;span fontsize="" color=""&gt;规约运算&lt;/span&gt;&lt;/strong&gt;&lt;span fontsize="" color=""&gt;到一个主节点上，常用的规约操作符有：求累加和SUM、求累乘积PROD、求最大值MAX、求最小值MIN、逻辑与 LAND、按位与BAND、逻辑或LOR、按位或BOR、逻辑异或LXOR、按位异或BOXR、求最大值和最小大的位置MAXLOC、求最小值和最小值的位置MINLOC等，这些规约运算也需要加速卡支持对应的算子才能生效。&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Reuduce操作从集群内每个节点上获取一个输入数据，通过规约运算操作后，得到精简数据，如下图的SUM求累加和：节点0数值 5、节点1数值6、节点2数值7、节点3数值8，经过SUM运算后 累积和为 26，即得到更为精简的数值，在reduce原语里回会去调用 reduce SUM算子来完成这个求和累加。&lt;/span&gt;&lt;/p&gt;&#10;&lt;img src="images/image-mxqm.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;Reduce是数据的多对1的规约运算，它将所有张XPU卡上的数据规约（比如SUM求和）到1张XPU卡上，其应用场景有：&lt;/span&gt;&lt;/p&gt;</description></item><item><title>HCCL集合通信测试环境设置</title><link>https://www.zzudongxiang.com/posts/hccl-test-environment/</link><pubDate>Thu, 18 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/hccl-test-environment/</guid><description>&lt;div&gt;&#10;&lt;h2 id="1-快速使用"&gt;&lt;span fontsize="" color=""&gt;1. 快速使用&lt;/span&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;HCCL（Huawei Collective Communication Library）是基于昇腾AI处理器的高性能集合通信库，其主要功能与作用与Nvidia的NCCL库相似，主要用于集合通信，CANN库种自带一套测试工具用以分析集合通信性能。&lt;/span&gt;&lt;/p&gt;&#10;&lt;h3 id="11-编译环境配置"&gt;&lt;span fontsize="" color=""&gt;1.1 编译环境配置&lt;/span&gt;&lt;/h3&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;前置环境配置阶段请参考&lt;/span&gt;&lt;a href="https://git.zzudongxiang.com/pcl.cloudbrain.project/mindspore.llama2/src/branch/main/README.md"&gt;&lt;span fontsize="" color=""&gt;Llama2部署记录&lt;/span&gt;&lt;/a&gt;&lt;span fontsize="" color=""&gt;，后续的所有流程均需要在具备HCCL硬件的平台上实现，需要注意的是，建议使用的Ubuntu版本大于等于20.04LTS，否则可能会遇到VSCode不支持的情况。&lt;/span&gt;&lt;/p&gt;&#10;&lt;h4 id="a-cann"&gt;&lt;span fontsize="" color=""&gt;A. CANN&lt;/span&gt;&lt;/h4&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;CANN的配置过程参考&lt;/span&gt;&lt;a href="https://git.zzudongxiang.com/pcl.cloudbrain.project/mindspore.llama2/src/branch/main/README.md"&gt;&lt;span fontsize="" color=""&gt;Llama2部署记录&lt;/span&gt;&lt;/a&gt;&lt;span fontsize="" color=""&gt;文档的&lt;/span&gt;&lt;strong&gt;&lt;span fontsize="" color=""&gt;4. 安装CANN&lt;/span&gt;&lt;/strong&gt;&lt;span fontsize="" color=""&gt;章节，并记录安装位置，以备后续使用&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;完成CANN后，建议在&lt;/span&gt;&lt;code&gt;~/.bashrc&lt;/code&gt;&lt;span fontsize="" color=""&gt;文件中添加对应的环境变量，例如：&lt;/span&gt;&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt; # 使用nano打开~/.bashrc文件&#10; nano ~/.bashrc&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;在文件的最后添加&lt;/span&gt;&lt;code&gt;export ASCEND_HOME=/usr/local/Ascend/ascend-toolkit/latest&lt;/code&gt;&lt;/p&gt;&#10;&lt;h4 id="b-openmpi"&gt;&lt;span fontsize="" color=""&gt;B. OpenMPI&lt;/span&gt;&lt;/h4&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;在&lt;/span&gt;&lt;a href="https://www.mpich.org/"&gt;&lt;span fontsize="" color=""&gt;OpenMPI官网&lt;/span&gt;&lt;/a&gt;&lt;span fontsize="" color=""&gt;找到对应版本的安装包下载，然后解压缩安装包，以&lt;/span&gt;&lt;code&gt;mpich-4.2.0&lt;/code&gt;&lt;span fontsize="" color=""&gt;版本为例：&lt;/span&gt;&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt; # mpich下载链接参考：https://www.mpich.org/static/downloads&#10; wget https://www.mpich.org/static/downloads/4.2.0/mpich-4.2.0.tar.gz&#10; # 解压缩mpich压缩包&#10; tar -zxvf mpich-4.2.0.tar.gz&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;配置mpi的安装路径，以&lt;/span&gt;&lt;code&gt;/root/mpich&lt;/code&gt;&lt;span fontsize="" color=""&gt;路径为例：&lt;/span&gt;&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt; # 新建文件夹&#10; mkdir ~/mpich&#10; # 进入解压缩后的mpich文件夹&#10; cd mpich-4.2.0&#10; # 配置安装路径&#10; ./configure -prefix=/root/mpich --disable-fortran&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;使用&lt;/span&gt;&lt;code&gt;make&lt;/code&gt;&lt;span fontsize="" color=""&gt;命令构建mpich的可执行文件，该过程可能耗时比较长&lt;/span&gt;&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt; make&#10; make install&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;完后后将mpich添加到环境变量种，并添加对应的链接库和帮助文件&lt;/span&gt;&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt; # 修改~/.bashrc文件&#10; nano ~/.bashrc&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;&lt;span fontsize="" color=""&gt;在最后一行添加以下内容：&lt;/span&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;export MPI_HOME=/root/mpich&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;export PATH=&lt;/code&gt;$MPI_HOME/bin:$&lt;code&gt;PATH&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Llama2部署记录</title><link>https://www.zzudongxiang.com/posts/llama2-deployment/</link><pubDate>Tue, 09 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/llama2-deployment/</guid><description>&lt;div&gt;&#10;&lt;h2 id="1-创建docker"&gt;1. 创建docker&lt;/h2&gt;&#10;&lt;h3 id="11-docker命令"&gt;1.1 docker命令&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;显示全部的镜像：&lt;code&gt;docker images&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;创建一个容器：&lt;code&gt;docker run ...&lt;/code&gt;&amp;lt;查看1.2节内容&amp;gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;显示全部的容器：&lt;code&gt;docker ps -a&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;启动一个容器：&lt;code&gt;docker start &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;停止一个容器：&lt;code&gt;docker stop &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;进入一个正在运行的程序：&lt;code&gt;docker exec -it &amp;lt;id&amp;gt; /bin/bash&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;删除一个容器：&lt;code&gt;docker rm &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="12-创建容器"&gt;1.2 创建容器&lt;/h3&gt;&#10;&lt;p&gt;创建一个docker容器的时候需要同时挂载本地工作目录和相关的程序驱动，因此创建docker容器的命令参数较多，以下为一个创建docker容器命令的基本格式：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt; docker run -it --ipc=host --name &amp;lt;name&amp;gt; -v &amp;lt;local_path&amp;gt;:&amp;lt;docker_path&amp;gt; \&#10;     --workdir=&amp;lt;docker_path&amp;gt; \&#10;     --pids-limit 409600 \&#10;     --privileged --network=host \&#10;     --shm-size=128G \&#10;     --device=/dev/davinci0 \&#10;     --device=/dev/davinci1 \&#10;     --device=/dev/davinci2 \&#10;     --device=/dev/davinci3 \&#10;     --device=/dev/davinci4 \&#10;     --device=/dev/davinci5 \&#10;     --device=/dev/davinci6 \&#10;     --device=/dev/davinci7 \&#10;     --device=/dev/davinci_manager \&#10;     --device=/dev/devmm_svm \&#10;     --device=/dev/hisi_hdc \&#10;     -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \&#10;     -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \&#10;     -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \&#10;     -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \&#10;     -v /usr/local/dcmi:/usr/local/dcmi \&#10;     -v /etc/ascend_install.info:/etc/ascend_install.info \&#10;     -v /etc/bashrc:/etc/bashrc \&#10;     -p 223:223 \&#10;     -p 224:6006 \&#10;     -p 225:8080 \&#10;     -p 226:8888 \    &#10;     -u root \&#10;    &amp;lt;image_id&amp;gt; /bin/bash&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;-it&lt;/code&gt;：已交互方式运行容器，并分配一个终端&lt;/p&gt;</description></item><item><title>3D并行（3D Parallelism）</title><link>https://www.zzudongxiang.com/posts/3d-parallelism/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/3d-parallelism/</guid><description>&lt;div&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;参考文献：&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Narayanan D, Shoeybi M, Casper J, et al. Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM: SC&amp;rsquo; 21, November 14-19, 2021, St. Louis, MO, USA&lt;/p&gt;&#10;\[C\]&lt;p&gt;, 2021. ACM, 2021-01-01.&lt;/span&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;单一的MP或DP无法硬度继续增长的大模型算力需求，面对成千上万的GPU集群规模增长，结合TP、PP、DP等多种方式组成3D Parallelism的并行方式逐渐成为了主流的并行计算框架。&lt;/p&gt;&#10;&lt;h2 id="1-基于megatron-lm"&gt;1. 基于Megatron-LM&lt;/h2&gt;&#10;&lt;h3 id="11-研究背景"&gt;1.1 研究背景&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;单一的DP、TP、PP方法无法满足日益增长的模型参数量，因此提出一种基于多种并行方法的PTD-P并行技术。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12-实现方法"&gt;1.2 实现方法&lt;/h3&gt;&#10;&lt;img src="images/image-usvb.png" style="display: inline-block;width:80.0%" /&gt;&#10;&lt;p&gt;图. 默认的Pipeline调度（上）和插值的Pipeline调度（下）&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;对每个设备上运行的网络层进行进一步拆分，每个子集称为一个Chunk，在图（下）中用深色和浅色两种颜色表示&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;假设一共4个Device，每个Device可以分为4层（例如：在Device 1上运行1~4层，Device 2上运行5-8），则可以将每个设备的计算过程分为两个Chunk（每个Chunk需要计算两层网络）例如：Device 1对应1，2，9，10四层，Device 2对应3，4，11，12四层。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;以Device 3为例，为什么运行完Chunk 2的Batch2后需要Wait，而不是直接运行Batch 3？只是为了展示插值的概念？&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="13-实验结论"&gt;1.3 实验结论&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;提出一种插值Pipeline调度算法，实现在3072个GPU上训练1T参数的训练，总体算力达到502PFLOPS，单个GPU的算力达到了理论峰值的52%。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;相比较ZeRO-3（不带MP），因为减少了通信量，在175B和530B规模的大模型上效果要好70%&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;插值Pipeline调度算法可以增加计算密集度，但是对通信的开销也会增加&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;PP在较大的模型上效率更高，效果更好，TP的并行方式会增加不同设备之间的通信量&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;重算技术只是一个为了平衡内存与算力之间可选的技术，会降低内存消耗，但同时也会增加1/3的算力消耗&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;高度的MP可能会导致较小的矩阵乘运算，降低GPU的利用率&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="14-实验数据"&gt;1.4 实验数据&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;本文对PTD-P模型中，GPU数量、全局Batch Size、Microbatch Size、Bubble Time、Throughput等多个参量进行多角度多变量讨论&lt;/p&gt;</description></item><item><title>Nvidia GPU与Huawei NPU</title><link>https://www.zzudongxiang.com/posts/nvidia-gpu-huawei-npu/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/nvidia-gpu-huawei-npu/</guid><description>&lt;div&gt;&#10;&lt;h1 id="1-nvidia-gpu"&gt;1. Nvidia GPU&lt;/h1&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;参考文献：&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;HeKun-NVIDIA. CUDA-Programming-Guide-in-Chinese&lt;/p&gt;&#10;\[EB/OL\]&lt;p&gt;. &lt;/span&gt;&lt;a href="https://github.com/HeKun-NVIDIA/CUDA-Programming-Guide-in-Chinese" rel="noopener noreferrer nofollow" target="_blank"&gt;&lt;span style="font-size: 14.4px"&gt;&lt;a href="https://github.com/HeKun-NVIDIA/CUDA-Programming-Guide-in-Chinese"&gt;https://github.com/HeKun-NVIDIA/CUDA-Programming-Guide-in-Chinese&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 14.4px"&gt;.&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;Nvidia. Nvidia CUDA编程指南&lt;/p&gt;&#10;\[M\]&lt;p&gt;. 1.1. Nvidia, 2008.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="11-gpu架构"&gt;1.1 GPU架构&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;软件层面架构&lt;/strong&gt;：Nvidia GPU的架构在进行CUDA软件操作时可以抽象为：&lt;code&gt;Thread-&amp;gt;Block-&amp;gt;Grid&lt;/code&gt;三层，通过指定这三个参数可以精确的控制目标运算放在目标的&lt;code&gt;Thread&lt;/code&gt;上进行计算。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;硬件层面架构&lt;/strong&gt;：在硬件层可以讲GPU抽象为：&lt;code&gt;SP(Streaming Processor)-&amp;gt;SM(Streaming Multiprocessor)-&amp;gt;Device&lt;/code&gt;三层，基本对应CUDA软件编程层面的&lt;code&gt;Thread-&amp;gt;Block-&amp;gt;Grid&lt;/code&gt;，Nvidia的GPU在指令集上属于是SIMD（Single Instruction Multiple Data）架构，可以实现单条指令在多个数据的并行处理。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;集群层面架构&lt;/strong&gt;：在集群层面，一般按照&lt;code&gt;Host-Device&lt;/code&gt;结构划分，其中一个&lt;code&gt;Host&lt;/code&gt;可以视作一个由CPU、GPU、内存、硬盘等组成的主机，&lt;code&gt;Device&lt;/code&gt;一般特指某一个指定的GPU设备，也就是软件层面的&lt;code&gt;Grid&lt;/code&gt;。&lt;/p&gt;&#10;&lt;img src="images/image-exzl.png" style="display: inline-block;width:65.0%" /&gt;&#10;&lt;p&gt;图. Nvidia的GPU架构&lt;/p&gt;&#10;&lt;h3 id="a-sp--thread"&gt;A. SP / Thread&lt;/h3&gt;&#10;&lt;p&gt;GPU上每个&lt;code&gt;SP&lt;/code&gt;主要由ALU（逻辑控制单元）与FPU（浮点运算单元）组成，可以进行简单的逻辑运算与浮点运算，每个&lt;code&gt;SP&lt;/code&gt;在对应软件层面可以操作的一个&lt;code&gt;Thread&lt;/code&gt;，也是开发者可以操作的最小单元，用户可以借助CUDA在&lt;code&gt;Thread&lt;/code&gt;上实现SPMD（Single Program Multiple Data）操作。&lt;/p&gt;&#10;&lt;h3 id="b-mp--block"&gt;B. MP / Block&lt;/h3&gt;&#10;&lt;p&gt;多个&lt;code&gt;Thread&lt;/code&gt;组成一个&lt;code&gt;Block&lt;/code&gt;，同一个&lt;code&gt;Block&lt;/code&gt;上的&lt;code&gt;Thread&lt;/code&gt;共享同一块内存（Shared Memory），这种方法可以实现同一个&lt;code&gt;Block&lt;/code&gt;上并行的&lt;code&gt;Thread&lt;/code&gt;可以并行的对同一块内存中的数据进行操作。&lt;/p&gt;&#10;&lt;p&gt;在进行CUDA编程时，开发者可以借助一个&lt;code&gt;SM&lt;/code&gt;控制多个&lt;code&gt;Block&lt;/code&gt;中的&lt;code&gt;Thread&lt;/code&gt;进行运算，&lt;code&gt;SM&lt;/code&gt;中还包含一些必要的寄存器、共享内存、L1Cache、Scheduler、SPU、LD/ST单元等。&lt;/p&gt;&#10;&lt;h3 id="c-device--grid"&gt;C. Device / Grid&lt;/h3&gt;&#10;&lt;p&gt;多个&lt;code&gt;Block&lt;/code&gt;一起共同组成一个&lt;code&gt;Grid&lt;/code&gt;，也就是硬件层面与集群层面的&lt;code&gt;Device&lt;/code&gt;，借助该概念可以实现集群中多个GPU之间的数据传输和并行计算。&lt;/p&gt;&#10;&lt;h2 id="12-gpu编程"&gt;1.2 GPU编程&lt;/h2&gt;&#10;&lt;p&gt;Nvidia的GPU上有多个&lt;code&gt;Thread&lt;/code&gt;可以并行的完成矩阵运算，例如在进行通用矩阵乘（GEMM，General matrix multiply）时，不同&lt;code&gt;Thread&lt;/code&gt;在共享内存中取出对应位置的数据进行计算，并讲结果重新放置在共享内存中以实现GEMM的并行计算。&lt;/p&gt;&#10;&lt;img src="images/image-putm.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;p&gt;图. 使用共享内存并行计算矩阵乘&lt;/p&gt;&#10;&lt;p&gt;在代码层面的实现过程大致如下：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// Host层面的矩阵乘，假定矩阵的维度是BLOCK_SIZE的整数倍&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;MatMul&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; Matrix A, &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; Matrix B, Matrix C) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#75715e"&gt;// 从显存中加载A和B两个矩阵的数据&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#a6e22e"&gt;cudaMalloc&lt;/span&gt;(..., size);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#a6e22e"&gt;cudaMemcpy&lt;/span&gt;(..., ..., size, cudaMemcpyHostToDevice);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#75715e"&gt;// 从设备显存中申请储存乘法运算结果的矩阵C&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#a6e22e"&gt;cudaMalloc&lt;/span&gt;(&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;d_C.elements, size);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#75715e"&gt;// 调用内核&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     MatMulKernel&lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt;dimGrid, dimBlock&lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;(d_A, d_B, d_C); &lt;span style="color:#75715e"&gt;// &amp;lt;&amp;lt;&amp;lt;dimGrid, dimBlock&amp;gt;&amp;gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#75715e"&gt;// 从显存中获取计算结果C&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#a6e22e"&gt;cudaMemcpy&lt;/span&gt;(..., ..., size, cudaMemcpyDeviceToHost); &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#75715e"&gt;// 释放显存&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#a6e22e"&gt;cudaFree&lt;/span&gt;(...);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// 调用MatMul()以实现Kernel层的矩阵乘&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; __global__ &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;MatMulKernel&lt;/span&gt;(Matrix A, Matrix B, Matrix C) { &lt;span style="color:#75715e"&gt;// __global__&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#75715e"&gt;// 每个Thread计算矩阵C中的一个元素，并将结果累加到CValue中&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#66d9ef"&gt;float&lt;/span&gt; Cvalue &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; row &lt;span style="color:#f92672"&gt;=&lt;/span&gt; blockIdx.y &lt;span style="color:#f92672"&gt;*&lt;/span&gt; blockDim.y &lt;span style="color:#f92672"&gt;+&lt;/span&gt; threadIdx.y;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; col &lt;span style="color:#f92672"&gt;=&lt;/span&gt; blockIdx.x &lt;span style="color:#f92672"&gt;*&lt;/span&gt; blockDim.x &lt;span style="color:#f92672"&gt;+&lt;/span&gt; threadIdx.x;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; e &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; e &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; A.width; &lt;span style="color:#f92672"&gt;++&lt;/span&gt;e)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;         Cvalue &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; A.elements[row &lt;span style="color:#f92672"&gt;*&lt;/span&gt; A.width &lt;span style="color:#f92672"&gt;+&lt;/span&gt; e] &lt;span style="color:#f92672"&gt;*&lt;/span&gt; B.elements[e &lt;span style="color:#f92672"&gt;*&lt;/span&gt; B.width &lt;span style="color:#f92672"&gt;+&lt;/span&gt; col];&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;     C.elements[row &lt;span style="color:#f92672"&gt;*&lt;/span&gt; C.width &lt;span style="color:#f92672"&gt;+&lt;/span&gt; col] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Cvalue;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="2-huawei-npu"&gt;2. Huawei NPU&lt;/h1&gt;&#10;&lt;p&gt;Huawei的NPU设备Ascend 910B相较于Nvidia的GPU做了一些有针对性的优化，同时由于NPU主要针对神经网络训练与推理，因此其在芯片设计架构上与Nvidia的GPU拥有完全不同的设计思路。&lt;/p&gt;</description></item><item><title>流水线并行（Pipeline Parallelism）</title><link>https://www.zzudongxiang.com/posts/pipeline-parallelism/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/pipeline-parallelism/</guid><description>&lt;div&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;参考文献：&lt;/p&gt;&#10;&lt;p&gt;Huang Y, Cheng Y, Chen D, et al. GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism: 33rd Conference on Neural Information Processing Systems (NeurIPS 2019),&lt;/p&gt;&#10;\[C\]&lt;p&gt;, Vancouver, Canada, 2018.&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Harlap A, Narayanan D, Phanishayee A, et al. PipeDream: Fast and Efficient Pipeline Parallel DNN Training&lt;/p&gt;&#10;\[J\]&lt;p&gt;. ArXiv, 2018,abs/1806.03377.&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Kim T, Kim H, Yu G, et al. BPipe: Memory-Balanced Pipeline Parallelism for Training Large Language Models: Proceedings of the 40th International Conference on Machine Learning&lt;/p&gt;</description></item><item><title>数据并行（Data Parallelism）</title><link>https://www.zzudongxiang.com/posts/data-parallelism/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/data-parallelism/</guid><description>&lt;div&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;参考文献：&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Team D, Majumder R, President V, et al. DeepSpeed: Extreme-scale model training for everyone&lt;/p&gt;&#10;\[J\]&lt;p&gt;. Microsoft, 2020.&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Rajbhandari S, Rasley J, Ruwase O, et al. ZeRO: Memory optimizations Toward Training Trillion Parameter Models&lt;/p&gt;&#10;\[C\]&lt;p&gt;, 2020. IEEE, 2020-01-01.&lt;/span&gt;&lt;/p&gt;&#10;&lt;p&gt;Ren J, Rajbhandari S, Aminabadi R Y, et al. ZeRO-Offload: Democratizing Billion-Scale Model Training&lt;/p&gt;&#10;\[J\]&lt;p&gt;. &lt;a href="http://arXiv.org" rel="noopener noreferrer nofollow" target="_blank"&gt;arXiv.org&lt;/a&gt;, 2021.&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Rajbhandari S, Ruwase O, Rasley J, et al. ZeRO-Infinity: Breaking the GPU MemoryWall for Extreme Scale Deep Learning: SC&amp;rsquo; 21, November 14–19, 2021, St. Louis, MO, USA&lt;/p&gt;</description></item><item><title>异构集群（Heterogeneous Clusters）</title><link>https://www.zzudongxiang.com/posts/heterogeneous-clusters/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/heterogeneous-clusters/</guid><description>&lt;div&gt;&#10;&lt;h1 id="1-heterog"&gt;1. HeteroG&lt;/h1&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;参考文献：&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Yi X, Zhang S, Luo Z, et al. Optimizing Distributed Training Deployment in Heterogeneous GPU Clusters: Proceedings of the 16th International Conference on emerging Networking EXperiments and Technologies&lt;/p&gt;&#10;\[C\]&lt;p&gt;, Barcelona, Spain, 2020. Association for Computing Machinery.&lt;/span&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;一个集群中的GPU型号和性能可能都有所不同，但是在并行计算的时候往往假设每个参与并行的设备算力都是相等的，但是实际上由许多不同型号的GPU组成的集群仍然存在，为了解决这个问题，有相关的研究者提出了&lt;code&gt;HeteroG&lt;/code&gt;方法，在异构集群上实现有效率的并行计算。&lt;/p&gt;&#10;&lt;img src="images/image-lqrb.png" style="display: inline-block;width:50.0%" /&gt;&#10;&lt;p&gt;图. HeteroG的工作流程图&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;首先对开发者构建的网络进行分析，根据模型的需要决定是否需要进行MP&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;然后根据策略将模型分发到各个设备上进行开销测试（Profiler）和仿真计算（Simulator）然后根据这个测试结果指定相应的并行策略（Strategy Maker）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;完成策略制定后重新对网络图进行重新编译（根据MP和DP的测算结果决定）然后开始并行计算&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;这个工作主要由一个经过训练的神经网络完成&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;最终实验结果证明与当前其他的并行策略相比，在异构集群的并行计算上有222%的性能提升。&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>张量并行（Tensor Parallelism）</title><link>https://www.zzudongxiang.com/posts/tensor-parallelism/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/tensor-parallelism/</guid><description>&lt;div&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;参考文献：&lt;/p&gt;&#10;&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Shoeybi M, Patwary M, Puri R, et al. Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism&lt;/p&gt;&#10;\[J\]&lt;p&gt;. ArXiv, 2020&lt;/span&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;张量并行（Tensor Parallelism，TP）属于模型并行（Model Parallelism，MP）中的一种，通过对Tensor的拆分，将一次Tensor计算拆分到多台设备上进行并行的计算，并将计算结果最终合并为目标张量。&lt;/p&gt;&#10;&lt;h2 id="1-megatron-lm"&gt;1. Megatron-LM&lt;/h2&gt;&#10;&lt;p&gt;Megatron-LM是Nvidia提出的一种Tensor Parallelism方式，它的核心思想是将模型进行纵向分割（假定模型为由下向上的传递方式），Megatron-LM的TP主要针对基于Transformer，通过对Transformer中的Self-Attention和MLP进行拆分并行。&lt;/p&gt;&#10;&lt;h3 id="11-研究背景"&gt;1.1 研究背景&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;在研究MP技术时，从数学上对矩阵计算的角度上发现针对Transformer可以进行纵向分割，从而在纵向分割上实现并行加速，由于这种方法将一个张量分割为多个张量并行计算，因此该方法属于Tensor Parallelism。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="12-实现方法"&gt;1.2 实现方法&lt;/h3&gt;&#10;&lt;img src="images/image-wtqh.png" style="display: inline-block" width="597" height="631" /&gt;&#10;&lt;p&gt;图. Tensor Parallelism对Transformer中两部分的并行过程&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;针对Transformer中的MLP单元&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;MLP在并行之前的运算过程可以表示为：Z=Dropout(GeLU(XA) B)，其中X为输入数据，Z为输出数据，A和B分别为神经网络的参数&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在并行时，可以将A矩阵按照列拆分为A=&lt;/p&gt;&#10;\[A_1, A_2\]&lt;p&gt;两部分，并将其分别放置到两个设备中分别对输入的X进行计算，并分别获得结果Y_1=GeLU(X A_1)和Y_2=GeLU(X A_2)&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;对矩阵B按照行拆分成两部分，并分别放置到两个设备中B=&lt;/p&gt;&#10;\[B_1; B_2\]&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;假设输入的X矩阵的维度为m x n大小的，则可用如下公式描述输入矩阵A&lt;/p&gt;&#10;$$X=\left[ \begin{matrix} x_{1,1} &amp; \cdots &amp; x_{1,n} \\ \vdots &amp; \ddots &amp; \vdots \\ x_{m,1} &amp; \cdots &amp; x_{m,n} \\ \end{matrix} \right] =\left[ \begin{matrix} X_1\\X_2 \end{matrix} \right]$$&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;假设MLP中的矩阵A的维度为n x k，且定义h=k/2，则定义矩阵A如下：&lt;/p&gt;</description></item><item><title>通用LaTex数学公式语法手册</title><link>https://www.zzudongxiang.com/posts/latex-math-syntax/</link><pubDate>Sat, 02 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/latex-math-syntax/</guid><description>&lt;div&gt;&lt;p&gt;&lt;strong&gt;MathJax&lt;/strong&gt;是一款运行于 Web 浏览器当中的开源 JavaScript 数学符号渲染引擎，通过它可以方便的在现代 Web 浏览器当中显示数学公式，目前已经能够解析 &lt;code&gt;LaTex&lt;/code&gt;、&lt;code&gt;MathML&lt;/code&gt; 等标记语言。&lt;strong&gt;MathJax&lt;/strong&gt; 项目发源于 2009 年，目前由 NumFOCUS 基金会主持，并且得到了 MathJax 联盟的支持，该联盟是&lt;strong&gt;美国数学协会&lt;/strong&gt;（AMS）和 &lt;strong&gt;工业与应用数学协会&lt;/strong&gt;（SIAM）的共同合资企业。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="images/Snipaste_2023-12-02_22-17-53.png" alt="Snipaste_2023-12-02_22-17-53.png" /&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;LaTeX&lt;/strong&gt;是一种高质量的排版格式，可以生成复杂的表格与数学公式，是当前电子与数学出版行业的事实标准。本文以 &lt;strong&gt;Pandoc&lt;/strong&gt;作为 LaTex 渲染引擎（一款用于标记语言文档转换的命令行工具），分门别类的总结了撰写数学公式所需要经常使用到的 LaTeX 语法，方便写作相关科技类文章时随手查阅。&lt;/p&gt;&#10;&lt;h2 id="1--希腊字母"&gt;1. 希腊字母&lt;/h2&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;标准符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;th align="center"&gt;首字母大写&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;th align="center"&gt;使用 &lt;code&gt;var&lt;/code&gt; 前缀&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;th align="center"&gt;读音&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\alpha$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\alpha&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈælfə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\beta$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\beta&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈbeɪtə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gamma$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gamma&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Gamma$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Gamma&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varGamma$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varGamma&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈɡæmə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\delta$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\delta&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Delta$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Delta&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varDelta$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varDelta&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈdɛltə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\epsilon$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\epsilon&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varepsilon$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varepsilon&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈɛpsɪlɒn/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\zeta$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\zeta&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈzeɪtə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\eta$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\eta&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈeɪtə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\theta$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\theta&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Theta$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Theta&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\vartheta$、$\varTheta$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\vartheta&lt;/code&gt;、&lt;code&gt;\varTheta&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈθiːtə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\iota$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\iota&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/aɪˈoʊtə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\kappa$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\kappa&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varkappa$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varkappa&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈkæpə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lambda$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lambda&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Lambda$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Lambda&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varLambda$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varLambda&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈlæmdə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\mu$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\mu&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/mjuː/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nu$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nu&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/njuː/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\xi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\xi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Xi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Xi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varXi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varXi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/zaɪ, ksaɪ/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$o$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;o&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$O$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;O&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈɒmɪkrɒn/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\pi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\pi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Pi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Pi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varpi$、$\varPi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varpi&lt;/code&gt;、&lt;code&gt;\varPi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/paɪ/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;17&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rho$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rho&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varrho$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varrho&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/roʊ/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sigma$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sigma&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Sigma$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Sigma&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varsigma$、$\varSigma$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varsigma&lt;/code&gt;、&lt;code&gt;\varSigma&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈsɪɡmə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;19&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\tau$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\tau&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/taʊ, tɔː/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\upsilon$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\upsilon&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Upsilon$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Upsilon&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varUpsilon$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varUpsilon&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/ˈʌpsɪlɒn/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;21&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\phi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\phi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Phi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Phi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varphi$、$\varPhi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varphi&lt;/code&gt;、&lt;code&gt;\varPhi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/faɪ/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;22&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\chi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\chi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/kaɪ/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;23&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\psi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\psi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Psi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Psi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varPsi$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varPsi&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/psaɪ/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\omega$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\omega&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Omega$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Omega&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varOmega$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varOmega&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/oʊˈmeɪɡə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\digamma$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\digamma&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;/daɪ'gæmə/&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="2--二元运算符"&gt;2. 二元运算符&lt;/h2&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$+$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;+&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bullet$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bullet&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$-$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;21&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\oplus$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\oplus&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\times$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\times&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;22&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ominus$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ominus&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\div$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\div&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;23&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\odot$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\odot&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\pm$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\pm&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\oslash$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\oslash&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\mp$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\mp&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\otimes$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\otimes&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\triangleleft$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\triangleleft&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;26&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bigcirc$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bigcirc&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\triangleright$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\triangleright&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;27&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\diamond$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\diamond&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\cdot$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\cdot&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;28&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\uplus$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\uplus&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\setminus$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\setminus&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;29&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bigtriangleup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bigtriangleup&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\star$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\star&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bigtriangledown$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bigtriangledown&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ast$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ast&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;31&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lhd$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lhd&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\cup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\cup&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;32&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rhd$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rhd&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\cap$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\cap&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;33&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\unlhd$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\unlhd&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sqcup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sqcup&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;34&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\unrhd$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\unrhd&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sqcap$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sqcap&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;35&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\amalg$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\amalg&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;17&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\vee$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\vee&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;36&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\wr$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\wr&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\wedge$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\wedge&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;37&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\dagger$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\dagger&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;19&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\circ$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\circ&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;38&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ddagger$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ddagger&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="3--二元关系符"&gt;3. 二元关系符&lt;/h2&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$=$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;=&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;49&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gneq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gneq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ne$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ne&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;50&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\geqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\geqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\neq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\neq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;51&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ngeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ngeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\equiv$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\equiv&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;52&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ngeqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ngeqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\not\equiv$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\not\equiv&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;53&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\doteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\doteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;54&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gvertneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gvertneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\doteqdot$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\doteqdot&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;55&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lessgtr$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lessgtr&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\overset{\underset{\mathrm{def}}{}}{=}$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\overset{\underset{\mathrm{def}}{}}{=}&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;56&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lesseqgtr$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lesseqgtr&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$:=$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;:=&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;57&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lesseqqgtr$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lesseqqgtr&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sim&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;58&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gtrless$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gtrless&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;59&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gtreqless$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gtreqless&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\backsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\backsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gtreqqless$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gtreqqless&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\thicksim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\thicksim&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;61&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leqslant$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leqslant&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\simeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\simeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;62&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nleqslant$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nleqslant&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\backsimeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\backsimeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;63&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\eqslantless$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\eqslantless&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\eqsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\eqsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;64&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\geqslant$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\geqslant&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;17&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\cong$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\cong&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;65&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ngeqslant$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ngeqslant&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ncong$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ncong&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;66&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\eqslantgtr$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\eqslantgtr&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;19&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\approx$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\approx&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;67&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lesssim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lesssim&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\thickapprox$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\thickapprox&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;68&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lnsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lnsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;21&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\approxeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\approxeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;69&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lessapprox$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lessapprox&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;22&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\asymp$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\asymp&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;70&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lnapprox$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lnapprox&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;23&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\propto$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\propto&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;71&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gtrsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gtrsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varpropto$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varpropto&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;72&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gnsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gnsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$&amp;lt;$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;73&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gtrapprox$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gtrapprox&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;26&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nless$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nless&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;74&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gnapprox$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gnapprox&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;27&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ll$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ll&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;75&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\prec$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\prec&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;28&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\not\ll$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\not\ll&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;76&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nprec$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nprec&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;29&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lll$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lll&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;77&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\preceq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\preceq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\not\lll$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\not\lll&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;78&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\npreceq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\npreceq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;31&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lessdot$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lessdot&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;79&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\precneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\precneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;32&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$&amp;gt;$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;80&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\succ$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\succ&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;33&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ngtr$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ngtr&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;81&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nsucc$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nsucc&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;34&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gg$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gg&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;82&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\succeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\succeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;35&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\not\gg$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\not\gg&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;83&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nsucceq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nsucceq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;36&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ggg$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ggg&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;84&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\succneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\succneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;37&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\not\ggg$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\not\ggg&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;85&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\preccurlyeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\preccurlyeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;38&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gtrdot$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gtrdot&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;86&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\curlyeqprec$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\curlyeqprec&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;39&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\le$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\le&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;87&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\succcurlyeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\succcurlyeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;40&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;88&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\curlyeqsucc$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\curlyeqsucc&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;41&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lneq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lneq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;89&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\precsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\precsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;42&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;90&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\precnsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\precnsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;43&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nleq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nleq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;91&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\precapprox$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\precapprox&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;44&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nleqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nleqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;92&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\precnapprox$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\precnapprox&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;45&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;93&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\succsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\succsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;46&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lvertneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lvertneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;94&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\succnsim$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\succnsim&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;47&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ge$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ge&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;95&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\succapprox$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\succapprox&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;48&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\geq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\geq&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;96&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\succnapprox$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\succnapprox&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="4--逻辑符号"&gt;4. 逻辑符号&lt;/h2&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\forall$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\forall&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\neg$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\neg&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\exists$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\exists&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;21&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\not\operatorname{R}$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\not\operatorname{R}&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nexists$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nexists&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;22&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bot$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bot&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\therefore$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\therefore&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;23&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\top$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\top&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\because$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\because&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\vdash$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\vdash&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\And$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\And&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\dashv$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\dashv&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lor$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lor&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;26&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\vDash$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\vDash&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\vee$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\vee&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;27&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Vdash$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Vdash&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\curlyvee$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\curlyvee&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;28&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\models$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\models&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bigvee$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bigvee&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;29&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Vvdash$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Vvdash&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\land$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\land&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nvdash$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nvdash&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\wedge$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\wedge&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;31&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nVdash$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nVdash&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\curlywedge$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\curlywedge&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;32&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nvDash$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nvDash&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bigwedge$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bigwedge&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;33&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nVDash$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nVDash&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bar{q}$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bar{q}&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;34&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ulcorner$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ulcorner&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bar{abc}$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bar{abc}&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;35&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\urcorner$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\urcorner&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;17&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\overline{q}$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\overline{q}&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;36&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\llcorner$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\llcorner&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\overline{abc}$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\overline{abc}&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;37&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lrcorner$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lrcorner&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;19&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\lnot$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\lnot&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="5--集合符号"&gt;5. 集合符号&lt;/h2&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\{ \}$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\{ \}&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;23&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sqsubset$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sqsubset&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\emptyset$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\emptyset&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\supset$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\supset&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varnothing$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varnothing&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Supset$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Supset&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\in$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\in&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;26&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sqsupset$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sqsupset&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\notin$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\notin&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;27&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\subseteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\subseteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ni$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ni&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;28&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nsubseteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nsubseteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\cap$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\cap&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;29&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\subsetneq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\subsetneq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Cap$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Cap&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varsubsetneq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varsubsetneq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sqcap$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sqcap&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;31&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sqsubseteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sqsubseteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bigcap$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bigcap&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;32&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\supseteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\supseteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\cup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\cup&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;33&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nsupseteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nsupseteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Cup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Cup&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;34&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\supsetneq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\supsetneq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sqcup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sqcup&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;35&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varsupsetneq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varsupsetneq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bigcup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bigcup&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;36&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sqsupseteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sqsupseteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bigsqcup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bigsqcup&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;37&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\subseteqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\subseteqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\uplus$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\uplus&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;38&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nsubseteqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nsubseteqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;17&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\biguplus$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\biguplus&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;39&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\subsetneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\subsetneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\setminus$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\setminus&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;40&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varsubsetneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varsubsetneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;19&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\smallsetminus$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\smallsetminus&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;41&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\supseteqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\supseteqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\times$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\times&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;42&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nsupseteqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nsupseteqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;21&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\subset$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\subset&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;43&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\supsetneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\supsetneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;22&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Subset$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Subset&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;44&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\varsupsetneqq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\varsupsetneqq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="6--箭头符号"&gt;6. 箭头符号&lt;/h2&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Rrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Rrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;36&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\longmapsto$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\longmapsto&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Lleftarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Lleftarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;37&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rightharpoonup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rightharpoonup&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Rightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Rightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;38&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rightharpoondown$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rightharpoondown&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nRightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nRightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;39&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftharpoonup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftharpoonup&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Longrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Longrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;40&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftharpoondown$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftharpoondown&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\implies$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\implies&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;41&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\upharpoonleft$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\upharpoonleft&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Leftarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Leftarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;42&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\upharpoonright$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\upharpoonright&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nLeftarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nLeftarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;43&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\downharpoonleft$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\downharpoonleft&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Longleftarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Longleftarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;44&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\downharpoonright$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\downharpoonright&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Leftrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Leftrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;45&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rightleftharpoons$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rightleftharpoons&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nLeftrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nLeftrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;46&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftrightharpoons$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftrightharpoons&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Longleftrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Longleftrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;47&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\curvearrowleft$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\curvearrowleft&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\iff$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\iff&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;48&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\circlearrowleft$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\circlearrowleft&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Uparrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Uparrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;49&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Lsh$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Lsh&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Downarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Downarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;50&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\upuparrows$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\upuparrows&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Updownarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Updownarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;51&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rightrightarrows$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rightrightarrows&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;17&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;52&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rightleftarrows$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rightleftarrows&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\to$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\to&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;53&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rightarrowtail$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rightarrowtail&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;19&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;54&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\looparrowright$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\looparrowright&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\longrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\longrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;55&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\curvearrowright$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\curvearrowright&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;21&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;56&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\circlearrowright$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\circlearrowright&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;22&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\gets$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\gets&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;57&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Rsh$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Rsh&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;23&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nleftarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nleftarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;58&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\downdownarrows$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\downdownarrows&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\longleftarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\longleftarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;59&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftleftarrows$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftleftarrows&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftrightarrows$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftrightarrows&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;26&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nleftrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nleftrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;61&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftarrowtail$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftarrowtail&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;27&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\longleftrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\longleftrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;62&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\looparrowleft$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\looparrowleft&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;28&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\uparrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\uparrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;63&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\hookrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\hookrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;29&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\downarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\downarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;64&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\hookleftarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\hookleftarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\updownarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\updownarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;65&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\multimap$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\multimap&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;31&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nearrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nearrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;66&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftrightsquigarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftrightsquigarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;32&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\swarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\swarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;67&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rightsquigarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rightsquigarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;33&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\nwarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\nwarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;68&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\twoheadrightarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\twoheadrightarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;34&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\searrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\searrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;69&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\twoheadleftarrow$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\twoheadleftarrow&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;35&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\mapsto$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\mapsto&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="7--特殊符号"&gt;7. 特殊符号&lt;/h2&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;th align="center"&gt;序号&lt;/th&gt;&#10;&lt;th align="center"&gt;符号&lt;/th&gt;&#10;&lt;th align="center"&gt;LaTeX&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\infty$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\infty&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;33&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\flat$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\flat&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\aleph$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\aleph&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;34&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\natural$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\natural&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\complement$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\complement&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;35&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\sharp$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\sharp&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\backepsilon$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\backepsilon&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;36&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\diagup$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\diagup&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\eth$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\eth&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;37&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\diagdown$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\diagdown&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Finv$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Finv&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;38&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\centerdot$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\centerdot&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\hbar$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\hbar&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;39&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ltimes$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ltimes&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Im$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Im&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;40&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rtimes$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rtimes&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\imath$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\imath&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;41&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\leftthreetimes$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\leftthreetimes&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\jmath$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\jmath&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;42&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\rightthreetimes$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\rightthreetimes&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Bbbk$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Bbbk&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;43&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\eqcirc$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\eqcirc&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ell$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ell&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;44&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\circeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\circeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\mho$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\mho&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;45&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\triangleq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\triangleq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\wp$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\wp&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;46&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\bumpeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\bumpeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Re$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Re&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;47&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Bumpeq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Bumpeq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\circledS$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\circledS&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;48&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\doteqdot$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\doteqdot&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;17&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\amalg$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\amalg&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;49&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\risingdotseq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\risingdotseq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\%$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\%&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;50&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\fallingdotseq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\fallingdotseq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;19&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\dagger$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\dagger&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;51&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\intercal$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\intercal&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ddagger$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ddagger&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;52&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\barwedge$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\barwedge&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;21&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ldots$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ldots&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;53&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\veebar$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\veebar&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;22&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\cdots$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\cdots&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;54&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\doublebarwedge$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\doublebarwedge&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;23&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\smile$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\smile&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;55&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\between$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\between&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\frown$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\frown&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;56&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\pitchfork$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\pitchfork&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\wr$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\wr&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;57&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\vartriangleleft$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\vartriangleleft&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;26&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\triangleleft$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\triangleleft&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;58&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ntriangleleft$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ntriangleleft&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;27&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\triangleright$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\triangleright&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;59&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\vartriangleright$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\vartriangleright&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;28&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\diamondsuit$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\diamondsuit&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ntriangleright$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ntriangleright&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;29&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\heartsuit$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\heartsuit&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;61&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\trianglelefteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\trianglelefteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\clubsuit$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\clubsuit&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;62&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ntrianglelefteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ntrianglelefteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;31&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\spadesuit$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\spadesuit&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;63&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\trianglerighteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\trianglerighteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;32&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\Game$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\Game&lt;/code&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;strong&gt;64&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="center"&gt;$\ntrianglerighteq$&lt;/td&gt;&#10;&lt;td align="center"&gt;&lt;code&gt;\ntrianglerighteq&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="8--分数"&gt;8. 分数&lt;/h2&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th align="left"&gt;类型&lt;/th&gt;&#10;&lt;th align="left"&gt;符号&lt;/th&gt;&#10;&lt;th align="left"&gt;LaTeX&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;&lt;strong&gt;分数&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="left"&gt;$\frac{2}{4}x=0.5x or {2 \over 4}x=0.5x$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\frac{2}{4}x=0.5x or {2 \over 4}x=0.5x&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;&lt;strong&gt;小型分数&lt;/strong&gt;&lt;/td&gt;&#10;&lt;td align="left"&gt;$\tfrac{2}{4}x = 0.5x$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\tfrac{2}{4}x = 0.5x&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;&lt;strong&gt;大型分数&lt;/strong&gt; （嵌套）&lt;/td&gt;&#10;&lt;td align="left"&gt;$\cfrac{2}{c + \cfrac{2}{d + \cfrac{2}{4}}} = a$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\cfrac{2}{c + \cfrac{2}{d + \cfrac{2}{4}}} = a&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="9--数值函数"&gt;9. 数值函数&lt;/h2&gt;&#10;&lt;table&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th align="left"&gt;符号&lt;/th&gt;&#10;&lt;th align="left"&gt;LaTeX&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\exp_a b = a^b, \exp b = e^b, 10^m$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\exp_a b = a^b, \exp b = e^b, 10^m&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\ln c, \lg d = \log e, \log_{10} f$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\ln c, \lg d = \log e, \log_{10} f&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\sin a, \cos b, \tan c, \cot d, \sec e, \csc f$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\sin a, \cos b, \tan c, \cot d, \sec e, \csc f&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\arcsin a, \arccos b, \arctan c$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\arcsin a, \arccos b, \arctan c&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\operatorname{arccot} d, \operatorname{arcsec} e, \operatorname{arccsc} f$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\operatorname{arccot} d, \operatorname{arcsec} e, \operatorname{arccsc} f&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\sinh a, \cosh b, \tanh c, \coth d$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\sinh a, \cosh b, \tanh c, \coth d&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\operatorname{sh}k, \operatorname{ch}l, \operatorname{th}m, \operatorname{coth}n$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\operatorname{sh}k, \operatorname{ch}l, \operatorname{th}m, \operatorname{coth}n&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\operatorname{argsh}o, \operatorname{argch}p, \operatorname{argth}q$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\operatorname{argsh}o, \operatorname{argch}p, \operatorname{argth}q&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\operatorname{sgn}r, \left\vert s \right\vert$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\operatorname{sgn}r, \left\vert s \right\vert&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td align="left"&gt;$\min(x,y), \max(x,y)$&lt;/td&gt;&#10;&lt;td align="left"&gt;&lt;code&gt;\min(x,y), \max(x,y)&lt;/code&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;如果需要使用特殊的函数符号，那么可以采用 &lt;code&gt;\operatorname{}&lt;/code&gt; 命令进行自定义：&lt;/p&gt;</description></item></channel></rss>