openmpi[0]-openmpi-img-parse
openmpi[0]-openmpi-img-parseopenmpi[1] 什么是openmpiopenmpi[2] 模块化组件架构openmpi[3] btl框架的self组件分析 总览Open MPI(Open 对称多处理器接口)是一个开源、高性能的 MPI(消息传递接口)实现。 核心概念解释: MPI (Message Passing Interface):MPI 不是一个编程语言,而是一个标准或规范。它定义了一套用于并行计算的函数库,允许不同的进程(通常运行在不同的处理器或计算节点上)通过显式地发送和接收消息来相互通信和协作。你可以把它想象成一套并行程序之间进行交流的“语言规则”。 并行计算:指将一个大的计算任务分解成许多小任务,这些小任务可以同时(并行地)在多个处理器上执行,以缩短完成整个任务所需的时间。 实现 (Implementation):MPI 本身只是一个标准,具体的编程库需要由不同的组织或公司去“实现”。Open MPI 就是众多 MPI 实现中的一个,其他著名的实现包括 MPICH、Intel MPI 等。 简而言之,Open MPI ...
openmpi[3] btl框架的self组件分析
openmpi[0]-openmpi-img-parseopenmpi[1] 什么是openmpiopenmpi[2] 模块化组件架构openmpi[3] btl框架的self组件分析 在openmpi[2]中,已经分析了openmpi的模块化架构。对于本章节来说,上一章提到的framework对应的是btl;component对应的就是self; mca的意思就是mca模块🤣 self组件的分层在opal/mca/btl/self目录中,可以看到如下文件: ❯ tree.├── btl_self.c├── btl_self_component.c├── btl_self_component.lo├── btl_self_frag.c├── btl_self_frag.h├── btl_self_frag.lo├── btl_self.h├── btl_self.lo├── libmca_btl_self.la├── Makefile├── Makefile.am├── Makefile.in└── owner.txt 除去不需要关心的编译相关...
openmpi[2] 模块化组件架构
openmpi[0]-openmpi-img-parseopenmpi[1] 什么是openmpiopenmpi[2] 模块化组件架构openmpi[3] btl框架的self组件分析 Open MPI 是一个高度可定制的系统;它可以通过配置文件、命令行参数和环境变量进行配置。Open MPI 配置系统的主要功能是通过模块化组件架构 (MCA) 实现的。 一些术语模块化组件架构 (MCA) 是 Open MPI 大部分功能的支柱。它由一系列项目 、 框架 、 组件和模块在运行时组装以创建 MPI 实现。 MCA 参数 (也称为 MCA 变量 )用于定制 Open MPI 在运行时的行为。 ProjectProject本质上是 Open MPI 代码库中最高抽象层的划分。 但这里的Project可不是说的项目,而是指的Open MPI 代码库中主要的、顶层的代码部分 FrameworkMCA 框架在运行时管理零个或多个组件,并针对特定任务(例如,提供 MPI 集合操作功能)。虽然每个 MCA 框架仅支持一种类型的组件,但它可以支持多个该类型的组件。 比如btl framework...
openmpi[1] 什么是openmpi
openmpi[0]-openmpi-img-parseopenmpi[1] 什么是openmpiopenmpi[2] 模块化组件架构openmpi[3] btl框架的self组件分析 什么是openmpi?MPI是一套通信标准,由MPI Forum创建并维护(MPI Forum是一个开放组织,由工业、学术界的高性能计算领域的专家组成).MPI是这样一种API: 可移植 高性能的IPC通信 MPI一般作为一个消息传递的中间件,上层应用程序可以通过调用MPI接口来执行消息传递。MPI定义了一系列与平台无关的、高度抽象的API接口,用于进程之间的消息传递(这两个进程之间可以在不同主机,但主机之间需要有一个通信的通道, 比如eth)举一个最简单的例子,进程X是发送进程,只需提供消息内容(例如一个双精度数组)以及另一个接收进程的标识(例如进程Y),同时接收进程Y只需提供发送进程的标识(例如进程X),消息就可以从X传递给Y。注意这个例子中,没有建立连接、没有字节流的转换、没有网络地址的交换,MPI将这些细节都抽象封装了起来,不仅仅是隐藏了复杂性,而且使应用程序能够兼容不同的平台、硬件...
sd与mmc刷写指南
EnvHost: Ubuntu 22.04 GParted 1.3.1 SD卡首先插入sd卡,打开GParted工具,没有可以下载一个: ❯ sudo apt install gpart 选择sd卡设备,我这里是sdb,因机器而异。 选择菜单栏的设备->创建分区表,选择msdos分区表。 创建完成之后,新建两个分区。 一个fat16的,用于放内核镜像和dtb文件以及uboot保存的env文件。 一个ext4用来存放根文件系统。 完成之后点击绿色小对勾,让更改生效。 之后便可以在/dev下看到对应的分区: ❯ ls /dev/sdb*/dev/sdb /dev/sdb1 /dev/sdb2 下载uboot镜像: ❯ sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8 存放内核镜像和设备树: ❯ sudo mount /dev/sdb1 /mnt❯ sudo cp arch/arm/boot/zImage /mnt❯ sudo cp arch/arm/boot/dts/allwinne...
VirtualBox错误
当我尝试启动虚拟机时遇到了如下错误: Kernel driver not installed (rc=-1908)The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing'/sbin/vboxconfig'as root.If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTA...
esp32初始化结构体问题
在c++使用espidf进行wifi连接时,发现如下代码可以连接: wifi_config_t wifi_config = { .sta = { .ssid = "HBDT-23F", .password = "hbishbis" }}; 但如下代码不可连接: wifi_config_t wifi_config;strcpy(wifi_config.sta.ssid, "HBDT-23F");strcpy(wifi_config.sta.password, "hbishbis"); 经过排查发现espidf对于连接阶段除了ssid和password还使用到了其他变量,所以应该清零结构体内存: wifi_config_t wifi_config{}; 一个很低级的问题…记录下来时刻警醒。
IMPORTANT: lost blog notes
What happened to my blog?Due to unforeseen circumstances, some of the blog posts have been lost. I have only found the web page format, but the index for the homepage has been lost. So there is the list: 2025 yearAprilDay 10 Vercel 部署 Twikoo 后评论收不到通知邮件问题解决方法 Day 12 Linux 的 initcall 机制 Day 13 ELF 文件 -0- section 和 segment 的区别 Linux I2C 驱动框架分析 -0 Linux I2C 驱动框架分析 -1 Day 20 Platform Device Driver -0 Platform Device Driver -1 Day 24 嵌入式 Linux 面经 - 随意随缘不完整版 Day 26 Linux 设备树 -0- 理解 dtb 格式 Linux...
hexo: Deploy github and lose CNAME
IssueI deployed my hexo blog to github pages, but I lost the custom domain in github pages. I tried to re-add the custom domain in the repository settings and I found this operation will add CNAME file under the repository root directory. SolutionSo I copy this file(or create a new one and only put custom domain into this file) to the source directory of my hexo blog, and then commit and push it to the repository. Everything works fine!
nvim plugin - MakrdownPreview: can't preview
Env:Nvim: v0.11.2 & Lazyvim Terminal: Kitty OS: Arch Linux How did I doCreate a .lua file in the following directory: ~/.config/nvim/lua/plugins/markdown-preview.lua Then add the following code: return { "iamcco/markdown-preview.nvim", cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, ft = { "markdown" }, build = function() vim.fn["mkdp#util#install"]() end,} Reopen nvim ...