大模型训练为什么依赖GPU
近年来,随着人工智能技术的飞速发展,特别是深度学习领域的进步,大模型的训练逐渐成为研究和工业界的热点。作为大模型训练中的核心硬件,GPU(图形处理单元)扮演了至关重要的角色。那么,为什么大模型训练如此依赖GPU呢?本文将从多个角度探讨这一问题。
一、GPU的并行计算能力
1.1 大规模并行处理
GPU的架构设计与CPU截然不同。CPU通常拥有少量的高性能核心,这些核心擅长处理复杂的任务和多样化的计算指令,适用于串行计算和较少的数据并行。而GPU则设计有成百上千的简单核心,这些核心能够同时处理多个相同操作。这样的设计使得GPU特别适合于大规模并行计算,在需要对大量数据进行相同形式的运算时,其性能优势明显。
在深度学习的训练过程中,尤其是神经网络,这种操作的并行性更加突出。例如,在训练过程中,我们会遇到大量的矩阵运算,比如权重更新、前向传播和反向传播等。这些矩阵运算能够被分解成较小的子任务,利用GPU的并行核心同时处理,从而实现加速。多个研究显示,在相同的硬件条件下,使用GPU进行深度学习训练可以比使用CPU快数十倍甚至上百倍。这种加速效果使得科研人员和工程师能够更快地迭代与优化模型,大幅度缩短实验时间。
1.2 大模型的复杂度
随着深度学习模型的不断演化,其复杂度和规模也在迅速上升。现代深度学习模型,特别是图像识别、自然语言处理等领域,通常拥有数以亿计的参数。例如,OpenAI的GPT-3模型拥有1750亿参数。这种规模的模型意味着需要大量的计算资源来进行训练,尤其是在初期阶段,模型参数的随机初始化、损失函数的求解、梯度的计算等都需要消耗大量的计算能力。
GPU由于其优秀的并行性,能够有效进行大量的浮点运算。与传统的CPU执行指令顺序的方式不同,GPU能够把一个复杂的深度学习模型的整个训练过程分解成多个小任务,减少了时间成本。每个小任务可以被分配到GPU的不同核心上并行处理,使得整个训练过程更加高效和时间友好。这也是为什么在面对复杂的深度学习模型时,选择GPU进行训练几乎是唯一的选择。
1.3 CPU与GPU架构差异
在计算架构上,CPU(中央处理单元)和GPU(图形处理单元)有着显著的差异。CPU设计用于执行少量的复杂任务,通常拥有4到16个高性能核心,这些核心具备强大的逻辑控制能力,适合处理复杂的算法和多样化的任务。相较之下,GPU拥有数千个简化核心(例如,NVIDIA A100具有6912个CUDA核心),专为并行计算优化。这种设计使得GPU在面对大规模数据处理时,能够最大化地发挥其并行计算能力。
CPU和GPU的架构对比图展示了两者在处理能力上的不同产品特性——CPU专注于低延迟和高单线程性能,而GPU则专注于高并发和高吞吐量。这种并行结构使得GPU成为处理深度学习模型和大规模数据集的理想硬件。
1.4 矩阵运算加速比
在机器学习和深度学习中,矩阵运算是最基础且最重要的计算形式。在深度学习训练过程中,无论是前向传播还是反向传播,都涉及大量的矩阵乘法。
为了展示GPU的强大性能,我们可以对比CPU和GPU的矩阵运算:
python
# CPU矩阵乘法(单线程)
import numpy as np
a = np.random.rand(10000, 10000)
b = np.random.rand(10000, 10000)
%timeit np.dot(a, b) # 约120秒# GPU加速(使用CuPy)
import cupy as cp
a_gpu = cp.array(a)
b_gpu = cp.array(b)
%timeit cp.dot(a_gpu, b_gpu) # 约0.8秒
通过上面的对比,我们可以看到,使用GPU进行矩阵运算的加速比高达150倍。这种加速能力使得训练复杂的深度学习模型,尤其是参数数量庞大的模型,成为可能。
1.5 大规模并行的优势
在实际应用中,大规模并行计算的优势不仅体现在速度上,更是在资源利用率和成本效益上。GPU的并行计算架构可以在相同时间段内处理多个模型或批次的数据,通过合理的批量处理,进一步提升训练效率。
例如,在集群环境中,多个GPU可以协同工作,利用数据并行和模型并行策略共同训练模型。这种方式在多个GPU上分配计算负载,充分利用每个GPU的计算能力,极大地加速了训练过程。在大模型(如GPT系列)中,单一节点的计算能力往往不足以支撑复杂的运算,借助GPU集群,研究人员能够高效地完成更复杂的训练任务。
二、内存带宽与数据吞吐量
2.1 高带宽内存
内存带宽是衡量计算设备将数据从内存读取到计算核心中速度的一项重要指标。GPU通常配备了专用于高带宽数据传输的显存,如GDDR6或HBM(高带宽内存),这些内存技术的设计目标就是为了满足极高数据流的需求。在深度学习训练中,尤其是在大模型的情况下,内存的带宽限制常常会成为性能瓶颈。
比如,在训练一个神经网络时,输入的数据(如图片、文本或其他格式)需要迅速加载到显存中,之后进行处理和计算。如果内存带宽不足,计算核心会等待数据,从而导致效率下降。GPU的高带宽内存可以确保数据在计算单元与内存之间快速流动,最大限度地减少核间等待,从而保持高效的计算。这种优越的内存带宽是CPU难以比拟的,后者通常更注重单核性能和复杂计算任务的处理。
2.2 计算和数据传输并行
在极大规模的模型训练中,计算和数据传输是两个并行操作。GPU的设计使得在执行密集的计算时,它能够同时与内存进行高速的数据交互。这种处理方法减少了CPU和内存之间的调度延迟,避免了在计算时等待数据的情况发生。
传统的计算模型往往采取的顺序执行方式,即计算完成后再进行数据更新,这种模式在面对大规模数据时显得极为低效。而GPU则能在每个时钟周期内交替进行计算和数据传输,使得计算资源得到最优配置。在训练神经网络的过程中,所有层之间的权重更新、激活值计算和损失函数评估等,都可以在一个大的并行框架中流畅进行,确保模型能够高效训练。这种计算与数据流的高度协调化,使得GPU在处理大数据量和不断变化的模型参数时,拥有独特的优势。
总而言之,GPU之所以在大模型训练中占据重要地位,正是因为其卓越的并行计算能力和高效的内存带宽,使得处理复杂数据、进行大量计算变得高效而迅速。随着AI的发展,GPU的角色只会愈发重要,推动我们的技术进步。
2.3 内存带宽的对比
内存带宽是衡量计算设备从内存读取数据能力的关键指标。在深度学习中,尤其是大规模模型的训练过程中,数据的输入与输出频率极高,带宽不足可能成为性能瓶颈。
硬件类型 | 典型带宽 | 数据搬运效率 |
---|---|---|
DDR4内存 | 50GB/s | 延迟约100ns |
HBM2显存 | 1.5TB/s | 延迟约10ns |
HBM2显存通常是GPU采用的高带宽内存技术,其带宽比DDR4内存高出30倍。这使得GPU能够以更快的速度去处理来自模型和数据集的庞大交换量,从而有效减小训练时间。
2.4 大模型显存占用实例
大模型的参数数量与显存的占用息息相关,以下提供了一些典型模型的显存需求对比:
模型规模 | 参数数量 | FP32显存占用 | 混合精度优化后 |
---|---|---|---|
GPT-3 | 175B | 700GB | 280GB |
LLaMA-2 | 70B | 280GB | 112GB |
使用NVIDIA A100(具有80GB显存)的GPU进行训练时,为了满足大模型的显存需求,通常需要至少4卡并行运行,以确保显存能够满足需求并保持训练效率。混合精度训练通过降低运算精度,提高了显存利用率,进一步提升了训练速度。
2.5 数据流动与计算的同步
在大模型的训练过程中,数据流动的速度同样重要。GPU的高带宽显存和并行计算能力可以确保数据传输与计算密切同步,这一特点是CPU所无法比拟的。
传统的CPU处理流程往往在进行计算时需要等待数据的准备,而GPU则能够并行执行数据加载与计算任务。在深度学习中,尤其是训练大模型,能够实时将新数据送入GPU进行计算,使得GPU始终处于高效运行状态,避免了因等待数据而造成的资源闲置。
高带宽和高吞吐量的结合,使得GPU在大规模深度学习训练中具备了无与伦比的优势,确保了在极短时间内完成庞大的计算需求。
三、专用硬件的优势
3.1 深度学习优化
GPU不仅因其通用的并行计算能力而受到青睐,更重要的是,现代GPU在架构上已针对深度学习的需求进行了显著优化。例如,NVIDIA推出了一系列专为深度学习设计的GPU,如Volta架构中的Tensor Cores。这些Tensor Cores能够以更高的效率执行深度学习所需的大量矩阵乘法运算,尤其是在混合精度训练中可达到数倍于传统计算过程的加速能力。
通过对计算任务的细致优化,GPU不仅可以更快速地完成训练过程,还能降低功耗,提升计算效率。这对于在数据中心或云计算环境中运行深度学习任务尤为重要,因为更低的功耗意味着更低的运营成本。专用硬件的设计使得数据科学家和机器学习工程师能够更专注于模型设计而不是底层优化,从而提高了整个项目的开发效率。
3.2 芯片设计的演化
随着对深度学习需求的上升,许多公司(尤其是以NVIDIA为首)开始将重点放在开发专用的AI硬件上。这些专用ASIC(应用专用集成电路,如TPU)和FPGA(现场可编程门阵列)被广泛应用于AI训练和推理任务。越来越多的硬件供应商根据深度学习模型的特性设计出优化芯片,例如Google的TPU,其架构专门用于高效处理大规模神经网络的训练和推理。
这种芯片设计的演变不仅提高了深度学习计算的性能,更创造了新的市场机会。许多企业和研究机构开始关注专用硬件,以解决传统计算资源在处理深度学习任务时面临的性能瓶颈。此外,许多新兴的非易失性内存和三维堆叠技术的运用也进一步增强了GPU等专用硬件的存储能力和访问速度,支持处理更大规模的模型和数据集。
3.3 Tensor Cores革命:算力的飞跃
在GPU硬件架构的发展中,NVIDIA的Tensor Core技术无疑是一个重要的里程碑。Tensor Core专为加速深度学习任务而设计,可以在单个时钟周期内执行高效的矩阵运算。在标准的FP32计算中,NVIDIA A100的性能达到19.5 TFLOPS,而通过Tensor Core的优化,这一性能可以激增至312 TFLOPS,尤其在稀疏矩阵计算中表现卓越。
以下是一个Tensor Core优化的矩阵乘法示例:
cuda
__global__ void tensorCoreMatmul(half* A, half* B, float* C) {using namespace nvcuda;__shared__ half Ashare[16][16];__shared__ half Bshare[16][16];wmma::fragment<wmma::matrix_a, 16, 16, 16, half, wmma::row_major> a_frag;wmma::fragment<wmma::matrix_b, 16, 16, 16, half, wmma::col_major> b_frag;wmma::fragment<wmma::accumulator, 16, 16, 16, float> c_frag;// 使用Tensor Core进行计算wmma::load_matrix_sync(a_frag, Ashare, 16);wmma::load_matrix_sync(b_frag, Bshare, 16);wmma::mma_sync(c_frag, a_frag, b_frag, c_frag);wmma::store_matrix_sync(C, c_frag, 16, wmma::mem_row_major);
}
这种创新在训练大规模模型时可以显著降低时间成本,使得巨型神经网络的训练成为可能。
3.4 通信优化技术:网络协同的助推器
在大型集群中,计算节点之间的高效通信也是十分关键的。NVIDIA的NVLink 3.0技术可以提供600GB/s的双向带宽,极大地提升了多个GPU之间的数据交换速度。此外,GPUDirect RDMA允许不同节点之间跨网络直接访问内存,这不仅降低了延迟,还提高了数据传输的效率。
这样的通信优化技术,使得在大型分布式系统中,GPU能够更高效地协作,共同完成复杂的大模型训练任务。
四、生态系统与框架支持
4.1 深度学习框架的优化
现代深度学习的发展离不开框架的支持,这些框架(如TensorFlow、PyTorch、MXNet等)不仅为开发者提供了高效的算法实现,还针对GPU进行了深度的优化。这些框架利用GPU的多核特性、并行计算和高带宽特性,自动将训练任务调度到GPU上,极大地简化了开发流程。
例如,许多框架支持CUDA和cuDNN等库,这些是NVIDIA为GPU计算提供的专用库,专门用于优化神经网络的训练和推理过程。这使得研究人员可以在不必深入了解GPU底层工作的情况下进行实验,方便快速迭代和验证想法。这种框架层的优化使得深度学习的入门门槛下降,为更多开发者和研究者提供了平滑的学习曲线。
4.2 社区与文档支持
围绕GPU及其深度学习框架,已经形成了一个庞大的社区和丰富的文档资源。这些社区为开发者提供了广泛的支持,包括问题解答、最佳实践、案例分享和教学内容。在诸如GitHub等代码托管平台上,许多基于GPU的深度学习项目都在不断更新与迭代,用户可以在这里找到大量已有的实现和优化技巧。
此外,组织和公司还在积极举办各种类型的竞赛和挑战(如Kaggle比赛、腊八挑战等),这使得社区成员能够在实际应用中进行合作与学习,促进技术的交流与进步。文档和资料的丰富性为使用GPU进行深度学习研究和开发提供了坚实的基础,帮助新手和老手解决实际遇到的问题,加速AI技术的推广与应用。
4.3 深度学习框架的强大支持
在深度学习领域,主流框架(如PyTorch、TensorFlow和JAX)对GPU的支持已达到极致。它们不仅实现了GPU加速,还通过各自的特性使模型构建和训练过程变得简便高效。
- PyTorch:结合CUDA和cuDNN,支持动态计算图,确保可以灵活处理不同的神经网络结构,并提供AMP(自动混合精度)以提高训练速度和减少显存占用。
- TensorFlow:集成了XLA编译器,通过静态图优化和分布式策略,实现可高效部署的深度学习模型。
- JAX:将GPU和TPU的后端统一,使得函数式编程和自动微分优化变得容易,使得研究者可以专注于算法开发而不是底层实现。
整体上,深度学习框架的进步使得GPU的优势得以充分发挥,为AI研究提供了强大的工具支持。
4.4 典型加速库的崛起
在CUDA生态中,许多高性能计算库的出现为模型训练提供了基础设施。例如:
- cuBLAS:为矩阵运算提供高效的BLAS(基础线性代数子程序)实现。
- cuDNN:专为深度学习设计,提供高性能的卷积计算。
- NCCL:专注于多GPU的通信优化,使得数据并行训练得以高效实施。
以下是各库间的关系图示:
这些优化库和框架的结合,创建了一个无与伦比的软件生态系统,对GPU在大模型训练中的应用提供了全面支持,保证模型训练高效、稳定。
从专用计算单元的流行到日益成熟的生态系统,GPU不仅在算力上具备无可比拟的优势,还在逐渐完善的基础设施中发挥着核心作用。面对未来,GPU仍将是大规模模型训练的首选设备。随着技术的不断发展和创新,了解并掌握有效的CUDA优化技术将成为AI工程师和研究者的核心竞争力。
五、结论
综上所述,大模型训练依赖GPU主要是由于其强大的并行计算能力、高带宽内存、专用硬件的优势及良好的生态支持。随着技术的不断进步和需求的不断增加,GPU在大模型训练中的重要性只会愈加凸显。未来,我们可以期待GPU与深度学习算法之间的联系更加紧密,推动AI技术的进一步发展。
相关文章:

大模型训练为什么依赖GPU
近年来,随着人工智能技术的飞速发展,特别是深度学习领域的进步,大模型的训练逐渐成为研究和工业界的热点。作为大模型训练中的核心硬件,GPU(图形处理单元)扮演了至关重要的角色。那么,为什么大模…...

帕金森病与三叉神经痛的基因关联分析
帕金森病(Parkinsons Disease, PD)和三叉神经痛(Trigeminal Neuralgia, TN)是两种不同的神经系统疾病,前者主要影响运动功能,而后者则表现为剧烈的面部疼痛。尽管这两种疾病在临床表现上有显著差异…...

【Android开发】华为手机安装包安装失败“应用是非正式版发布版本,当前设备不支持安装”问题解决
问题描述 我们将Debug版本的安装包发送到手机上安装,会发现华为手机有如下情况 解决办法 在文件gradle.properties中粘贴代码: android.injected.testOnlyfalse 最后点击“Sync now”,等待重新加载gradle资源即可 后面我们重新编译Debug安装…...

栈与队列(C语言版)
文章目录 栈与队列1. 栈基本操作实现(基于链表)代码运行结果 应用场景 2. 队列基本操作实现代码运行结果 应用场景 栈与队列 1. 栈 栈是一种操作受限的线性结构。操作受限体现在,栈只能在一端添加和删除元素,符合后进先出 ( LIFO ) 的特性,…...
stl里的deque 中控map 假如用完了,该如何处理
在 C 的标准模板库(STL)中,std::deque(双端队列)使用一种分段连续的存储结构,通过一个中控器(通常称为中控 map)来管理多个固定大小的存储块(缓冲区)。当这个…...

Git GUI设置中文的方法及使用
链接: Git Bash和Git GUI设置中文的方法 链接: Git 基本操作...

代码书写常用快捷建
唤出剪切板 Windows 系统 :Win V Mac 系统: 在 Mac 电脑上,可以点击桌面菜单栏中的 “编辑”,在下拉菜单中选择 “显示剪贴板” 来打开剪贴板。 跳转和撤回跳转 在vscode软件中可以通过ctrl+鼠标左键可以进行跳转…...
MySQL 索引失效处理:原因分析与优化实战
MySQL 索引失效处理:原因分析与优化实战 MySQL 索引失效处理:原因分析与优化实战引言一、什么是索引失效?二、索引失效的常见原因2.1 查询条件中使用函数或表达式示例:原因: 2.2 数据类型不匹配示例:原因&a…...
基于Python的AI代码审计工具实现方案,结合DeepSeek API和商业化设计
以下是一个基于Python的AI代码审计工具实现方案,结合DeepSeek API和商业化设计,分为基础功能版和进阶扩展方向: 基础版实现代码 (命令行工具) import os import requests from dotenv import load_dotenv import hashlib import json from t…...

用Python实现线性回归:从数学原理到代码实战
一、前言:为什么线性回归是AI必修课? 作为机器学习领域的"Hello World",线性回归算法具有三大核心价值: 1️⃣ 理解监督学习的底层逻辑(特征工程→模型训练→预测输出) 2️⃣ 掌握梯度下降等优化…...

系统可观测性(1)基础概念
系统可观测性(1)基础概念(Log/Tracing/Metrics) Author: Once Day Date: 2025年2月8日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 十年代码训练…...

Redis未授权访问漏洞导致getshell
一、漏洞信息 redis默认情况下会绑定在本地6379端口,如果没有进行采用相关的策略,就会将redis服务暴露到公网上,如果再没有设置密码认证(一般为空)的情况下,会导致任意用户可以访问到目标服务器的情况下未授权访问redis以及读取r…...
Electron 全面解析:跨平台桌面应用开发指南
引言 在当今多平台并存的数字时代,如何高效开发跨平台桌面应用成为开发者面临的重要挑战。Electron作为GitHub开源的跨平台框架,凭借其独特的Web技术融合能力,已成为构建桌面应用的热门选择。本文将深入探讨Electron的核心原理、开发实践及未…...

React进阶之React核心源码解析(一)
React核心源码解析 react 特点CPU卡顿IO 卡顿 新老 react 架构对比v15v16.8Scheduler 调度器Reconciler 协调器 React fiber原理更新dommount 构建过程 render阶段 — scheduler reconcilerreact源码解析react-domreact-dom/src/client/ReactDOMRoot.js react-reconcilerreact-…...

用大模型学大模型03-数学基础 概率论 条件概率 全概率公式 贝叶斯定理
要深入浅出地理解条件概率与贝叶斯定理,可以从以下几个方面入手,结合理论知识和实例进行学习: 贝叶斯定理与智能世界的暗语 条件概率,全概率公式与贝叶斯公式的推导,理解和应用 拉普拉斯平滑 贝叶斯解决垃圾邮件分类 …...

C++ Primer 参数传递
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
Jupyter lab 无法导出格式 Save and Export Notebook As无法展开
本来尝试jypyter lab如何导出HTML带有侧边导航栏,一顿操作后发现还是没实现。 又突然发现导出其他格式地功能不能用了,浏览器里Save and Export Notebook As展开按钮为灰色打不开。 经典想实现的没实现还把原先的搞坏了。 看了jupyter lab的运行信息发…...

Mac之JDK安装
Mac之JDK安装 一.安装 jdk 打开终端输入命令:java -version 查看是否已安装 JDK Oracle 官方下载地址 根据自己Mac 系统安装 查看 Mac 系统,打开中断命令,输入: uname -a Compressed Archive 是压缩文档,下载的是一个 .tar.gz 压缩包 D…...

OpenEuler学习笔记(三十一):在OpenEuler上搭建仓颉语言开发环境
仓颉语言(Cangjie programming language)相对较为小众,截至2025年,并没有广泛的资料和成熟的通用搭建流程。不过下面为你提供一个较为通用的在OpenEuler上搭建开发环境的大致思路,你可以根据实际情况进行调整。 1. 安…...

2021年全国研究生数学建模竞赛华为杯E题信号干扰下的超宽带(UWB)精确定位问题求解全过程文档及程序
2021年全国研究生数学建模竞赛华为杯 E题 信号干扰下的超宽带(UWB)精确定位问题 原题再现: 一、背景 UWB(Ultra-Wideband)技术也被称之为“超宽带”,又称之为脉冲无线电技术。这是一种无需任何载波,通过发送纳秒…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...