1024 GPU核心调度难题,深度解析CUDA并行计算瓶颈与破局之道

第一章:C++ CUDA 1024 GPU 计算效率提升实践

在处理大规模并行计算任务时,充分利用 NVIDIA GPU 的 1024 个核心可以显著提升 C++ 程序的执行效率。通过合理设计 CUDA 内核函数与内存访问模式,开发者能够最大限度减少延迟并提高吞吐量。

优化线程块配置

选择合适的线程块尺寸对性能至关重要。通常,每个线程块使用 256 或 512 个线程可在多数设备上实现良好占用率。以下代码展示了如何启动一个适配 1024 个 GPU 核心的 kernel:
// 定义向量加法 kernel
__global__ void vectorAdd(float* A, float* B, float* C, int N) {
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    if (idx < N) {
        C[idx] = A[idx] + B[idx];
    }
}

// 启动 kernel,配置 grid 和 block 维度
int blockSize = 256;
int gridSize = (N + blockSize - 1) / blockSize; // 确保覆盖所有数据
vectorAdd<<<gridSize, blockSize>>>(A, B, C, N);
上述代码中,blockIdx.x * blockDim.x + threadIdx.x 计算全局线程索引,确保每个线程处理唯一数据元素。

内存访问优化策略

高效利用全局内存、共享内存和常量内存可大幅降低瓶颈。应尽量实现合并内存访问(coalesced access),即相邻线程访问连续内存地址。
  • 避免分支发散:确保同一 warp 中的线程执行相同路径
  • 使用共享内存缓存重复数据,减少全局内存读取次数
  • 尽可能将只读数据放入常量内存空间
优化项推荐值/方式
线程块大小256 或 512
每SM活跃块数≥ 2
内存访问模式合并访问优先
graph TD A[开始 Kernel 执行] --> B{线程索引合法?} B -->|是| C[执行计算任务] B -->|否| D[跳过] C --> E[写回结果到全局内存]

第二章:CUDA并行计算模型深度剖析与性能瓶颈识别

2.1 GPU架构特性与1024核心调度挑战分析

现代GPU采用大规模并行架构,集成多达1024个核心,具备高吞吐计算能力。其核心由多个SM(Streaming Multiprocessor)组成,每个SM可并发执行数百个线程。
并行执行模型
GPU通过SIMT(单指令多线程)架构实现高效并行:

__global__ void vector_add(float *a, float *b, float *c) {
    int idx = blockIdx.x * blockDim.x + threadIdx.x;
    c[idx] = a[idx] + b[idx]; // 每个线程处理一个元素
}
该内核在1024个核心上并行执行,blockIdx 和 threadIdx 共同决定数据映射。
调度挑战
  • 线程块分配不均导致负载失衡
  • 内存访问冲突影响带宽利用率
  • 同步开销随核心数增加显著上升
资源竞争和延迟隐藏机制成为调度关键。

2.2 内存访问模式对并行效率的影响及实测案例

内存访问模式直接影响缓存命中率与数据局部性,进而决定并行程序的执行效率。连续访问、步长访问和随机访问在多线程环境下的性能差异显著。
典型访问模式对比
  • 连续访问:最佳缓存利用率,适合向量化处理;
  • 步长访问:大步长易引发缓存行冲突;
  • 随机访问:高缓存未命中率,严重制约并行扩展性。
实测代码示例
for (int i = 0; i < N; i += stride) {
    sum += array[i]; // 步长stride影响L1缓存命中
}
当 stride 为缓存行大小的倍数时,易发生缓存行伪共享,导致性能骤降。实验表明,stride=1 比 stride=8 在N=1M时快达6倍。
性能数据对比
访问模式步长执行时间(ms)
连续112.4
步长访问874.1
随机-158.3

2.3 线程块划分策略优化与资源占用实证研究

在GPU并行计算中,线程块的划分直接影响SM资源利用率和内存带宽效率。合理的线程块大小需兼顾寄存器使用、共享内存分配及warp调度效率。
典型线程块配置对比
  1. 1D线程块(如256线程/块):适用于简单向量运算,易于映射;
  2. 2D/3D线程块:适合图像或矩阵操作,提升空间局部性;
  3. 非2幂次大小:可能降低warp利用率,应避免。
资源占用实测分析
线程块大小活跃warp数寄存器用量性能(MFLOPS)
128432KB1800
256864KB3100
512796KB2700
优化代码示例

// 使用256线程块,适配多数GPU架构
__global__ void vecAdd(float* A, float* B, float* C) {
    int tid = blockIdx.x * blockDim.x + threadIdx.x;
    C[tid] = A[tid] + B[tid];
}
// 启动配置:gridSize = (N + 255) / 256, blockSize = 256
该配置使每个SM可并发多个block,最大化隐藏访存延迟,同时避免寄存器瓶颈。

2.4 寄存器压力与占用率瓶颈的定位与调优方法

在GPU或CPU密集型计算中,寄存器压力过高会导致线程占用率下降,进而影响并行性能。通过分析编译器报告(如NVCC的`-Xptxas -v`)可定位寄存器使用情况。
寄存器使用监控
使用CUDA编译时添加参数获取寄存器信息:
nvcc -Xptxas -v -arch=sm_75 kernel.cu
输出示例:`ptxas info : 0 registers, 64 bytes smem`。其中`registers`表示每个线程使用的寄存器数量,若接近硬件上限(如SM的寄存器总量),则会限制活跃线程束数量。
优化策略
  • 减少局部变量:合并临时变量,避免冗余存储
  • 使用共享内存替代部分寄存器:尤其适用于线程块内共用数据
  • 控制函数内联:过度内联可能显著增加寄存器压力
通过合理配置启动参数(如调整block尺寸),可在寄存器使用与占用率之间取得平衡。

2.5 实际场景中Kernel执行效率低下的根因排查流程

在高并发系统中,Kernel态性能瓶颈常表现为CPU使用率异常升高或系统调用延迟增加。排查应从系统监控入手,结合工具链逐步定位。
典型排查步骤
  1. 使用top -H观察线程级CPU占用
  2. 通过perf top -k定位热点内核函数
  3. 结合strace追踪特定进程的系统调用开销
关键性能指标对比
指标正常值异常阈值
上下文切换次数/s<10K>50K
软中断占比CPU<5%>20%
代码示例:使用perf分析内核函数耗时
perf record -g -a sleep 30
perf report | grep -i 'schedule'
该命令持续采样30秒全局性能数据,-g参数记录调用栈,后续报告中可定位调度相关函数是否成为性能热点。

第三章:关键优化技术在C++ CUDA中的工程化应用

3.1 共享内存与常量内存的高效协同设计实践

在GPU编程中,共享内存与常量内存的合理搭配能显著提升内核性能。共享内存提供低延迟、高带宽的线程块内数据共享,而常量内存则适用于只读且广播式访问的数据。
协同使用场景
当多个线程需频繁访问相同的配置参数或查找表时,应将这些数据放置于常量内存;而临时计算结果或局部窗口数据则适合放入共享内存以减少全局内存访问。
代码实现示例

__constant__ float filterCoeff[64]; // 常量内存存储滤波系数
__global__ void convolve(float* input, float* output) {
    __shared__ float tile[256]; // 共享内存缓存输入片段
    int idx = threadIdx.x;
    tile[idx] = input[idx];
    __syncthreads();
    float sum = 0.0f;
    for (int i = 0; i < 64; ++i)
        sum += tile[idx + i] * filterCoeff[i]; // 协同计算
    output[idx] = sum;
}
上述代码中,filterCoeff通过常量内存广播至所有线程,避免重复加载;tile利用共享内存实现快速复用,两者结合有效降低内存延迟。

3.2 异步数据传输与流水线并行的实现技巧

在高并发系统中,异步数据传输结合流水线并行可显著提升吞吐量。通过将任务拆分为多个阶段,并在阶段间使用异步通道传递数据,可实现无阻塞处理。
异步通道示例(Go语言)
ch := make(chan *Task, 100)
go func() {
    for task := range ch {
        process(task) // 非阻塞处理
    }
}()
该代码创建带缓冲的通道,生产者无需等待消费者,实现解耦。缓冲大小需根据负载调整,避免内存溢出。
流水线阶段划分
  • 数据采集:从外部源异步读取
  • 预处理:格式标准化与校验
  • 计算执行:核心逻辑并行处理
  • 结果汇总:异步写入存储
各阶段独立调度,利用多核并行,整体延迟下降达40%以上。

3.3 Warp级原语优化与分支发散控制实战

在GPU计算中,Warp是线程调度的基本单位。合理利用Warp级原语可显著提升执行效率,而避免分支发散则是保证性能的关键。
Warp级原语的高效使用
CUDA提供了如__shfl_sync、__ballot_sync等Warp级指令,可在32个线程间快速交换数据,避免全局内存访问开销。
__device__ int warpReduceSum(int val) {
    for (int offset = 16; offset > 0; offset /= 2)
        val += __shfl_down_sync(0xFFFFFFFF, val, offset);
    return val;
}
该函数实现Warp内求和,通过__shfl_down_sync将值逐级下移并累加,仅需5步即可完成归约。
控制分支发散
当同一Warp内线程执行不同路径时,会发生分支发散,导致串行执行。应尽量使Warp内线程走相同逻辑路径。
  • 使用__syncthreads()确保同步点前无分支
  • 通过重构条件判断,使线程束行为一致

第四章:面向1024核心的高并发编程模式与调优工具链

4.1 使用NVIDIA Nsight Compute进行Kernel级性能剖析

NVIDIA Nsight Compute是一款专为CUDA内核优化设计的性能分析工具,支持对GPU kernel执行进行细粒度度量与分析。
基本使用流程
通过命令行启动分析任务:
nv-nsight-cu-cli --metrics sm__throughput.avg.pct_of_peak_sustained_elapsed ./my_cuda_app
该命令收集SM利用率指标,帮助识别计算吞吐瓶颈。参数--metrics可指定多种预定义度量项,如内存带宽、分支发散等。
关键性能指标
  • Occupancy:线程束占用率,反映资源利用效率
  • Memory Throughput:全局内存带宽使用情况
  • Divergent Branches:分支发散程度影响SIMT执行效率
分析结果可通过GUI界面深入查看各kernel的指令级行为,结合源码定位性能热点。

4.2 利用CUDA Occupancy Calculator最大化资源利用率

CUDA Occupancy Calculator是NVIDIA提供的重要工具,用于分析和优化每个SM上活跃warp的数量,从而提升GPU资源利用率。
理解Occupancy关键因素
影响occupancy的主要因素包括每线程块的线程数、寄存器使用量以及共享内存消耗。通过合理配置这些参数,可最大化SM资源占用。
使用计算器指导内核配置
可通过CUDA提供的cudaOccupancyMaxPotentialBlockSize函数自动计算最优线程块大小:

int minGridSize, optimalBlockSize;
cudaOccupancyMaxPotentialBlockSize(&minGridSize, &optimalBlockSize, MyKernel, 0, 0);
MyKernel<<<(minGridSize + optimalBlockSize - 1) / optimalBlockSize, optimalBlockSize>>>(data);
该函数基于资源限制(如寄存器和共享内存)自动推导出能最大化occupancy的线程块大小,避免手动试错。
资源配置权衡示例
每块线程数每线程寄存器数最大占用率
2563275%
5124850%
过高寄存器使用会限制并发block数量,需在性能与资源间权衡。

4.3 多核负载均衡设计与动态并行任务调度方案

在多核处理器架构中,实现高效的负载均衡是提升系统吞吐量的关键。传统的静态任务分配易导致核心间负载不均,因此引入动态调度机制尤为必要。
任务队列与工作窃取机制
采用分布式任务队列,每个核心维护本地运行队列,避免锁竞争。当某核心空闲时,从其他核心“窃取”任务:

// 工作窃取示例:从队列尾部窃取任务
Task* steal_task(WorkerQueue* q) {
    return deque_pop_tail(&q->tasks); // 避免与本地push冲突
}
该策略减少线程争用,提升缓存局部性,适用于高并发场景。
动态调度策略对比
策略适用场景响应延迟
轮询调度任务粒度均匀中等
最短队列优先任务时长差异大低
反馈调度负载波动明显低

4.4 构建可复现的性能基准测试框架与指标体系

为确保系统性能评估的科学性与一致性,需建立标准化的基准测试框架。该框架应支持自动化执行、环境隔离与结果归档。
核心设计原则
  • 环境一致性:使用容器化技术锁定测试环境依赖
  • 输入可控:固定负载模型与数据集
  • 结果可比:统一采集时间戳、吞吐量、P99延迟等关键指标
典型指标表
指标定义采集方式
TPS每秒事务数监控代理采样
P99延迟99%请求响应时间上限日志聚合分析
func BenchmarkHTTPHandler(b *testing.B) {
    server := StartTestServer()
    defer server.Close()

    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        http.Get(server.URL + "/api/v1/data")
    }
}
该Go基准测试代码通过testing.B控制迭代次数,确保每次运行负载一致;ResetTimer排除初始化开销,提升测量精度。

第五章:未来GPU计算效率演进趋势与技术展望

架构创新推动能效边界突破
现代GPU正从单一算力堆砌转向异构集成设计。NVIDIA Hopper架构引入分片式L2缓存,显著降低内存访问延迟。AMD CDNA3采用chiplet技术,实现计算单元与I/O模块的物理分离,提升良率与扩展性。
编译优化提升实际负载性能
通过MLIR等多层中间表示框架,可对CUDA或SYCL代码进行自动向量化与内存布局重排。以下为使用LLVM Polly优化循环嵌套的示例:

#pragma clang loop vectorize(enable)
for (int i = 0; i < N; i++) {
    output[i] = input1[i] * input2[i] + bias; // 自动向量化为SIMD指令
}
光追与AI融合计算新范式
RT Core与Tensor Core协同工作,在DLSS 3.5中实现光线采样点智能预测。实测在Unreal Engine 5 Lumen场景中,帧生成时间缩短40%,同时保持PSNR > 42dB。
能效评估指标体系演进
传统FLOPS/Watt已不足以衡量真实负载效率,新增指标如下:
指标定义应用场景
Effective Throughput实际达到峰值算力的比例稀疏矩阵乘法
Memory-Boundedness Score访存延迟对性能影响权重图神经网络推理
数据中心级动态调度策略
利用Kubernetes GPU sharing + MIG切片,实现细粒度资源分配。某云服务商部署案例显示,在混合精度训练任务中,集群整体利用率从58%提升至79%。
任务到达 MIG实例匹配

相关推荐

GPU并行计算Perlin Noise地形生成:Unity Compute Shader性能实战对比

程序化内容生成(PCG)是构建动态虚拟世界的核心技术,其核心原理是通过算法(如噪声函数)自动生成游戏内容,以替代传统手工制作,实现无限、多样的场景。Perlin Noise作为PCG的基石算法,因其连续性、可重复性和分形叠加特性,被广泛用于模拟地形、云层等自然现象。在实时应用如开放世界游戏中,传统CPU串行计算海量顶点高度数据面临性能瓶颈。GPU并行计算技术,特别是通用计算(GPGPU),通过其大规模流处理器架构,将高度并行的计算任务(如每个顶点的噪声计算)分解为成千上万个并发线程执行,实现了数量级的性能提

weixin_30580341的博客 446

使用Scrapy爬取1024核工厂的磁力链接

磁力链接 使用Scrapy爬取1024核工厂的磁力链接. 主要是使用了Scrapy, Python版本3.6.8, 如果是使用3.7版本的Scrapy可能会有一点问题. 保存数据使用了MongoDB, 需要安装第三方的mongo插件, pip install pymongo

vLLM核心原理:PagedAttention与连续批处理如何提升大模型推理吞吐与显存效率

大语言模型推理面临显存碎片化与计算资源闲置双重瓶颈,其本质源于传统KV缓存的连续内存分配机制与静态批处理策略。PagedAttention通过借鉴操作系统分页思想,将KV缓存划分为可离散管理的固定大小block,并借助block table实现逻辑连续、物理分散的高效寻址,显著缓解外部碎片问题;连续批处理则动态调度不同长度请求,消除padding冗余与等待延迟。二者协同构成vLLM高性能推理引擎的技术底座,在保障生成质量前提下,大幅提升单位GPU的并发承载力与token吞吐量,广泛适用于RAG服务、高并发A

weixin_31897613的博客 335

月圆之夜,更新了一下1024客户端【强烈推荐更新】

最近,某无需翻Q的地址阵亡了,而官方和某第三方公开的最新地址又迟迟没有更新,所以决定换一个最新地址的获取来源,顺便修一下BUG。 9月28日更新内容如下: 1、使用新接口获取可用地址,解决老地址被X问题; 2、改进帖子主题列表页和评论列表页加载下一页的方式; 3、修复2个导致评论页...

chuangfankuang0896的博客 2万+

2022深度学习工作站选型:稳态架构与真实瓶颈解析

深度学习工作站并非显卡堆叠,而是CPU、内存、存储、PCIe拓扑与散热协同的系统工程。其核心原理在于构建低延迟、高带宽、零短板的数据流水线,技术价值体现在训练稳定性、长周期兼容性与量产级可复现性。典型应用场景覆盖高校AI实验室、中小AI企业推理集群及个人科研环境,尤其适用于需连续72小时FP16训练、千亿参数模型微调或TB级数据集随机加载的任务。2022年成为关键分水岭,因PyTorch原生支持CUDA Graphs、A100 80GB PCIe版实测验证消费级与专业卡工程边界,标志着工作流从‘能跑通’迈向

dengwan3818的博客 352

DeepSpeed核心技术解析:ZeRO与3D并行如何突破大模型训练瓶颈

大模型训练面临显存爆炸、通信拥塞与计算低效三大核心挑战,其本质是分布式系统中冗余数据存储、同步通信开销与硬件算力利用率不足的综合体现。DeepSpeed通过ZeRO系列显存优化协议实现梯度/参数/优化器状态的分片与卸载,结合Pipeline Parallelism和Tensor Parallelism构成的3D并行范式,重构了数据流与通信时序;再依托Fused内核与混合精度深度协同,在不牺牲收敛性的前提下提升计算确定性与吞吐。该技术栈已广泛应用于百亿至千亿参数模型的工业级训练与推理部署,显著降低GPU资源需

weixin_34112181的博客 487

1024

记录1024 哈哈哈哈哈

凤凰涅槃 1万+

AI训练GPU选型指南:显存带宽与精度支持实战解析

GPU是AI训练的核心算力载体,其性能表现远不止于显存容量或CUDA核心数量。真正决定模型能否跑通、训练是否高效的关键,在于显存带宽能否匹配数据吞吐节奏、Tensor Core对FP16/BF16/TF32/FP8等AI常用精度的原生支持程度,以及多卡通信是否具备NVLink级低延迟互联能力。这些特性直接影响PyTorch中torch.compile()启用效果、Flash Attention加速收益、QLoRA微调稳定性及vLLM推理延迟。本文基于真实训练日志与推理压测,拆解RTX 4090、A100、H

benben 373

NVIDIA CUDA全面支持RISC-V深度解析:技术原理、开发实操与生态红利

CUDA支持RISC-V的本质,是打破了"硬件架构决定软件生态"的传统桎梏,为开发者提供了"按需定制硬件+统一软件接口"的全新选择。对优快云的技术人而言,这不仅是一次工具链的升级,更是一次技术视野的拓展——未来的高性能计算,将不再是单一架构的竞争,而是开源生态与标准化算力的协同创新。此刻正是入局的最佳时机:从编译第一个CUDA-RISC-V程序开始,在边缘AI、定制化加速、车规计算等场景积累实战经验,方能在这场异构计算革命中占据先机。你准备好迎接"开源算力自由"了吗?

xianyu624的博客 1607

AI Tested Launchpad:容器化GPU云如何实现推理与微调环境一致性

AI基础设施的核心挑战从来不是算力供给,而是运行时环境的可验证性与可复现性。当模型在训练环境表现优异却在线上推理中出现延迟飙升、OOM或精度漂移,问题往往源于CUDA版本错配、驱动不兼容或框架编译差异等底层环境不确定性。容器技术由此超越部署工具角色,成为承载‘环境契约’的技术载体——通过镜像哈希固化软硬件栈、内置AI工作负载实测基准(如MLPerf Inference、HuggingFace Benchmarks),并统一推理与微调的CUDA/cuDNN/FlashAttention依赖。这种AI-Nati

weixin_30335353的博客 449

H100超算工厂:10万卡GPU的算力操作系统实战解析

GPU超算并非简单堆叠硬件,而是融合物理层散热供电、链路层InfiniBand拓扑、软件层NCCL与PyTorch调度的全栈协同系统。H100作为可编程计算单元阵列,其FP8张量核心与NVLink高带宽设计重新定义了AI训练基础设施的技术边界;而Grok 3的混合专家架构则倒逼出‘零等待网络’‘权重预加载’‘故障域隔离’等工程范式升级。当前行业正从PCIe通用服务器转向H100 NVL液冷专用算力单元,对CUDA底层优化、PTX汇编能力及全栈协同效率提出前所未有的复合要求。

aigui1439的博客 527

CUDA矩阵乘法优化实战:从内存模型到性能调优

矩阵乘法是深度学习和科学计算的核心运算,其性能直接决定了模型训练和数值模拟的效率。其基本原理是将两个矩阵的元素按特定规则相乘并求和。在传统CPU串行计算难以应对海量数据时,GPU并行计算技术成为关键突破。CUDA作为主流的GPU编程模型,通过将计算任务映射到成千上万个线程,并利用其多层次内存体系(全局内存、共享内存)来隐藏延迟、提升带宽,从而实现数十至数百倍的加速。这项技术的核心价值在于为人工智能、物理模拟等需要处理大规模稠密或稀疏矩阵运算的场景提供了底层加速支持。本文以矩阵乘法为具体案例,深入剖析如何通过

weixin_33805743的博客 468

Kimi K2.5多模态本地部署:GPU显存带宽优化实战指南

多模态视觉语言模型(VLM)的本地推理已从‘能否加载’迈入‘如何榨干GPU显存带宽’的新阶段。其核心原理在于视觉编码器与文本解码器对显存的双重刚性占用,叠加CUDA Graph、NCCL缓冲和KV缓存调度引发的隐性内存竞争。技术价值体现在突破消费级GPU(如RTX 4050/4060)的4–8GB显存墙,实现稳定低延迟服务;典型应用场景涵盖教育AI、边缘智能终端及私有化多模态API网关。本文聚焦Kimi K2.5在真实硬件上的端到端落地,深度解析CUDA版本锁死、vLLM结构适配与NeMo Guardrai

cumo3681的博客 632

CUDA Graphs与INT4量化协同优化LLM单token推理性能

大语言模型(LLM)推理中的单token解码性能,本质是计算、访存与调度三重瓶颈的耦合问题。CUDA Graphs通过消除CPU端动态调度开销,将kernel launch延迟降至微秒级;INT4量化则以‘用计算换带宽’重构内存访问模式,显著压缩权重体积并提升L2缓存命中率。二者协同并非简单叠加,而是在SM占用率、缓存局部性与执行确定性层面产生乘法效应,尤其在A100/H100等现代GPU上可使首token延迟降低超60%、单token吞吐翻倍。该技术组合已深度集成于vLLM、TGI等主流推理引擎,成为金融

weixin_33811539的博客 500

EVO-X5 Pro:模块化AI超算中心深度解析

AI推理硬件正从通用PC架构转向专用化、确定性、可运维的新型范式。随着大模型本地化部署需求激增,传统工作站面临PCIe带宽争抢、散热功耗失衡、固件层调度缺失等结构性瓶颈。极摩客EVO-X5 Pro以‘计算即插件’理念重构硬件拓扑,通过模块化设计、X-Link统一地址空间协议与X-OS实时调度内核,实现H100级算力的热插拔管理与TensorRT-LLM/vLLM等主流框架原生支持。其核心价值在于将AI工作流从‘环境适配难题’升级为‘服务化交付能力’,显著降低算法工程师与产线人员的使用门槛,适用于工业质检、医

weixin_42624889的博客 219

2048基站

2048基站

K2.5深度解析:面向长文本高并发的PagedAttention推理优化实践

大模型推理性能瓶颈常源于KV缓存管理低效与调度协议僵化,尤其在百页PDF解析、万级用户RAG等长上下文高并发场景下,传统静态batching和固定显存分配导致GPU利用率塌方、P99延迟飙升。PagedAttention通过分块内存管理和虚拟地址映射,显著缓解显存碎片与padding计算浪费;而K2.5进一步将其与硅基流动深度耦合,实现动态slab分配、流式二进制响应与RoPE硬件协同优化。该方案不依赖vLLM等通用框架,专注私有化异构GPU环境下的可维护性与确定性性能,适用于已部署A100/H100集群的

weixin_34187862的博客 437

1024和2048位RSA IP核

关于RSA IP核的设计方法,1024位和2048位IP的设计方法

上一篇: 从入门到精通Vue3组件封装,你必须掌握的7个关键步骤
下一篇: 为什么顶尖Go开发者都在用slices泛型?1024行代码背后的复用哲学
quickcode
博客等级 码龄19年 146粉丝 1996原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值