自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 MFEM 4.9:ParNCMesh 幽灵层、`ParFiniteElementSpace` 与 `GroupCommunicator` 源码实现分析

幽灵单元(ghost elements)ParNCMesh在并行 NC 网格中维护邻接幽灵单元层,但由 NCMesh 生成的Mesh不会把这些单元当作普通体单元枚举;幽灵层主要用于非协调约束与 DOF 归属判断。见中说明(约第 38–47 行)。与直接相关的自由度:NC 情形下明确不把 ghost 单元内部的 bubble DOF计入ngdofs;幽灵层贡献的是幽灵顶点 / 边 / 面上的 DOF,它们被顺序排在本地ndofs之后,并通过等与等阈值比较来区分“真实 vs 幽灵”实体下标。

2026-05-06 17:56:26 252

原创 MFEM 4.9:`ParBilinearForm::Assemble`、GPU 内存惰性与 `HypreParMatrix` 构造的源码级分析

内部维护了一个全局的内存注册表,通过和的双指针模型实现 host/device 数据同步。Read()Write()方法通过valid_host标志位实现惰性同步(lazy synchronization)。然而,在 MPI 通信中,的共享自由度交换需要访问 host 端数据。请分析:如果在 GPU 后端下,一次后立即调用的构造,valid_host标志的翻转是否会触发一次完整的 device-to-host 回传?这种回传与 MPI 的异步通信模型(MPI_IrecvMPI_Isend)是否存在时序冲突。

2026-05-04 12:51:57 359

原创 有限元库MFEM 4.9:MemoryClass内存管理报告

*(实现为std::max)描述的是“抽象访问类别”的比较闭包,用于例如算子组合的为新向量选择等;它不会在调用operator*的瞬间触发任何memcpy/CUDAcudaMemcpy类传输。传输发生在 Memory::ReadReadWriteWrite经由 MemoryManager::Read_→GetHostPtr的路径上(见 §4)。在枚举顺序下,HOST * DEVICE = DEVICE。与分别属于 MemoryClass::HOST与 MemoryClass::DEVICE。

2026-05-03 16:58:29 389

原创 Open MPI 进程 Communicator 封装与 `MPI_Comm_dup` 实现剖析

Open MPI 将进程 communicator封装为 C 结构体 ompi_communicator_t,通过OPAL 对象系统分配/析构,并在 ompi_comm_set*→→三阶段完成组与元数据复制全局 CID/索引协商PML 挂接与 coll 模块选择。标准 MPI_Comm_dup入口在 ompi/mpi/c/comm_dup.c,核心逻辑在 ompi/communicator/comm.c与 ompi/communicator/comm_cid.c。本仓库无。

2026-04-19 17:51:03 185

原创 Kokkos `m_scratch_locks` 与 `cuda_get_scratch_index` 无锁 Scratch 空间分配深度分析

在 Kokkos CUDA 后端中,TeamPolicy的 Level-1 scratch 内存(全局内存,非共享内存)需要在多个并发执行的线程块(team)之间进行分配与复用。由于 GPU 上可能有远多于物理 scratch 槽位的并发 team,Kokkos 使用数组配合atomicCAS操作实现了一种无锁(lock-free)的 scratch 空间索引分配机制。修改// 极端竞争:league_size >> wraparound_len// 大量 team。

2026-04-17 19:40:19 382

原创 Kokkos CUDA 后端 TeamVectorMDRange parallel_reduce 源码深度分析报告

是 Kokkos 提供的三种 Team 级多维 Range Policy 之一,用于在 CUDA GPU 上将多维嵌套循环同时映射到thread 并行blockDim.y维度)和vector 并行blockDim.x维度)。当用户在TeamPolicykernel 内部调用递归嵌套展开阶段通过递归处理 N 层嵌套,中间层使用并行迭代,末级层直接调用用户 lambda 并将结果累加到val。vector 归约阶段:在 CUDA/HIP/SYCL 后端,调用,通过 warp shuffle (

2026-04-17 17:19:54 425

原创 Kokkos SharedAllocationRecord CUDA 后端实现深度分析报告

是 Kokkos 内存管理的核心基础设施,负责跟踪所有通过View等高层抽象分配的共享内存。在 CUDA 后端中,它需要处理三种不同的内存空间(CudaSpace),其中CudaSpace是 GPU 设备内存,主机不可直接访问,因此使用了特殊的基类。文件作用核心模板定义:基类、宏、Tracker基类非内联实现:increment/decrement/构造/查找CRTP 基类模板显式实例化实现CUDA 内存空间定义 + 宏特化。

2026-04-16 17:11:35 401

原创 SpyGlass 启动报错 undefined symbol: sysvSktSrvMethod 的解决方案

问题:SpyGlass 启动报。陷阱:直接设置LD_PRELOAD无效,因为会被工具内部的启动脚本unset掉。正解:使用官方预留的环境变量 SPYGLASS_LD_PRELOAD。它专门用于穿透环境清洗机制,将补丁库(libdl.so.2和libnsys.so)安全地传递给核心程序。这样修改既正规又安全,不会影响到同服务器上运行的其他 EDA 工具(如 VCS、Verdi),是完美的解决方案。

2026-01-28 15:41:30 604

原创 [故障排查] Linux 下 Gedit 命令无反应?从 strace 日志读懂“僵尸进程”的沉默

Linux 下很多“静默失败”其实是程序逻辑上的“成功退出”。strace中的意味着程序逻辑走完了。如果没达到预期结果,说明它的逻辑(比如委托给其他进程)出了问题,而不是代码本身的 Crash。诸如 Gedit, Firefox, Chrome, VSCode 等现代 GUI 软件,大多默认采用单实例模式。遇到“打不开且不报错”的情况,90% 都是后台卡死了一个旧进程。

2025-12-16 15:39:53 1138

原创 Python 与 C Shell (csh) 交互踩坑指南:Environment Modules 消失与 eval 死锁

调用系统环境工具:尽量寻找底层的二进制入口(如modulecmd),避免依赖 Shell 的交互式特性(如 Alias)。构建交互式胶水脚本:永远记得stdout是给程序读的,stderr是给用户看的。当你的脚本被管道或eval包裹时,请务必使用stderr来打印交互提示。

2025-12-12 10:09:40 881

原创 [实战记录] 解决 Docker GUI 程序在无显卡服务器上崩溃的终极指南 (Qt5 + VNC + OpenROAD)

摘要: 针对Docker GUI容器在RHEL7.9服务器(无GPU/VNC显示)中崩溃的问题,分析发现根源在于X11协议通信、软渲染模式及线程栈限制的差异。通过禁用MIT-SHM共享内存(QT_XCB_NO_MITSHM=1)、强制软件渲染(LIBGL_ALWAYS_SOFTWARE=1)、增大线程栈(--ulimit stack=64MB)及优化Qt绘图参数(如禁用ARGB透明通道),最终实现稳定运行。关键配置解决了远程X11环境下的内存竞争、渲染崩溃及栈溢出问题,适用于无显卡服务器的GUI容器化部署。

2025-12-08 14:03:13 685

原创 X11找不到DISPLAY排查之ss -lntp | grep 6000可能没有打开tcp监听

摘要:X11显示错误"Can't open display:master:0"通常是由于Master节点的XServer未开启TCP监听或防火墙阻挡端口6000。可通过netstat -nolp | grep 6000检查监听状态,若未开启需修改GDM配置或使用SSH隧道转发。防火墙问题可用firewall-cmd临时开放端口。建议优先采用SSH X11转发方案,无需root权限且更安全。验证网络连通性可用nc -v -z master 6000测试。

2025-11-27 10:00:56 378

原创 Linux bsub提交远程GUI作业有时候X11转发显示can‘t open DISPLAY解决方案

运行echo $DISPLAY记下冒号后的数字,然后加上6000得到套接字监听端口然后ss -lntp | grep ‘:6018’,这里表示列出当前系统上所有正在监听 (-l) 的 TCP (-t) 套接字,用数字格式 (-n) 显示它们的地址和端口,并告诉我分别是由哪个进程 (-p) 在使用它们。sudo vim /etc/ssh/sshd_config并且找到X11UseLocalhost 这一行。然后重新登录SSH会话,再次用bsub提交的时候可能要xhost +

2025-11-18 13:55:50 302

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除