- 博客(190)
- 资源 (1)
- 收藏
- 关注
原创 GPU P2P 数据传输机制详解
P2P传输机制分析 P2P(Peer-to-Peer)传输确实可以绕过CPU,但具体路径不仅限于PCIe。关键区别在于: 有P2P支持时: 数据直接在GPU间通过DMA传输 不经过CPU内存或CPU参与 仅需一次拷贝 支持PCIe或专用互连(如AMD的XGMI) 无P2P支持时: 必须通过CPU内存中转 需要两次DMA拷贝(GPU→CPU→GPU) 性能显著下降(带宽<10GB/s vs XGMI的200-400GB/s) 仍由GPU DMA引擎完成传输,CPU仅提供内存空间 实际传输路径可能是PCI
2025-11-28 07:00:00
914
原创 ROCm P2P 能力确定机制分析
本文分析了ROCm中GPU间P2P(Peer-to-Peer)访问能力的判定机制。P2P能力判断通过HIP API层发起,最终依赖设备初始化时构建的p2pDevices_列表。该列表基于HSA层对内存池访问权限的查询结果,其中HSA_AMD_MEMORY_POOL_ACCESS_ALLOWED_BY_DEFAULT和DISALLOWED_BY_DEFAULT表示支持P2P访问。底层硬件拓扑信息通过KFD驱动从系统文件中获取,XGMI/PCIe等链路类型直接影响P2P性能。
2025-11-28 06:45:00
709
原创 rocm_bandwidth_test中TB传输完成检测机制详细分析
TransferBench采用多执行器检测机制:CPU执行器通过std::thread::join()同步线程并记录CPU时间;GPU GFX执行器使用HIP Events、流同步和内核时间戳三重检测;GPU DMA执行器依赖HIP Events或HSA Signals;NIC执行器通过InfiniBand完成队列轮询。每种机制针对不同硬件特性优化,确保传输完成的精确检测和计时。
2025-11-28 06:45:00
501
原创 linux dmidecode 命令使用指南
dmidecode命令解析SMBIOS/DMI数据获取硬件信息,适用于主板、BIOS、内存等设备检测。基本语法为sudo dmidecode -t baseboard,输出包含制造商、型号、版本号等关键数据。该工具主要用于硬件识别验证、资产管理、驱动适配、系统兼容性检查及故障诊断等场景,如获取主板序列号、验证内存支持、排查设备冲突等。典型应用包括企业IT资产追踪、驱动安装适配和硬件兼容性验证,是Linux系统下重要的硬件信息查询工具。
2025-11-27 11:16:16
491
原创 AMD rocr-libhsakmt分析系列1-1: GPU互联IOLink 检测分析
本文介绍了topology_take_snapshot函数中IOLink检测的实现细节。IOLink表示系统节点间的互联通道,通过HsaIoLinkProperties结构体存储链接类型、节点ID、性能参数等属性。检测流程首先从sysfs读取物理链接信息,包括普通IO链接和P2P链接,并过滤不可访问的节点。对于没有直连的GPU节点,还会创建间接链接。该机制采用分层策略,确保完整构建系统拓扑结构,为数据传输路径选择提供依据。
2025-11-27 07:00:00
790
原创 rocm_bandwidth_test中的TransferBench (TB) 插件实现分析
ROCm Bandwidth Test 核心引擎 TransferBench 架构解析 TransferBench (TB) 1.60 是 ROCm Bandwidth Test (RBT) 的核心带宽测试引擎,采用插件化架构集成。系统由插件封装层和核心实现层组成,通过 plugin_main_entry 桥接原有可执行程序功能。核心执行流程包括环境配置收集、参数解析、测试运行和结果处理。关键 API 提供传输配置解析、内存分配、执行器管理等功能,支持多种内存类型(CPU/GPU/统一内存)和执行器类型(C
2025-11-27 06:30:00
663
原创 rocm-smi 参数完整说明
rocm-smi 工具参数摘要 本文档全面整理了rocm-smi工具的关键参数,涵盖: 基础信息:硬件详情、驱动版本、序列号等 监控功能:温度、风扇、功耗实时监测 频率管理:核心/显存频率查看与设置 性能分析:使用率、显存占用、进程监控 拓扑结构:GPU互联、NUMA节点、P2P通信 PCIe相关:带宽、链路质量检测 调优选项:性能级别设置、超频、功耗控制 包含常用命令示例,如rocm-smi -a显示完整信息,--showtopo查看拓扑结构,--setperflevel调整性能模式等。
2025-11-26 14:42:58
740
原创 rocm-smi 查看 GPU 间链路的方法
本文详细介绍了使用rocm-smi工具检查AMD GPU拓扑结构的各种命令和解读方法。主要内容包括:1) 6个关键命令(显示完整拓扑、P2P访问性、权重、跳数、链路类型和NUMA信息)的使用说明;2) 输出结果的详细解读指南;3) 针对RX 7900 GRE显卡的特定分析,指出其不支持GPU间P2P访问的硬件限制;4) 提供了组合诊断脚本和快速参考表格。文章通过对比消费级和专业级GPU的差异,帮助用户全面了解系统拓扑特性及性能限制。
2025-11-26 14:12:10
722
原创 VirtIO GPU Virgl 架构技术文档
本文档详细介绍了QEMU中VirtIO GPU设备的架构设计,重点分析Virgl 3D渲染加速的实现机制。VirtIO GPU作为半虚拟化图形设备,允许虚拟机利用宿主机GPU资源进行2D/3D图形渲染。文档从目录结构入手,展示了核心文件分布,包括VirtIO框架层(virtio.c)、GPU基类(virtio-gpu-base.c)、2D功能(virtio-gpu.c)和3D加速(virtio-gpu-virgl.c)等组件。重点剖析了3D加速核心模块,包括资源管理生命周期、Blob资源新特性、3D上下文创
2025-11-26 06:45:00
1776
原创 ROCm Bandwidth Test (RBT-NG) 测试原理
ROCm Bandwidth Test (RBT-NG)是下一代带宽测试工具,采用模块化插件架构,基于TransferBench引擎。核心特点包括:1)支持多种执行单元(CPU/GPU GFX/GPU DMA/NIC);2)灵活的内存类型组合;3)精确的纳秒级测量。测试以Transfer为基本单元,支持memset、单源复制和多源累加操作。其中GPU GFX执行器采用向量化访问和循环展开优化,支持6种Wavefront排序模式;GPU DMA执行器利用SDMA引擎实现零计算开销传输;NIC执行器基于RDMA
2025-11-25 13:53:08
601
原创 ROCm Bandwidth Test的测试用法
ROCmBandwidthTest(RBT-NG)是AMD平台的带宽测试工具,用于测量CPU-GPU和GPU-GPU间的传输性能。支持Makefile/CMake安装,需配置PATH和LD_LIBRARY_PATH环境变量。通过插件架构实现核心功能,内置tb插件可执行单向/双向复制测试,支持PCIe信息查询和多设备组合测试。工具提供CPU-GPU、GPU-GPU及多线程测试场景,并允许通过自定义插件扩展功能。典型命令包括查看帮助(--help)、运行插件(plugin--run)和显示设备拓扑(-e)。该工
2025-11-25 11:34:14
647
原创 AMD rocr-libhsakmt分析系列1-1:多GPU系统中跨卡VRAM访问机制深度分析
本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。
2025-11-24 06:30:00
1183
原创 Virglrenderer 项目演变趋势分析报告
Virglrenderer项目从单一OpenGL虚拟化解决方案发展为支持多种虚拟化技术的平台。报告梳理了其发展历程:2014-2017年专注于OpenGL虚拟化,2018年后逐步引入Vulkan、DRM原生渲染器等新功能,2023年开始支持AMD ROCm/HSA计算虚拟化。当前架构已支持5种渲染器,涵盖图形渲染、视频加速和GPGPU计算。未来趋势包括:1)计算虚拟化成为主流,特别是AI/ML场景;2)扩展硬件支持范围;3)优化云原生集成。该项目正从图形虚拟化平台向通用GPU虚拟化基础设施演进。
2025-11-24 06:15:00
888
1
原创 Guest → QEMU → Virglrenderer 调用逻辑分析
本文分析虚拟机图形加速的完整调用链路:从 Guest OS 中的应用程序发起图形请求,经过 virtio-gpu 驱动、QEMU 虚拟机管理器,最终到达 virglrenderer 库执行实际渲染的全过程。// QEMU 上下文// 子系统初始化标志} state;↓Mesa Driver (编码 VIRGL 命令)↓Kernel virtio-gpu (virtqueue 传输)↓↓Virglrenderer Library (路由到具体渲染器)↓↓ ↓ ↓。
2025-11-22 11:28:05
723
原创 Linux 查看运行进程依赖 SO 库位置的方法
摘要:Linux系统中查看进程关联SO库的4种方法:1)ldd静态分析可执行文件依赖,但无法检测动态加载库;2)/proc文件系统(maps/smaps)提供运行进程的完整SO映射,准确性最高;3)pldd工具简洁输出运行进程的SO列表;4)lsof通过文件描述符查找,支持反向追踪SO使用情况。推荐:动态加载库用/proc/maps,快速查看用pldd,静态分析用ldd。各方法互补,需根据场景选择。(149字)
2025-11-20 11:27:14
826
原创 linux gdb调试常用命令手册
摘要:GDB是Linux下强大的程序调试工具,提供启动程序、断点设置、变量查看等核心功能。常用命令分为5类:1)基础启动与退出(gdb/run/quit);2)断点与观察点操作(break/watch);3)代码单步执行(next/step);4)数据查看修改(print/set);5)辅助命令(help/shell)。这些命令配合使用可精准定位程序问题,提高调试效率。每个命令提供缩写和示例,如"b main"在main函数设断点,"p/x num"十六进制显示变量值
2025-11-20 10:45:33
719
原创 Virtio 官方标准设备驱动清单
Virtio设备驱动标准清单与规范说明 本文提供了Virtio官方支持的设备驱动完整清单,包含网络(virtio-net)、存储(virtio-block)、控制台(virtio-console)等20余种设备,详细列出ID编号与核心功能。所有驱动均通过virtio核心层管理,采用共享内存(vring)实现高效数据传输,支持多队列和特性协商机制。同时提供了OASIS官方标准文档(最新v1.3)、Linux内核开发文档及Windows驱动的权威获取渠道。特别强调OASIS Virtio技术委员会是唯一官方标准
2025-11-20 09:59:40
600
原创 Linux Virtio 子系统核心数据结构解析
本文深入分析Virtio虚拟化通信的六大核心数据结构:virtio_bus作为总线基础,virtio_device封装设备属性,virtio_driver实现设备驱动,virtqueue作为通信队列抽象,vring定义队列内存布局,vring_virtqueue提供队列具体实现。这些结构通过层级关系协作,virtio_bus管理设备驱动匹配,virtio_device关联多个virtqueue,最终由vring实现共享内存通信。文章详细解析了每个结构的定义、功能及相互关系,揭示了Virtio高效通信的设计逻
2025-11-20 09:45:00
1088
原创 Virglrenderer Tests测试功能分析
Virglrenderer Tests是直接针对virglrenderer库API的单元测试集合,而非与vtest_server配合的客户端测试。该测试套件使用Check框架,通过直接调用libvirglrenderer的API进行功能验证,包括资源管理、命令编码、渲染流程等核心功能。主要测试模块涵盖初始化、资源处理、渲染命令、数据传输等方面,采用内存测试方式无需外部服务器。测试代码包含基础设施组件、命令编码模块和多个专项测试文件,通过工具函数构建虚拟渲染环境来验证API的正确性。
2025-11-19 10:48:25
552
原创 VTest Server 详细用法分析
摘要:virgl_test_server是用于测试virglrenderer GPU虚拟化的工具,采用C/S架构,支持多种渲染后端配置。服务器通过Unix socket与客户端通信,提供单进程、多客户端等运行模式,支持GLX、EGL、OpenGL ES等渲染后端,并可通过命令行参数或环境变量进行配置。通信采用自定义二进制协议,包含资源管理、数据传输等基础命令和扩展功能。
2025-11-19 10:16:21
1151
原创 virgl_test_server vs virgl_render_server 详细对比分析
virglrenderer项目包含两个主要服务器组件:virgl_test_server和virgl_render_server,它们在设计目标和架构上存在明显差异。virgl_test_server是面向开发测试的轻量级组件,采用单进程模型和简单的请求-响应通信协议,适用于快速验证功能。而virgl_render_server是为生产环境设计的安全渲染服务,采用多进程隔离架构,支持SOCK_SEQPACKET协议,并集成Seccomp沙箱、权限隔离等安全机制。两者在通信协议、进程模型、安全特性、配置选项等
2025-11-19 09:49:11
716
原创 update-initramfs -u没有更新自编译内核的解决方法
摘要:update-initramfs-u是Debian/Ubuntu系统中更新initramfs镜像的工具,但默认仅针对当前运行的内核版本操作。当编译安装新内核后,若不满足以下条件会导致更新失败:新内核未启动运行、内核镜像或模块目录缺失、未显式指定版本号。解决方法包括:1)确认/boot和/lib/modules下的内核文件完整;2)使用-k选项明确指定新内核版本执行更新;3)验证生成的新initramfs镜像。建议编译后使用make install自动完成安装配置,避免手动操作失误。
2025-11-18 15:51:53
740
原创 virtio_gpu_get_caps_ioctl 函数功能分析
virtio_gpu_get_caps_ioctl是virtio GPU驱动中处理获取设备能力集的ioctl函数。该函数通过用户空间传入的cap_set_id和cap_set_ver参数,在设备支持的能力集中查找匹配项,优先检查缓存,若未命中则向硬件查询,最终将数据复制到用户空间缓冲区。关键执行步骤包括参数验证、能力集查找、缓存检查、硬件查询(含5秒超时等待)和数据复制。函数返回0表示成功,错误时返回-ENOSYS、-EINVAL等错误码。该功能主要用于图形API驱动查询GPU支持的特性和功能集。
2025-11-18 14:08:10
305
原创 第5章:并发与竞态条件-10:The Spinlock Functions
本文介绍了Linux内核中的读写自旋锁机制(rwlock_t)。读写自旋锁允许多个读线程同时进入临界区,但写线程必须独占访问。文章详细说明了其初始化方法、相关的读写操作函数(包括带中断控制的变体),并强调函数必须严格配对使用。与读写信号量相比,读写自旋锁适用于中断上下文且性能更高,但不支持读非阻塞操作(read_trylock)。作者指出该机制适用于读多写少、临界区短的场景,但频繁写操作可能导致读线程饥饿,此时应改用其他同步机制。文中还通过对比表格清晰展示了读写自旋锁与读写信号量的核心差异。
2025-11-18 06:45:00
674
原创 Xen PVH 模式虚拟机配置说明文档
本文介绍了基于Xen虚拟化平台创建PVH(Para-Virtualized Hardware)模式Linux虚拟机的配置文件解析。PVH模式结合了PV的高性能和HVM的硬件辅助优势,具有快速启动、轻量化开销和支持virtio设备等特点,特别适用于图形应用等需要硬件资源访问的场景。文章详细解析了基础配置、内核启动、资源分配、网络存储、图形输入等参数设置,包括虚拟化类型声明、内存和vCPU分配、网络桥接、磁盘格式选择以及图形加速配置要点。
2025-11-18 06:15:00
1538
原创 第5章:并发与竞态条件-9:The Spinlock Functions
摘要:本文详细介绍了Linux内核中的自旋锁API,包括4种获取锁的函数(spin_lock、spin_lock_irqsave、spin_lock_irq、spin_lock_bh)及其对应的释放函数。这些函数的主要区别在于是否禁用中断及禁用范围,适用于不同上下文场景(进程/硬件中断/软中断)。文章强调函数必须严格配对使用,并解释了非阻塞函数(spin_trylock)和flags参数的正确用法。最后指出自旋锁的中断禁用仅作用于本地CPU,不影响系统整体并发性。
2025-11-17 06:45:00
1244
原创 第5章:并发与竞态条件-8:Introduction to the Spinlock API
摘要:本文介绍了Linux内核中自旋锁(Spinlock)的基本API和使用规则。自旋锁通过spinlock_t类型实现,使用前需初始化,获取和释放分别通过spin_lock()和spin_unlock()完成。核心使用规则包括:必须处于原子上下文、不能睡眠或放弃处理器、需禁用本地CPU中断、持有时间应尽可能短。文章还分析了潜在风险场景,如中断处理程序中的死锁问题,并给出了优化建议:临界区仅包含必要操作、避免调用可能睡眠的函数、将耗时任务移出锁外执行。这些规则对编写正确高效的内核驱动至关重要。
2025-11-17 06:15:00
1199
原创 专栏介绍:AMD KFD BO设计深度剖析——解锁GPU存储核心技术
其实这整个专栏,都是我自己探索AMD KFD BO设计的学习总结与梳理。从BO的基础概念、CPU/GPU/DMA的地址映射逻辑,到VA/PA的管理框架,再到GEM与TTM的关联原理,每一篇内容都是我啃代码、理脉络的真实记录。因为是个人学习所得,难免会有理解不到位、表述不精准的地方,特别欢迎大家在评论区或GPUers社区里多多指正。不管你是刚接触GPU存储技术的新手,还是有实战经验的开发前辈,都希望能和大家一起交流探讨、互相补坑,慢慢把这门技术学明白、学扎实。
2025-11-14 16:36:02
316
原创 第5章:并发与竞态条件-7:Spinlocks
本文介绍了Linux内核中的自旋锁机制。与信号量不同,自旋锁通过忙循环实现互斥,适用于不可睡眠场景(如中断处理程序)。其本质是一个二值状态(锁定/未锁定)的原子操作,在争用情况下会循环检测锁状态。文章详细分析了自旋锁的特性:多处理器系统中性能优势明显,但在单处理器系统中需要特殊优化;使用时需遵循"临界区短、禁用抢占、必要时屏蔽中断"等原则;特别强调持有自旋锁时不可睡眠,否则会导致CPU资源浪费甚至死锁。此外,对比了自旋锁与信号量在等待方式、适用场景和性能等方面的关键差异。
2025-11-14 06:45:00
980
原创 番外篇:DRM 子系统 —专业解说版
本文深入解析了DRM子系统在GPU存储管理中的核心机制。通过drm_mm、drm_vma_offset_manager和TTM三大组件的协同工作,实现了"逻辑地址-虚拟地址-物理地址"的三层映射体系:drm_mm为每个进程提供独立的逻辑存储空间,drm_vma_offset_manager解决设备文件的mmap映射问题,TTM则负责物理资源的延迟分配与缺页处理。这种设计既保证了进程使用GPU存储的便捷性,又实现了系统对物理资源的全局管控,为多进程场景下的GPU存储访问提供了高效、安全的解
2025-11-14 06:30:00
176
原创 番外篇:戏说 DRM 子系统 —显存租房那些事儿
摘要:DRM子系统通过drm_mm为每个进程提供“虚拟逻辑空间”,让进程误以为独占GPU存储资源。drm_vma_offset_manager为GPU缓冲区分配唯一逻辑地址作为mmap偏移量,实现精准映射。用户态首次访问虚拟地址时触发缺页异常,由TTM动态分配物理内存/显存并建立地址映射。这套机制通过逻辑空间抽象和延迟分配策略,协调多进程、多硬件对GPU存储的共享访问,同时为进程提供简洁的“独占式”使用体验,形成完整的管理闭环。(149字)
2025-11-14 06:15:00
209
原创 第5章:并发与竞态条件-6:Completions
本文探讨了内核编程中并发任务同步的两种机制——信号量与完成量的差异。信号量虽通用但不适合任务完成通知场景,因其针对"可用状态"优化且存在自动变量销毁风险。完成量作为轻量级替代方案,专门用于线程间任务完成通知,提供wait_for_completion()等待和complete()唤醒机制,避免信号量的性能缺陷和竞态风险。文章通过模块示例展示了完成量的典型应用,并指出其核心优势在于简单高效的"单通知-单等待"场景实现,以及相比信号量更适用于模块退出时的线程终止同步。同时
2025-11-13 06:45:00
551
原创 第5章:并发与竞态条件-5:Reader/Writer Semaphores
摘要:Linux内核的读写信号量(rwsem)允许多个读线程并发访问,但写线程独占访问,适用于读多写少的场景。rwsem提供专门的读/写接口:down_read/up_read实现并发读访问,down_write/up_write实现排他写访问,downgrade_write可将写锁降级为读锁。其特性包括写线程优先级(可能造成读线程饥饿),适合写操作短暂且不频繁的情况。相比普通信号量,rwsem提升了读并发性能,但现代内核提供了更优化的同步机制如seqlock等。(150字)
2025-11-13 06:15:00
951
原创 linux drm子系统专栏介绍
本专栏系统解析Linux内核DRM图形子系统的核心技术,涵盖GEM对象管理、TTM内存机制、DRM-Fence同步等核心模块,深入剖析DMA-BUF共享、DMA_Resv资源管理等关键技术。通过解读内核源码与用户态接口(libdrm),结合进程管理、匿名inode等底层机制,构建完整的DRM知识体系。专栏兼顾深度与易懂性,辅以实际应用场景分析,既适合图形驱动开发新手入门,也可满足资深工程师进阶需求,帮助读者掌握从内核实现到应用开发的全栈知识。
2025-11-12 19:12:16
975
原创 Xen PVH 模式启动 Dom0 配置文档
本文介绍了Xen虚拟化中PVH(Paravirtualized Hardware)模式的技术原理及其在Dom0(控制域)中的应用。PVH模式结合了半虚拟化(PV)的性能优势和硬件辅助虚拟化(HVM)的隔离性,通过利用硬件虚拟化技术实现CPU和内存隔离,同时保留PV风格的设备驱动模型。文章详细阐述了PVH Dom0的配置步骤,包括硬件要求、软件版本、Grub引导配置及验证方法,并提供了常见问题的解决方案。相比传统模式,PVH Dom0在性能、安全性和兼容性方面表现更优,是生产环境中虚拟化部署的理想选择。
2025-11-12 18:55:34
911
原创 虚拟化hypervisor:Xen简介
摘要:Xen是一款开源的裸金属虚拟化hypervisor,其核心是直接运行在硬件上的xen内核,负责CPU调度、内存虚拟化等基础功能。Xen系统包含多个关键组件:Domain0作为特权控制域,包含xenstore、libxl管理库和xl命令行工具;DomainU客户机通过PV驱动或HVM辅助工具运行;设备虚拟化采用前端/后端驱动模式。此外还提供xentop监控、xen-cpupool资源管理等辅助工具,构成完整的虚拟化生态体系。Xen通过这种分层架构实现高效的资源管理和虚拟机运行。
2025-11-12 14:27:05
979
原创 QEMU 使用 Open vSwitch网桥连接虚拟机网络
摘要:本文介绍了在QEMU虚拟机中使用OpenvSwitch(OVS)网桥连接网络的配置方法。主要内容包括:1)通过创建TAP设备并将其添加到OVS网桥实现网络连接;2)详细说明QEMU启动参数配置,包括-netdev和-device选项绑定TAP设备;3)提供自动化脚本方案简化TAP设备管理;4)列举常见问题及解决方法。该配置使虚拟机可接入复杂网络拓扑,支持VLAN隔离和流量控制等功能,适用于需要灵活网络管理的虚拟化环境。
2025-11-11 17:06:22
579
原创 使用 Open vSwitch 搭建虚拟机与主机网络网桥的操作指南
本文档详细介绍了在Linux系统中使用OpenvSwitch(OVS)搭建网桥的完整方案。该方案支持虚拟机与主机、外部网络的互联,适用于KVM/Xen等虚拟化平台。主要内容包括:1)环境要求与原理说明;2)安装OVS及相关工具;3)配置网络接口实现持久化;4)创建OVS网桥并绑定物理网卡;5)激活接口获取IP地址。方案具有配置灵活、性能稳定等特点,通过修改interfaces文件和OVS命令即可完成部署,重启后配置仍有效。最终通过ping测试验证网络连通性。
2025-11-11 16:45:23
778
原创 使用qemu制作linux系统虚拟机
摘要:QEMU镜像制作主要有两种方式:1)创建空白镜像,使用qemu-img工具生成qcow2或raw格式镜像,通过ISO安装系统;2)基于现有文件生成镜像,先创建raw镜像并格式化为ext4等文件系统,挂载后复制文件。qcow2格式推荐日常使用,支持动态扩容和快照。制作可启动镜像需准备内核、根文件系统和initramfs。常用管理命令包括查看信息、扩容和创建快照。注意权限问题,嵌入式场景需确保内核与镜像兼容。
2025-11-11 15:49:40
570
原创 ROCm HSAKMT pthread_atfork 回调函数技术分析
ROCm HSAKMT的pthread_atfork回调机制是保证多进程环境下GPU资源安全的关键设计。该系统通过prepare_fork_handler、parent_fork_handler和child_fork_handler三个函数,在fork操作前后分别执行互斥锁保护、父进程解锁和子进程资源重置。其核心创新在于双重fork检测机制(标志位+PID比较)和系统化的资源清理策略,有效解决了GPU资源继承、互斥锁状态一致性和内存隔离等复杂问题。该设计在确保线程安全的同时,通过延迟初始化等优化手段最小化了
2025-11-10 13:50:59
38
嵌入式Linux系统中DMA缓冲区共享机制介绍:基于dma-buf API实现跨设备内存共享的技术框架与应用流程
2025-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅